李雪梅,李 喆,崔菲菲,朱召陽,王 劍
(桂林電子科技大學(xué) 機電工程學(xué)院,桂林 541004)
在包裝工程領(lǐng)域,閥口袋被廣泛運用于各類粉狀或柔性物品的包裝[1]。傳統(tǒng)的閥口袋包裝環(huán)境粉塵及噪音極大,而操作模式主要是人工對閥口袋進(jìn)行位置定位,然后進(jìn)行包裝加工。這種方式的定位精度較低、生產(chǎn)效率低下,并且不利于人體的健康。當(dāng)前機器視覺發(fā)展較快,機器視覺主要是利用計算機和相機來模擬人的視覺功能,從工作環(huán)境當(dāng)中提取圖像信息,然后對其進(jìn)行分析和控制[2]。將機器視覺技術(shù)應(yīng)用到閥口袋的定位上,相當(dāng)于替代了工人的雙眼,使工人遠(yuǎn)離不良環(huán)境,同時對實現(xiàn)閥口袋自動化包裝,提高生產(chǎn)效率及精度有著極大的意義?;诖?本文提出一種基于機器視覺的閥口袋定位方法,通過對閥口袋進(jìn)行機器視覺處理,分析閥口袋輪廓特征。利用圖像幾何學(xué)處理,計算出閥口袋的特征點位置信息。經(jīng)過試驗,驗證本定位方法的準(zhǔn)確性,滿足閥口袋在自動化包裝生產(chǎn)中的定位精度要求。
在對閥口袋定位中,為了確定閥口袋在世界坐標(biāo)中的位置信息,必須對相機進(jìn)行標(biāo)定以及對鏡頭進(jìn)行畸變校正。采用OpenCV視覺庫對相機進(jìn)行標(biāo)定,OpenCV是一個基于BSD許可的跨平臺開源視覺函數(shù)庫,其包含豐富的計算機視覺處理算法和高級數(shù)學(xué)計算函數(shù)[3]。
小孔成像模型是視覺定位中常用的模型,是一種經(jīng)典的內(nèi)參線性標(biāo)定模型[4],目前在機器視覺中運用的相當(dāng)廣泛,如圖1所示。Oc是相機光軸中心點,z軸沿光軸方向。相機的實際平面上∏′2分布著感光元件,經(jīng)過光電信號轉(zhuǎn)換,得到景物的實際圖像,在∏′2平面內(nèi)的實像的方向進(jìn)行轉(zhuǎn)換,得到等效成像平面∏2。在光軸中心點Oc建立相機坐標(biāo)系(OcXcYcZc),在∏2等效平面中心點建立圖像坐標(biāo)系(Oxy),在左下角建立像素坐標(biāo)(Opuv),∏1在景物平面建立世界坐標(biāo)系(OwXwYwZw)。以視場范圍的平面為世界坐標(biāo)系,水平方向為X軸方向,豎直方向為Y軸方向,垂直平面的方向為Z軸方向。外參數(shù)模型描述的是世界坐標(biāo)在相機坐標(biāo)中的描述,四個坐標(biāo)之間滿足下列關(guān)系:
圖1 小孔成像模型
相機標(biāo)定的方法有大致分為兩種:一種是傳統(tǒng)標(biāo)定物的方法,另一種是自標(biāo)定方法。傳統(tǒng)標(biāo)定物的標(biāo)定方法需要借助標(biāo)定參照物,有張友正標(biāo)定法[5]和直線線性變化法[6]。而自標(biāo)定法是利用相機自身參數(shù)之間的約束關(guān)系,不需要外界任何參照物,但標(biāo)定精度差、魯棒性弱[7]。采用OpenCV視覺庫中的相機標(biāo)定算法,其方法與傳統(tǒng)標(biāo)定物的方法類似。鏡頭徑向畸變方程和切向畸變方程:
其中,δx與δy是非線性畸變值;k1、k2、k3為徑向畸變;p1、p2為切向畸變。
采用羅技C270i相機,在畸變校正過程中,需要拍攝擺放角度較大的標(biāo)定板,并且拍攝的圖片不宜過少(20張左右)如圖2所示,這樣可以使內(nèi)參和畸變系數(shù)的計算更加準(zhǔn)確。通過對九宮格進(jìn)行檢測,提取出角點位置。然后對角點進(jìn)行計算,得到了攝像機的內(nèi)參參數(shù)、畸變校正參數(shù)、旋轉(zhuǎn)矩陣及平移矩陣。輸入相機內(nèi)參參數(shù)和畸變參數(shù)得到校正圖像,內(nèi)參參數(shù)如表1所示,相機畸變校正參數(shù)如表2所示。
表2 相機畸變校正參數(shù)
圖2 標(biāo)定板圖
表1 相機內(nèi)參參數(shù)
其中,fx、fy為X、Y方向的尺度因子;Cx、Cy是圖像坐標(biāo)系原點在像素坐標(biāo)系下的坐標(biāo)。
旋轉(zhuǎn)矩陣:
平移矩陣:
由于原始圖像中包含大量無關(guān)元素,需要將一些不利因素去除。在機器視覺中,圖像是一個像素矩陣,圖像處理是對輸入的圖像進(jìn)行矩陣變換,從而改善圖像信息,明晰圖像特征。
由于閥口袋的面積較大,而相機的視場較小。因此在對閥口袋進(jìn)行處理之前需對圖像進(jìn)行分割。圖像分割是將圖像中所關(guān)注的區(qū)域和其他無關(guān)部分進(jìn)行分離并提取出來,使得圖像更易于分析[8]。根據(jù)閥口袋特征,選取閥口位置為ROI(region of interest)區(qū)域,沿閥口邊緣進(jìn)行垂直分割。利用在OpenCV中分割圖像函數(shù),分割原始圖像,縮小ROI區(qū)域,聚焦興趣區(qū)域,提高圖像處理速度。
相機拍攝的原始圖像為RGB圖像。RGB圖像是一種不均勻的顏色空間,每種顏色都由三原色構(gòu)成[9]。RGB圖像容易受到光強的影響,對于同一種顏色,在不同的光強情況下,很難測出較為精確的三個RGB數(shù)值來表示,因此不適用于圖像處理。而HSV(Hue,Saturation,Value)是根據(jù)顏色的直觀特性創(chuàng)建的一種顏色空間[10],能夠非常直觀地表達(dá)顏色的色調(diào)、飽和程度和明暗程度,方便根據(jù)顏色進(jìn)行分割。將圖像由RGB轉(zhuǎn)為HSV,如圖3(a)所示。為了增強圖像對比度,凸顯目標(biāo)區(qū)域,將圖像通道分離,對各通道進(jìn)行直方圖均衡化,然后合并通道,如圖3(b)所示。
圖3
閾值分割,即突出圖像中某個特定的顏色區(qū)域,對其從周圍環(huán)境中分離出目標(biāo),一般有兩種方式[11]:
1)突出閾值分割對象顏色,使其明顯與其他顏色區(qū)域分離。
2)隱匿無關(guān)的顏色,映射為黑色或者白色。
針對閥口袋的特點,選取封條邊作為閾值分割對象。在環(huán)形LED燈的照射下,進(jìn)行閾值分割。通過多次對比試驗,確定閥口袋封條邊最佳顏色閾值如表3所示閾值區(qū)間,如圖3(c)所示從轉(zhuǎn)化出的圖像可見閥口袋封條邊與其余部分有著明顯區(qū)分,顏色閾值方程:
表3 封條邊閾值表
圖像優(yōu)化包含圖像形態(tài)學(xué)和圖像濾波。圖像形態(tài)學(xué)是圖像處理中應(yīng)用最廣泛的技術(shù),由于閾值處理后會產(chǎn)生一些較小的噪點以及空洞,采用形態(tài)學(xué)變化處理,能夠消除多余噪點提高圖像的完整度,增強圖像效果。設(shè)置算子大?。?,5),常用的算子結(jié)構(gòu)分為MORPH_CROSS交叉型結(jié)構(gòu)元、MORPH_ELLIPSE橢圓結(jié)構(gòu)元以及MORPH_RECT矩形結(jié)構(gòu)元。相對于交叉型結(jié)構(gòu)元與橢圓結(jié)構(gòu)元,矩形結(jié)構(gòu)元由于運行次數(shù)少且矩形排列更加適用于規(guī)則形狀,即選擇5×5的矩形結(jié)構(gòu)元算子進(jìn)行圖像形態(tài)學(xué)操作。在形態(tài)學(xué)處理過程中使用開運算MORPH_OPEN與閉運算MORPH_CLOSE對圖形進(jìn)行混合處理。開運算能夠在不改變圖像原有面積大小的基礎(chǔ)上進(jìn)行平滑邊界,消除亮度較高的細(xì)小空洞區(qū)域。閉運算能夠消除背景中的暗點噪聲,填充纖細(xì)空洞區(qū)域,連接相鄰的圖塊。將開閉運算混合運算能夠?qū)崿F(xiàn)同時消除明、暗區(qū)域,連接相鄰的相似圖塊,在此過程中不會發(fā)生圖像的位移變化。
圖像濾波的作用是保留圖像特征,在圖像中一般含有各類噪聲,圖像噪聲會嚴(yán)重影響圖像的質(zhì)量。濾波處理通過對圖像的噪聲進(jìn)行抑制,從而提高后續(xù)圖像處理和邊緣檢測的有效性[12]。常見的濾波算法有中值濾波,高斯濾波,均值濾波,雙邊濾波等,分別有不同的濾波效果和適用場合。根據(jù)實際效果對比,雙邊濾波[13]、均值濾波對于圖像的噪聲進(jìn)行簡易的處理,并不能保留圖像的細(xì)節(jié)信息,中值濾波和高斯濾波在處理時保留了圖像邊緣的細(xì)節(jié),對噪聲處理也更加有效。而高斯濾波對邊緣信息保留的更加細(xì)致[14],有利于邊緣檢測,所以選擇高斯濾波進(jìn)行圖像濾波,如圖4(a)所示。高斯濾波是一種線性平滑濾波,通過對其他像素值進(jìn)行加權(quán)平均計算得到[15]。通過實際效果對比設(shè)定內(nèi)核Size大小(3,3),高斯濾波計算方程:
其中,σ為高斯分布標(biāo)準(zhǔn)差,代表數(shù)據(jù)離散程度。
經(jīng)過濾波后的到的圖像基本可以清晰地獲取封邊條的圖像信息。但在實際試驗時,為了避免環(huán)境光照變化,會引起封邊條表面高光反光的現(xiàn)象,或者是封邊條凹凸不平造成表面出現(xiàn)大塊暗黑區(qū)域,從而影響后續(xù)處理。因此為了減小干擾,還需要對圖像進(jìn)行邊緣檢測,提取輪廓信息,以滿足后續(xù)定位要求。
邊緣為圖像中灰度發(fā)生急劇變化的區(qū)域邊界,邊緣點能夠給出目標(biāo)輪廓的位置[16]。利用OpenCV視覺函數(shù)庫對濾波后圖像進(jìn)行檢索并繪制輪廓,如圖4(b)所示。
圖4
根據(jù)閥口袋封條邊的圖像信息,采用角點檢測對其進(jìn)行特征點提取。在視覺定位中角點檢測被廣泛運用,角點通常被定義為兩條邊緣的交點[17]。角點檢測分為Shi Tomasi算法和Harris[18]算法。采用Shi Tomasi角點檢測,相較于Harris角點檢測,Shi Tomasi算法通過尋找最小特征值的最大值來尋找其中特征明顯的角點,準(zhǔn)確率更高。如圖4(c)所示。
分析閥口袋輪廓特征選取相應(yīng)角點為基準(zhǔn)點,為了獲取更為精細(xì)的角點坐標(biāo),提高精確度,對角點坐標(biāo)進(jìn)一步精確化處理。設(shè)定鄰域大小,提取到相匹配的三個角點坐標(biāo)點像素坐標(biāo)。通過相機標(biāo)定參數(shù)轉(zhuǎn)換,即可以得到相應(yīng)點的世界坐標(biāo)。
針對閥口袋包裝加工的要求,需確定特征點坐標(biāo)。利用圖像幾何學(xué)中三點確定一個圓,即可通過平面上三點坐標(biāo)構(gòu)建一個圓并確定該圓圓心,設(shè)定該圓心(X,Y)就為閥口袋的特征位置點。根據(jù)
經(jīng)過相應(yīng)的簡化:
由于閥口袋放置在平面上,Z軸方向保持不變。將水平方向定為基準(zhǔn)軸,基準(zhǔn)斜率K為0,利用閥口袋前端直線上提取的兩角點坐標(biāo)(x1,y1)、(x2,y2)可以確定閥口袋的位姿狀態(tài),斜率方程為:
基于Visual Studio 2019平臺、OpenCV3.4.7視覺函數(shù)庫,對定位程序進(jìn)行編寫調(diào)試,連續(xù)運行該程序15次,記錄特征點坐標(biāo)值及位姿斜率的結(jié)果。如表4所示,根據(jù)準(zhǔn)則(拉依達(dá)準(zhǔn)則)來判定重復(fù)定位精度測試結(jié)果好壞。X、Y兩個方向的重復(fù)定位精度分別為0.3675mm、2.6717mm,斜率K的重復(fù)定位精度為0.0038。其中Y方向相對于X方向的定位精度偏低,主要是由于在圖像分割時邊緣會鋸齒化,會對靠近閥口處的角點的Y軸坐標(biāo)產(chǎn)生一些影響。根據(jù)閥口袋的尺寸公差數(shù)值(2mm~4mm)以及后續(xù)自動化包裝的定位要求,該定位方法能夠滿足精度要求。
表4 特征點位置坐標(biāo)及位姿重復(fù)精度測試
文中詳細(xì)闡述了基于機器視覺的閥口袋定位方法,通過相機標(biāo)定、圖像處理、圖像幾何學(xué)等操作,實現(xiàn)了提取到閥口袋特征位置坐標(biāo)及位姿狀態(tài)。目前,國內(nèi)閥口袋包裝加工的自動化定位設(shè)備落后,工作環(huán)境惡劣。該定位方法能夠滿足當(dāng)前的精度要求,有效的解決了生產(chǎn)環(huán)境對人體的危害,對后續(xù)實現(xiàn)閥口袋自動化包裝具有重要的研究意義。