国产自拍在线_久久久99精品免费观看_日日夜夜大尺度网站7799_中日韩羞羞电影_永久免费观看影视剧的电视软件_伊人日日夜夜天天日日夜夜_日韩在线播放泄欲_天天操伊人_曰韩永久免费72页_婷婷天天干

  1. 首頁(yè)
  2. 視覺(jué)知識(shí)
  3. 技術(shù)動(dòng)態(tài)

深圳市思普泰克科技有限公司

地址:深圳市寶安區(qū)沙井芙蓉工業(yè)區(qū)崗仔工業(yè)園第11棟

總部客服熱線:13077808017

關(guān)于我們

聯(lián)系我們

技術(shù)動(dòng)態(tài)

圖像處理系統(tǒng)在自動(dòng)化設(shè)備中用作位置反饋的一種方法

發(fā)布時(shí)間:2018-12-11 02:03:18作者:


  

  圖像處理系統(tǒng)在自動(dòng)化設(shè)備中用作位置反饋的一種方法

  1. 在自動(dòng)化設(shè)備中應(yīng)用圖像處理系統(tǒng)的優(yōu)點(diǎn)

  自動(dòng)化設(shè)備為了獲得準(zhǔn)確的位置精度,通常采用兩種方法,一種是采用滾珠絲桿加交流伺服電機(jī)組成半閉環(huán)位置控制系統(tǒng);另一種是采用位置傳感器,如:光柵尺、磁柵尺,以及高級(jí)控制器組成閉環(huán)控制系統(tǒng)。這兩種方法技術(shù)成熟,但成本較高。

  我們采用國(guó)產(chǎn)圖像卡、鏡頭、臺(tái)灣產(chǎn)攝像頭和PC機(jī),再加上滑動(dòng)絲桿、步進(jìn)電機(jī)和多軸運(yùn)動(dòng)控制器等元器件構(gòu)成位置反饋控制系統(tǒng)。PC機(jī)通過(guò)處理圖像信息,檢測(cè)工件平面位置,控制電機(jī)運(yùn)動(dòng),補(bǔ)償系統(tǒng)誤差。

  采用這種結(jié)構(gòu)我們成功的開(kāi)發(fā)出多種自動(dòng)化設(shè)備,如:自動(dòng)點(diǎn)膠機(jī)、自動(dòng)超聲波焊機(jī)等。其特點(diǎn)是:設(shè)備的精度高、成本低;由于有圖像顯示,調(diào)節(jié)點(diǎn)膠針頭、超聲波焊針和工裝的初始位置十分方便,對(duì)工裝的一致性要求也不高。

  2. 系統(tǒng)結(jié)構(gòu)與定位方法

  下面以自動(dòng)點(diǎn)膠機(jī)為例介紹該系統(tǒng)結(jié)構(gòu)。圖1為該設(shè)備的外形,圖2為該設(shè)備的系統(tǒng)框圖。

  圖1 自動(dòng)點(diǎn)膠機(jī)外形

  PC機(jī)通過(guò)攝像頭、圖像卡采集工件的平面圖像,經(jīng)過(guò)圖像處理后,得到工件的當(dāng)前位置;PC機(jī)通過(guò)RS-232串行端口,將運(yùn)動(dòng)指令發(fā)送給多軸運(yùn)動(dòng)控制器,控制器控制X-Y平臺(tái)、Z軸平臺(tái)運(yùn)動(dòng)以及點(diǎn)膠閥的開(kāi)關(guān)。[1]

  攝像頭固定在機(jī)架上不動(dòng),其放大倍數(shù)也是固定的,所以,圖像上的像素點(diǎn)對(duì)應(yīng)工件上的長(zhǎng)度是一定的,計(jì)算像素點(diǎn)個(gè)數(shù),就能推算出距離及位置。

  在正常工作之前,要將圖像系統(tǒng)和X-Y平臺(tái)位置、點(diǎn)膠針頭建立起對(duì)應(yīng)關(guān)系。如圖3所示,將X-Y平臺(tái)從其原點(diǎn)開(kāi)始移動(dòng),使工裝上的第一個(gè)工件出現(xiàn)在攝像頭拍攝的畫(huà)面中央, 系統(tǒng)軟件記錄下X-Y平臺(tái)的初始位置(X0,Y0);調(diào)整固定在Z軸平臺(tái)上的點(diǎn)膠針頭的位置,使其落在圖像畫(huà)面的針頭定位框內(nèi),從而針頭和攝像頭的相對(duì)位置就確定了。

  正常工作時(shí),系統(tǒng)軟件控制X-Y平臺(tái)從原點(diǎn)運(yùn)動(dòng)到第1個(gè)工件位置;抓取工件圖像,通過(guò)模板匹配技術(shù),獲取工件當(dāng)前位置;和理想位置比較后,調(diào)整X-Y平臺(tái)位置,消除誤差,并運(yùn)動(dòng)到點(diǎn)膠啟始位; Z軸下降到點(diǎn)膠高度,然后打開(kāi)點(diǎn)膠閥開(kāi)始點(diǎn)膠; X-Y平臺(tái)按點(diǎn)膠軌跡運(yùn)動(dòng);關(guān)點(diǎn)膠閥,Z軸抬起,完成一個(gè)工件的點(diǎn)膠過(guò)程。

  然后,X平臺(tái)平移距離d,第2個(gè)工件進(jìn)入圖像畫(huà)面,取圖像、調(diào)整位置、點(diǎn)膠;如此重復(fù),完成5個(gè)工件的點(diǎn)膠過(guò)程。

  3. 模板匹配算法的改進(jìn)

  模板就是一幅已知的小圖像。模板匹配就是在一幅大圖像中搜尋目標(biāo),已知該圖中有要找的目標(biāo),且該目標(biāo)同模板有相同的尺寸、方向和圖像,通過(guò)一定的算法可以在圖中找到目標(biāo),確定其坐標(biāo)位置。

  如圖4所示,模板T( m ′ n個(gè)像素)疊放在被搜索圖S( W ′ H個(gè)像素)上平移,模板覆蓋被搜索圖的那塊區(qū)域叫子圖Sij。I,j為子圖左上角在被搜索圖S上的坐標(biāo)。搜索范圍是:

  一種算法是衡量T和Sij的誤差,其公式為:

  E( i, j )為最小值處即為匹配目標(biāo)。為提高計(jì)算速度,取一個(gè)誤差閾值E0,當(dāng)E( i, j )> E0時(shí)就停止該點(diǎn)的計(jì)算,繼續(xù)下一點(diǎn)計(jì)算。

  為了提高模板匹配處理速度,設(shè)計(jì)了二次匹配誤差算法,即:

  第一次匹配是粗略匹配。取模板的隔行隔列數(shù)據(jù),即四分之一的模板數(shù)據(jù),在被搜索圖上進(jìn)行隔行隔列掃描匹配,即在原圖的四之分一的數(shù)據(jù)內(nèi)匹配。由于數(shù)據(jù)量大幅度減少,匹配速度顯著提高。

  為了合理的給出一個(gè)誤差閾值E0,設(shè)計(jì)了一個(gè)確定誤差閾值E0的準(zhǔn)則:

  E0 = e0 * (m+1)/2 * (n+1)/2

  式中:e0為各點(diǎn)平均的最大誤差,一般取40~50即可;

  m,n為模板的長(zhǎng)和寬。

  第二次匹配是精確匹配。在第一次誤差最小點(diǎn)( imin,jmin )的鄰域內(nèi),即在對(duì)角點(diǎn)為( imin-1, jmin-1), ( imin+1, jmin+1)的矩形內(nèi),進(jìn)行搜索匹配,得到最后結(jié)果。

  表1是無(wú)閾值誤差法、有閾值誤差法、二次匹配誤差法這三種模板匹配算法對(duì)兩幅圖像進(jìn)行模板匹配的結(jié)果比較:

  結(jié)果表明:被搜索圖越大,匹配速度越慢;模板越小,匹配速度越快。誤差法閾值的大小對(duì)匹配速度影響大,和模板的尺寸有關(guān)。改進(jìn)后的二次匹配誤差法的速度大幅提高。

  圖5是自動(dòng)點(diǎn)膠機(jī)的PC機(jī)界面。為了提高匹配速度,被搜索圖由藍(lán)色框決定,大小可調(diào);黃色框?yàn)槟0?,及工件的右下?紅色框?yàn)楣ぜ庋?。從圖中可看出,工件偏向右側(cè),說(shuō)明位置有誤差,但圖像系統(tǒng)通過(guò)辨識(shí)工件的右下角,確定了工件的準(zhǔn)確位置。點(diǎn)膠將在紅色框內(nèi)進(jìn)行。

  4.二次匹配誤差法的主要代碼

  #define AvEthreshold 40 // 各點(diǎn)平均誤差

  int Ethreshold; // 誤差閾值

  //計(jì)算誤差閾值

  Ethreshold=AvEthreshold*((lTemplateHeight+1)/2)*((lTemplateWidth+1)/2);

  // 第一次粗略匹配,找出誤差最小位置(nMaxHeight,nMaxWidth)

  // 僅使用模板中隔行隔列的數(shù)據(jù),在被搜索圖中隔行隔列匹配

  nMinError = 99999999;

  for (i = 0; i < lHeight - lTemplateHeight +1; i=i+2)

  {

  for(j = 0; j < lWidth - lTemplateWidth + 1; j=j+2)

  {

  nError = 0;

  for (m = 0; m < lTemplateHeight; m=m+2)

  {

  for(n = 0; n < lTemplateWidth; n=n+2)

  {

  // 指向被搜索圖像倒數(shù)第i+m行,第j+n個(gè)象素的指針

  lpSrc = (char *)lpDIBBits + lLineBytes * (i+m) + (j+n);

  // 指向模板圖像倒數(shù)第m行,第n個(gè)象素的指針

  lpTemplateSrc = (char *)lpTemplateDIBBits + lTemplateLineBytes * m + n;

  pixel = (unsigned char)*lpSrc;

  templatepixel = (unsigned char)*lpTemplateSrc;

  nDelta=(int)pixel-templatepixel;

  if (nDelta<0) // 做絕對(duì)值運(yùn)算

  {nError = nError-nDelta;}

  else{nError = nError+nDelta;}

  }

  if (nError>(Ethreshold)) break; // 誤差大于閾值,進(jìn)入下一點(diǎn)計(jì)算

  }

  if (nError < nMinError) //與最小誤差比較

  {

  nMinError = nError; // 記錄最小誤差及其坐標(biāo)

  nMaxWidth = j;

  nMaxHeight = i;

  }

  }

  }


回到頂部