韓俊文
摘要:在自動(dòng)化生產(chǎn)日益發(fā)展的時(shí)代,機(jī)器視覺(jué)與人工智領(lǐng)域能逐漸被人們所掌握,而高度自動(dòng)化生產(chǎn)設(shè)備更需要具備以上或更強(qiáng)大的功能。目前很多中小型激光焊接設(shè)備還停留在只能依靠人工編程進(jìn)行焊接的情形,在針對(duì)研發(fā)時(shí)期的小批量多種類(lèi)的生產(chǎn)這無(wú)形的加大了對(duì)于操作人員的要求,同時(shí)也無(wú)法提高生產(chǎn)效率和加工精度。根據(jù)以上情形,本系統(tǒng)基于OpenCV3實(shí)現(xiàn)了對(duì)SA06與6063型號(hào)的鋁合金焊縫的識(shí)別,并對(duì)其焊接軌跡進(jìn)行跟蹤與優(yōu)化。采用低成本的CMOS攝像頭進(jìn)行圖像采集,結(jié)合OpenCV3開(kāi)發(fā)了對(duì)焊縫進(jìn)行識(shí)別和軌跡規(guī)劃的應(yīng)用軟件。可應(yīng)用于機(jī)器手、焊接機(jī)等設(shè)備,簡(jiǎn)化人員操作與編程難度,提高生產(chǎn)效率。
【關(guān)鍵詞】自動(dòng)化生產(chǎn) 機(jī)器視覺(jué) OPENCV3CMOS攝像頭 焊縫識(shí)別 軌跡跟蹤
機(jī)器視覺(jué)在現(xiàn)代生產(chǎn)中起著舉足輕重的作用。通過(guò)對(duì)目標(biāo)進(jìn)行外形測(cè)量、運(yùn)動(dòng)跟蹤以及篩選等已經(jīng)逐漸的出現(xiàn)在了目前較為高端的生產(chǎn)設(shè)備中。目前,大型設(shè)備的機(jī)器視覺(jué)系統(tǒng)大部分還采用了工業(yè)CCD攝像機(jī)。該種類(lèi)的攝像機(jī)造價(jià)昂貴,再加上視覺(jué)軟件本身的開(kāi)發(fā)難度大,消耗的人力成本高,最終導(dǎo)致了很多設(shè)備生產(chǎn)企業(yè)在研發(fā)階段便舍棄了機(jī)器視覺(jué)的功能。而隨著時(shí)代的進(jìn)步,CMOS攝像機(jī)在分辨率、成像質(zhì)量方面已經(jīng)接近CCD攝像機(jī),并且CMOS攝像機(jī)的硬件成本遠(yuǎn)低于CCD攝像機(jī),在目前很多生產(chǎn)場(chǎng)景下也能夠達(dá)到其成像要求,經(jīng)過(guò)一系列算法的優(yōu)化后也能夠完成同樣的識(shí)別任務(wù)。
本系統(tǒng)即利用了現(xiàn)有的機(jī)器視覺(jué)庫(kù)( OpenCV3)與CMOS攝像機(jī)的組合對(duì)鋁合金材料的焊縫進(jìn)行了識(shí)別和軌跡規(guī)劃。從而便于后續(xù)結(jié)合工業(yè)機(jī)器手、工作臺(tái)等裝置實(shí)現(xiàn)對(duì)目標(biāo)工件的自動(dòng)焊接功能,簡(jiǎn)化人員的操作和編程難度,提高生產(chǎn)效率。文章即對(duì)本系統(tǒng)的構(gòu)成與軟件設(shè)計(jì)進(jìn)行了相應(yīng)的描述。
1 系統(tǒng)硬件
本系統(tǒng)采用的是ANDONSTAR高清攝像頭與一臺(tái)PC機(jī)。
攝像頭其主要特點(diǎn)有:可調(diào)放大倍率O~ 1000倍。理論成像近距離o-無(wú)限遠(yuǎn),具備輔助光源,分辨率640*480;免驅(qū)USB接口。較高的分辨率與放大倍數(shù)使得系統(tǒng)跟蹤精度完全可以達(dá)到一個(gè)較高水平,消除了視覺(jué)系統(tǒng)的精度瓶頸。
2 系統(tǒng)軟件
2.1 APP開(kāi)發(fā)環(huán)境
APP的開(kāi)發(fā)是基于Win7操作系統(tǒng),利用OpenCV 3機(jī)器視覺(jué)庫(kù),對(duì)圖像進(jìn)行顯示、預(yù)處理,識(shí)別等,最后實(shí)現(xiàn)焊縫定位與軌跡規(guī)劃。2.2開(kāi)發(fā)軟件及算法
OpenCV 3機(jī)器視覺(jué)庫(kù):OpenCV3是一個(gè)基于BSD許可(開(kāi)源)發(fā)行的跨平臺(tái)計(jì)算機(jī)視覺(jué)庫(kù),可以運(yùn)行在Linux、Windows、Android和Mac OS操作系統(tǒng)上。它輕量級(jí)而且高效..由一系列C函數(shù)和少量C_+類(lèi)構(gòu)成,同時(shí)提供了Python、Ruby. MATLAB等語(yǔ)言的接口它的主要接口也是C++語(yǔ)言,但是依然保留了大量的C語(yǔ)言接口。本系統(tǒng)的開(kāi)發(fā)即利用了針對(duì)性算法結(jié)合庫(kù)算法函數(shù)簡(jiǎn)化了開(kāi)發(fā)難度。
3 算法原理及實(shí)現(xiàn)
3.1 直方圖均衡化
使用OpenCV庫(kù)函數(shù):equalizeHist(inlmage,outlmage);原始圖像均衡化后的結(jié)果增強(qiáng)了背景與目標(biāo)之間的灰度差。
3.2 中值濾波
使用OpenCV庫(kù)函數(shù):medianBlur(inlmage,outlmage,median_Value);中值濾波后噪聲被削弱,突出了主目標(biāo)。
3.3 灰度濾波+二值化
實(shí)現(xiàn)原理:對(duì)每一個(gè)彩色像素進(jìn)行灰度分割處理。
Gray(灰度值)=R*0.299+G*0.587+B*0.114;快速計(jì)集Gray=( R*299+G*587+B*114+500) 11000;
Gray(ij)<設(shè)定灰度值(0—255)則將其像素值轉(zhuǎn)化為255(白)否則轉(zhuǎn)化為0(黑)。
當(dāng)然在實(shí)際情況中,可以采用更為先進(jìn)的動(dòng)態(tài)灰度處理算法如Otsu、分水嶺算法等。在面對(duì)環(huán)境更為復(fù)雜的情景下選擇一種魯棒性更好的算法可以提高系統(tǒng)性能,不過(guò)也相對(duì)需要更高的硬件配置。因此在衡量算法運(yùn)行的時(shí)間消耗與空間消耗上的盡量做到滿(mǎn)足需求就好,刻意追求性能反而會(huì)加重系統(tǒng)的復(fù)雜度與經(jīng)濟(jì)成本。
3.4 目標(biāo)篩選
使用OpenCV庫(kù)函數(shù):contourArea (allContours[i],false);通過(guò)該函數(shù)可以計(jì)算出所有閉合圖像的面積,然后再去掉較小斑塊留下主要的焊縫圖像。
3.5 開(kāi)運(yùn)算
使用OpenCV庫(kù)函數(shù):
腐 蝕:erode(inlmage,outlmage,getStructuringElement(MORPH_RECT, Size(3,3)));
膨脹:dilate(inlmage, outlmage, element);
開(kāi)運(yùn)算,就是先腐蝕后膨脹的過(guò)程
數(shù)學(xué)表達(dá)式:dst= open(inlmage,element)= dilate(erode(inlmage, element》;
開(kāi)運(yùn)算可以用來(lái)消除小物體,在纖細(xì)點(diǎn)處分離物體,并且在平滑較大物體的邊界的同時(shí)不明顯改變其面積。在焊縫識(shí)別的過(guò)程中會(huì)出現(xiàn)個(gè)別情況,因?yàn)楣饩€(xiàn)或者材料的磨損導(dǎo)致圖像出現(xiàn)空洞,對(duì)于后續(xù)的軌跡細(xì)化是不利因素。因此,加入開(kāi)運(yùn)算去填補(bǔ)目標(biāo)空洞,增強(qiáng)后續(xù)識(shí)別的準(zhǔn)確性。
3.6 細(xì)化處理
實(shí)現(xiàn)原理:Zhang-Suen細(xì)化算法通常是一個(gè)迭代算法,整個(gè)迭代過(guò)程分為兩步:StepOne:循環(huán)所有前景像素點(diǎn),對(duì)符合如下條件的像素點(diǎn)標(biāo)記為刪除:
(1)2<=N(p1)<=6
(2)SrP1、=1
(3) P2+ P4 * P6=0
(4) P4* P6 * P8=0
其中N(pl)表示跟Pl相鄰的8個(gè)像素點(diǎn)中,為前景像素點(diǎn)的個(gè)數(shù)S(Pl)表示從P2~P9~P2像素中出現(xiàn)0~l的累計(jì)次數(shù),其中0表示背景,1表示前景完整的Pl~P9的像素位置與舉例(如圖3):
其中N(pl)=4,S(Pl)=3,P2*P4*P6=0*0*0=0,P4*P6*P8=0*0*1=0,不符合條件,無(wú)需標(biāo)記為刪除。Step Two:跟Step One很類(lèi)似,條件1、2完全一致,只是條件3、4稍微不同,滿(mǎn)足如下條件的像素Pl則標(biāo)記為刪除,條件如下:
(1)2<=N(p1)<=6
(2)S(PI)=l
(3) P2 *P4* P8=O
(4) P2 * P6* P8=O
循環(huán)上述兩步驟,直到兩步中都沒(méi)有像素被標(biāo)記為刪除為止,輸出的結(jié)果即為二值圖像細(xì)化后的骨架。
3.7 優(yōu)化直線(xiàn)焊縫
使用OpenCV庫(kù)函數(shù):HoughLinesP(outlmage, lines,l, CV_PI/180, 55,15,120);
在圖像細(xì)化以后發(fā)現(xiàn)直線(xiàn)部分并不是非常的理想,存在一些曲折的情況,因此使用了概率霍夫變換去識(shí)別焊縫中的直線(xiàn)部分,然后將識(shí)別到的直線(xiàn)段代替原來(lái)的軌跡,這樣就能是焊接軌跡更加趨于理想結(jié)果。
3.8 創(chuàng)建ROI空間
在OpenCV的應(yīng)用中常常由于圖像的信息量或者算法過(guò)多導(dǎo)致整個(gè)算法流程運(yùn)行緩慢且消耗的硬件資源過(guò)于龐大,所以常常會(huì)使用ROI空間即抓取指定區(qū)域的圖像進(jìn)行分析,來(lái)縮減運(yùn)算量和減少資源占用。
3.9 識(shí)別結(jié)果
如圖4。
4 結(jié)論
通過(guò)以上算法流程,得到了最后的軌跡圖,進(jìn)一步對(duì)像素偏差與實(shí)際距離的偏差進(jìn)行標(biāo)定,然后達(dá)到控制、修正焊接執(zhí)行機(jī)構(gòu)位置的目的,最終可實(shí)現(xiàn)自動(dòng)跟蹤焊接的功能。本軌跡識(shí)別系統(tǒng)在算法上具備了良好的魯棒性,在硬件上結(jié)構(gòu)簡(jiǎn)單易于實(shí)現(xiàn)并且成本相對(duì)低廉,為機(jī)器視覺(jué)焊接系統(tǒng)創(chuàng)造了良好的基礎(chǔ)。
參考文獻(xiàn)
[1]毛星云.OpenCV3編程入門(mén)[M],北京:電子工業(yè)出版社,2015.
[2] Gary Bradski,Adrian Kaehler.《Learningopencv 3》 [M]. US:0' ReillyMedia2016.
[3]T,Y, Zhang, and,C,Y,Suen.A Fast Serial and Parallel Thinning Algorithm[M].USA:Communications of the ACM,1984.
[4] Opencv中文網(wǎng)站http://www.opencv.org.cn:提供基本的opencv參考、例程,還可以互動(dòng)提問(wèn)(論壇).
[5]維基百科(英文):http://en. wikipedia. org/wiki/Main_Page,海納百川,很多知識(shí)的整理.
[6]開(kāi)源項(xiàng)目網(wǎng)址:http://sourceforge.net/projects/opencvlibrary/_