日韩在线免费视频观看|日韩不卡一区二区三区线观看|日韩不卡免费视频|日韩高清在线观看|日韩视频免费观看|日韩中文字幕永久免费|日韩高清在线观看|日韩高清免费在线观看

  1. Home

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

地址:深圳市寶安(an)區沙井芙蓉工(gong)業區岗仔工業園第10栋9楼

总部客服熱線:19926636925

视觉知识

联系我们

圖像處理系統在自動化設備中用作位置反饋的一種方法

Release time:2018-12-11 02:03:18Author:


  

  圖像處理系統(tong)在自動化設備中用作位(wei)置反饋的一種方法

  1. 在自動化設備中應用圖像(xiang)處理系(xi)統的優點

  自動化設(she)備為了获得準確的位(wei)置精度,通常采用兩種方法(fa),一種是采用滚珠丝杆加(jia)交流伺服電機組成半闭環位置(zhi)控製系統;另(ling)一種(zhong)是采用位置傳感器,如:光栅尺、磁栅(zha)尺,以及高級控製器組成(cheng)闭環(huan)控製系統。这兩種方法(fa)技(ji)術成熟,但成本较(jiao)高。

  我們采(cai)用國產圖像卡、镜头、臺(tai)湾產(chan)摄像头和PC機,再加上滑(hua)動丝杆、步進電機和多轴運動控製器等(deng)元器件構(gou)成位置反饋控製系統。PC機通過處理圖像信息,檢測工件平面位置,控製電機運動,补(bu)偿系統误差(cha)。

  采用这種結構我們成功(gong)的開发(fa)出多種自動化設備,如:自動點胶機、自(zi)動超聲波焊機等。其特點是:設備的精度高、成本低;由於有圖像顯示,調節(jie)點胶针(zhen)头、超聲波焊针和工裝的初始(shi)位置十分方(fang)便,對(dui)工裝的一致性要求也不高。

  2. 系統結構與定位方法

  下面以自動點胶機為例介紹该(gai)系統結(jie)構。圖1為该(gai)設備(bei)的外形,圖2為该設備的系統框圖。

  圖1 自動點胶機外形

  PC機通過摄像头、圖像卡(ka)采集工件的平面圖像,經(jing)過圖像處理后,得(de)到工件的当前(qian)位置;PC機通(tong)過RS-232串行(xing)端(duan)口,將運動指令发送給多轴運(yun)動控製器,控(kong)製器控製(zhi)X-Y平臺、Z轴平臺運動以及點胶阀的開關。[1]

  摄像(xiang)头固定在(zai)機架上不動,其放(fang)大倍数也是固定的(de),所以(yi),圖像上(shang)的像(xiang)素點對應工件上的长度是一定的,計算像素點個数,就能推(tui)算(suan)出距离及位置。

  在正常工作之前,要將圖像系統和X-Y平臺位置、點胶针头建立起對應關系。如(ru)圖3所示,將X-Y平臺(tai)从其原點開(kai)始移動,使工裝上的第一個工件出現在摄(she)像头拍摄的画面中(zhong)央, 系統软件記錄(lu)下(xia)X-Y平臺的初始位置(zhi)(X0,Y0);調整固定在Z轴平臺上的點胶针头(tou)的位置,使(shi)其(qi)落在圖像画面的针头定位框内,从而针头和摄像头的相對位置(zhi)就確定了。

  正(zheng)常工作時,系統软(ruan)件控(kong)製X-Y平臺从原點運動到第1個工件位置;抓取工件圖像(xiang),通(tong)過模板匹配(pei)技術,获(huo)取工件当前位(wei)置;和理想位(wei)置比较后,調整X-Y平臺位置,消除误(wu)差(cha),並運動到點(dian)胶启始(shi)位; Z轴(zhou)下降(jiang)到點胶高度,然后打開點胶阀(fa)開始點(dian)胶; X-Y平臺按點胶轨迹運動(dong);關點胶阀(fa),Z轴抬起,完成一(yi)個(ge)工件的點胶過程。

  然后,X平臺(tai)平移距离d,第2個工件進(jin)入圖像画面,取(qu)圖像、調整位(wei)置(zhi)、點胶;如(ru)此重复,完成5個工件的(de)點(dian)胶過程。

  3. 模板匹配算法的改進

  模板就(jiu)是(shi)一幅已知的小圖像。模板匹配就(jiu)是在一幅(fu)大圖像中搜尋目標,已知该圖中有要找的目(mu)標,且该目標同模板有相同的尺寸、方(fang)向和圖像(xiang),通(tong)過一定的算法可以(yi)在圖中找到目標,確定其(qi)坐標位置。

  如(ru)圖4所示,模板T( m ′ n個像素)叠放在被搜索圖S( W ′ H個像素)上平移,模(mo)板覆盖被搜索圖的那块(kuai)區域叫子圖Sij。I,j為子圖左上角在被搜索圖S上的坐標。搜索範围是:

  一種算(suan)法是衡(heng)量T和Sij的误差(cha),其公式為:

  E( i, j )為最小值處(chu)即為匹配目(mu)標。為提高計算速度,取一個误差阈值E0,当E( i, j )> E0時就停止该(gai)點的計算,繼續下一點(dian)計算(suan)。

  為了提(ti)高模板匹配處理速度(du),設計了二(er)次匹配误差算法,即:

  第一次匹配是粗略(lve)匹(pi)配。取模板的(de)隔(ge)行隔列数據,即(ji)四分之一的(de)模板数據,在被(bei)搜索圖上進行隔行隔列掃(sao)描匹配,即在(zai)原圖的(de)四之分一的数據内匹配。由(you)於数據量大幅度减少,匹配速度顯(xian)著提高。

  為了合理的給(gei)出一個误差阈(yu)值E0,設計了(le)一個確定误差阈值(zhi)E0的準則:

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

  式中:e0為各點平均的最大误差,一般取40~50即可;

  m,n為模板的长和宽。

  第二次匹配是精確(que)匹配。在第一次误(wu)差最小點(dian)( imin,jmin )的鄰(lin)域(yu)内,即在對角(jiao)點為( imin-1, jmin-1), ( imin+1, jmin+1)的矩形内(nei),進(jin)行搜索匹配,得(de)到最后結果(guo)。

  表1是无阈值误(wu)差法、有阈(yu)值误差法、二次匹配误(wu)差(cha)法这三種模板匹配算法對兩幅圖像進行模板匹配的結果比较:

  結果表明:被搜索(suo)圖越大,匹配速度越慢;模(mo)板越小,匹配速度越快(kuai)。误差法阈值的大小對匹(pi)配速度影響大(da),和模板的尺(chi)寸有關。改進后的(de)二次匹配误差(cha)法的速度大幅提高。

  圖5是(shi)自動點胶機(ji)的PC機(ji)界面。為了提高匹配速度(du),被搜索圖由藍色框決定(ding),大小(xiao)可調;黄色框為模板(ban),及工件的(de)右下(xia)角;紅色框為工件(jian)外(wai)沿。从圖中可看出,工件(jian)偏向右(you)侧,說明位置有误(wu)差,但圖像系(xi)統通(tong)過辨识工件的右下角,確定了(le)工件的(de)準確位置。點胶將在紅(hong)色框(kuang)内進行。

  4.二次匹(pi)配误差法的(de)主要代碼

  #define AvEthreshold 40 // 各點平均误差

  int Ethreshold; // 误差阈值

  //計算误差阈值

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

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

  // 仅(jin)使用模板中隔行隔(ge)列的数據,在被(bei)搜索圖(tu)中隔行隔列匹配

  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)

  {

  // 指(zhi)向被搜(sou)索圖像倒数第i+m行,第j+n個象素的(de)指针

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

  // 指向模板(ban)圖像倒数第m行,第n個象素的(de)指针

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

  pixel = (unsigned char)*lpSrc;

  templatepixel = (unsigned char)*lpTemplateSrc;

  nDelta=(int)pixel-templatepixel;

  if (nDelta<0) // 做絕對值運算

  {nError = nError-nDelta;}

  else{nError = nError+nDelta;}

  }

  if (nError>(Ethreshold)) break; // 误差大於阈值,進入下一(yi)點計算

  }

  if (nError < nMinError) //與最小误差比较

  {

  nMinError = nError; // 記錄(lu)最小误差及其坐標

  nMaxWidth = j;

  nMaxHeight = i;

  }

  }

  }