李 執(zhí),閆 坤,傅 琪,劉 威
(桂林電子科技大學信息與通信學院,廣西桂林 541004)
在現(xiàn)代化生產(chǎn)中,常需要對工件進行尺寸測量,判斷產(chǎn)品是否符合生產(chǎn)標準。而對于多孔金屬工件,若采用人工測量方法,需要分別對圓孔、直線測量,效率和精度低。傳統(tǒng)生產(chǎn)主要采用人工測量方法,測量范圍有限,精度也受主觀因素影響,無法滿足大批量、高強度、高精度的測量要求。隨著計算機技術(shù)和圖像處理技術(shù)的發(fā)展,基于機器視覺的識別與檢測方法應用越來越廣泛。它可以實現(xiàn)對測量目標的非接觸、實時的自動檢測,具有效率高、精度高、客觀可重復、自動化等特點。
當前,機器視覺技術(shù)也廣泛運用于尺寸測量檢測。馬平等通過Canny算法與分段序貫最小二乘法擬合求交點的交點檢測方法,實現(xiàn)了對大尺寸工件的測量[1]。邢雪亮等針對航空鉚釘尺寸檢測進行了詳細研究,設計了基于閾值分割和分水嶺算法結(jié)合的尺寸測量算法,但檢測準確度較低[2]。劉斌等通過分層匹配算法實現(xiàn)目標定位,利用統(tǒng)計模板信息來精確定位邊緣并建立局部測量坐標系實現(xiàn)了對絲網(wǎng)印刷樣板尺寸的測量,但計算復雜度較高[3]。任永強等在研究柴油機缸套尺寸測量問題時,提出了基于RANSAC(隨機抽樣一致性)擬合缸套亞像素輪廓的內(nèi)外徑尺寸檢測方法[4]。李民等針對黑晶面板測量問題,提出了基于霍夫直線檢測及最小二乘法曲線擬合的測量方法,但精度較低[5]。邊緣點的檢測和擬合是提高尺寸測量精度的根本,因此,本文提出了基于測量卡尺工具的邊緣點檢測方法對邊緣進行精確定位,再通過基于Tukey權(quán)重函數(shù)的擬合方法,實現(xiàn)了對工件快速、非接觸、準確的測量。
本文以多孔金屬工件為研究目標,測量目標分別為圓半徑、直線長度、圓弧兩點長度。多孔金屬工件如圖1所示。算法流程分為4個步驟,如圖2所示。
圖2 系統(tǒng)流程圖
(1)圖像獲取。分別采集同一光源及背景、工件不同擺放角度的圖像。
(2)圖像預處理。首先對圖像灰度化處理,然后進行圖像平滑去除噪聲等干擾,通過圖像增強來突出工件的細節(jié),最后采用閾值分割方法將目標與背景分離。
(3)圖像分析。具體步驟為:通過特征提取初步定位工件整體輪廓,然后進行輪廓處理,將整個工件的輪廓分割成圓、直線、圓弧3部分,再結(jié)合卡尺工具法精確檢測定位工件不同區(qū)域的邊緣點,然后對邊緣點進行擬合得到圓、圓弧、直線輪廓。
(4)尺寸測量。通過前面的圖像處理后,分別對工件中圓孔直徑、直線長度及圓弧進行測量并輸出結(jié)果。
圖像預處理是圖像識別與分析的基礎[6-7],通過去除原圖像的無用信息(如背景、噪聲干擾等),從而加快檢測速度。采集的圖像包含色彩信息,為了去除顏色干擾,將彩色圖像經(jīng)過灰度化后轉(zhuǎn)化成灰度圖。原始工件圖像會受到噪聲污染,不利于后續(xù)的工件定位,因此需要進行濾波平滑處理,經(jīng)實驗驗證,選擇掩膜模板大小為3×3的均值濾波,可以達到較好的去除噪聲效果。為了增加前景與背景的差異,下一步是對圖像進行增強處理[8],增強細節(jié)信息,突出輪廓邊緣。 最后通過閾值分割算法將待測目標與背景分割出來。預處理結(jié)果如圖3所示。
(a)灰度化
(b)圖像增強處理
(c)閾值分割后圖像
通過閾值分割和特征提取后,可以初步獲得工件的整體輪廓,同時存在干擾輪廓,不利于后續(xù)的測量。因此,首先對輪廓進行平滑、分割、合并、篩選處理,確定測量目標。為了提高分割準確性,這里采用基于Ramer算法的圖像輪廓分割,其主要原理為利用近似思想,用多邊形去迭代逼近輪廓,將輪廓切分成連續(xù)的幾何圖形,近似原理如圖4所示。
圖4 Ramer算法近似原理
具體實現(xiàn)步驟如下:
(1)設定固定閾值參數(shù)D0;
(2)循環(huán)遍歷輪廓上的點,其總數(shù)記為M;
(3)選定一個參考點作為起始點;
(4)連接起始點與第M/2點作為逼近線段l0;
(5)計算輪廓線上的點與l0的距離,其最大距離記為D;
(6)若D>D0,則以最大距離點與線段l0起點和終點連接組成新的兩條逼近線段l1和l2替代l0。
(7)繼續(xù)迭代計算與輪廓點的距離,直至所有線段距離都滿足小于約束條件D0。
(8)若某一段輪廓上的點基本滿足直線方程y=kx+b,則被分割成直線;
(9)若不滿足直線分割,則依次比較輪廓內(nèi)所有相鄰的逼近線段,并用圓弧去近似;
(10)若圓弧近似的最大誤差小于逼近線段的平均誤差,則用圓弧去替代相鄰的逼近線段,輪廓被分割成圓?。?/p>
(11)若圓弧為閉合多邊形,則輪廓被分割為圓。
為了提高分割的準確性及效率,在Ramer算法原理基礎上,設定2個不同的閾值參數(shù)分2步逼近分割輪廓[9]。首先,以一個較大的固定閾值參數(shù)D1進行第一次輪廓逼近。然后再用一個較小的固定閾值參數(shù)D2進行第二次輪廓逼近。其中,D1、D2需滿足條件:D2 圖5 輪廓分割結(jié)果圖 輪廓分割完畢后,為了精確定位分割后輪廓,引入全局輪廓分割參數(shù)S對輪廓進行分類[10],S為Ramer算法分割返回值,根據(jù)S值的大小把輪廓分成圓(S=1)、圓弧(S=-1)、直線(S=0)。輪廓分割處理具體流程如圖6所示。 圖6 輪廓分割處理流程圖 輪廓分割初步定位了測量目標 ,全局輪廓分割參數(shù)S對輪廓進行了分類。為了提高測量精度及邊緣點定位的準確性,本文采用基于卡尺工具的邊緣點檢測算法[11],可以快速得到邊緣信息,這里卡尺工具主要用于直線和圓的檢測。其具體步驟如下: (1)獲取待測量目標的基本信息。圓:直徑R與中心坐標O(x,y);直線:2個端點坐標la(x1,y1)、 lb(x2,y2)。 (2)在直線或圓輪廓產(chǎn)生等距、等大的測量矩形來依次檢測定位邊緣點的位置。 (3)確定每個測量矩形所檢測到的最佳邊緣點。先通過高斯濾波器對邊緣進行平滑,如式(1)所示: (1) (4)再計算測量矩形內(nèi)像素點的梯度幅度值,由以下公式得到: (2) (3) 其中: (4) 式中:(u,v)為像素點位置;A(u,v)為邊緣點的梯度幅度值;θ(u,v)為邊緣點方向;f(u,v)為原像素點灰度值。 (5)最后根據(jù)非極大值抑制法所確定的像素點即為最佳邊緣點[12]。 卡尺工具檢測邊緣點的優(yōu)勢在于:通過產(chǎn)生大小、距離都一致的測量矩形來檢測垂直于矩形的梯度幅值最大的邊緣點,用設定好的測量矩形數(shù)目依次得到最優(yōu)邊緣點,最后擬合所有檢測到的邊緣點即可得到更加精確的邊緣輪廓,減少了遍歷的時間,提高了檢測效率。邊緣點的檢測由卡尺工具所使用的測量矩形大小所確定,測量精度由測量矩形數(shù)量所決定,數(shù)量越多檢測到的邊緣點越多,精度越高??ǔ吖ぞ哌吘夵c檢測結(jié)果如圖7所示。 (a)直線邊緣點檢測 (b)圓邊緣點檢測 卡尺工具精確檢測到了邊緣點,要獲得直線和圓輪廓,還需要對邊緣點進行擬合。常用的最小二乘法[13-14],其原理是使得樣本點與近似擬合曲線函數(shù)的偏差平方和最小。對于樣本數(shù)據(jù)中干擾較小時,最小二乘法可以達到較好的擬合效果。若數(shù)據(jù)樣本中存在較多、較大離群值時,該方法擬合出來的結(jié)果可能會出現(xiàn)較大的誤差。因此,本文提出了基于Tukey算法的擬合方法[15],減小或消除異常值(離群值)的影響,從而提高擬合精度與穩(wěn)定性。其原理是對于樣本數(shù)據(jù)點(文中的樣本點為邊緣點)設定不同的權(quán)重ωi。以直線為例,對于距離直線較近的點,權(quán)重ωi設為1,距離較大的點,權(quán)重設為ωi<<1,通過不斷的迭代計算所有樣本點的權(quán)重值,從而消除離群值。Tukey權(quán)重函數(shù)定義如下: (5) 式中:γ為點到直線的距離;η為削波因數(shù)。 由式(5)可知,距離較大的離群值被消除了,即當γ>η時。距離小于η的權(quán)重值在(0,1)區(qū)間隨距離的大小變化。權(quán)重函數(shù)中削波因數(shù)η表示距離,其值的確定若直接根據(jù)經(jīng)驗值設定,可能會產(chǎn)生較大的偏差,且穩(wěn)定性不強。因此,需要根據(jù)不同的情況擬合需求來設定,一種常用的削波因數(shù)η值的確定方式是根據(jù)一維高斯分布標準方差來自適應設定。假設所有待擬合的數(shù)據(jù)點為一個樣本集,每個數(shù)據(jù)點到擬合直線的距離是隨機分布的,標準方差是衡量數(shù)據(jù)偏離中心的一個指標,根據(jù)標準方差即可確定較大的離群值,為了得到樣本集中的離群值,不能直接使用標準方差來確定削波因數(shù)。為了增強魯棒性,根據(jù)下面推導求出魯棒的標準方差: 假設樣本集中求得的距離滿足高斯分布: (6) 標準方差為 (7) 式中:μδ為距離的期望值;削波因數(shù)一般為γδ倍數(shù),一般取η=2γδ。 基于Tukey權(quán)重函數(shù)的擬合可以消除離群值的影響,得到更精確的擬合結(jié)果。其具體實現(xiàn)步驟是:首次迭代設定權(quán)重ωi=1,再根據(jù)最小二乘法擬合得到標準直線,并計算所有邊緣點到直線的距離γi,若求出的距離較小,則權(quán)重設為1,否則設為0,通過不斷的迭代得到所有不同距離點的權(quán)重值,從而求出削波因數(shù),最后得到最終的擬合結(jié)果??ǔ吖ぞ叩玫搅司_邊緣點,再經(jīng)過引入權(quán)重函數(shù)的Tukey算法的擬合,可以得到較理想穩(wěn)定的邊緣輪廓。直線和圓的擬合結(jié)果如圖8所示。 (a)直線擬合結(jié)果 (b)圓擬合結(jié)果 通過上述流程將采集的圖像作為輸入,便可得到相應的測量結(jié)果。但得到測量尺寸長度的單位是像素,為了得到其真實尺寸,不能直接使用測量得到的像素尺寸,通過標定的方法,將像素坐標與常用的坐標進行轉(zhuǎn)換[16],以此得到每個像素對應的物理尺寸,最后通過換算計算得到實際長度。具體方法是:假定已知物體真實物理尺寸L(mm),其在同等拍攝條件下(相機型號、分辨率,拍攝距離都一致)測得的總像素為P(pixel),則可以得到轉(zhuǎn)換系數(shù)K: (8) 式中K為每個像素點的真實物理尺寸,mm/pixel。 通過轉(zhuǎn)換系數(shù)即可求出測量目標對應的真實物理尺寸。最后通過標定得到的轉(zhuǎn)化系數(shù)K為0.25 mm/pixel。 對于多孔金屬汞工件測量目標主要有圓半徑、直線長度以及圓弧,這里圓弧的測量主要為弧線兩點之間的距離。其測量方法為:首先求出圓弧的最小旋轉(zhuǎn)外接矩形,再根據(jù)旋轉(zhuǎn)外接矩形的角度、中心點坐標來計算得到旋轉(zhuǎn)矩形的長半軸,即為圓弧兩點之間的距離,如圖9所示。 圖9 圓弧兩點測量方式 在進行實驗驗證前,首先用相應標記將測量目標進行標號,其中Ai表示圓弧,Ci表示圓,Li表示直線,根據(jù)本文設計的算法得到測量結(jié)果,測量過程主要步驟如下: (1)通過相機采集金屬工件圖像。 (2)圖像經(jīng)過預處理、邊緣點檢測、擬合等算法處理得到各測量目標的像素尺寸。 (3)通過轉(zhuǎn)換系數(shù)K將像素尺寸轉(zhuǎn)換成實際物理尺寸。 測量結(jié)果如圖10所示。 圖10 測量結(jié)果圖 整個金屬工件中的圓形、直線、圓弧的測量實驗數(shù)據(jù)如表1所示。 表1 金屬工件測量結(jié)果 由表1實驗數(shù)據(jù)可知,發(fā)現(xiàn)直線L1的測量結(jié)果和實際尺寸相差較大,絕對誤差為0.205 mm,根據(jù)對圖像的分析,發(fā)現(xiàn)誤差來源于:在對輪廓L1進行卡尺工具的邊緣點檢測時,用直線擬合的方法代替了原曲線輪廓,與實際有偏差。除此之外,本算法測量精度整體比較高,絕對誤差控制在0.01 mm之內(nèi),如圖11所示,誤差主要來源于硬件機械平臺誤差及算法誤差。其中硬件誤差主要來源于相機,若拍攝物體非處在鏡頭中間及鏡頭的景深范圍內(nèi),遠離鏡頭部分可能會出現(xiàn)成像不清晰、邊緣模糊現(xiàn)象,從而出現(xiàn)定位不準確造成的誤差。同時鏡頭本身會有畸變,若不進行畸變校正,可能也會造成一定的誤差。算法誤差主要由2方面造成:第一是在進行邊緣點擬合時,得到的結(jié)果與實際物體輪廓存在一定偏差;第二是在進行系統(tǒng)標定時,可以選用精度更高的標定板,進行標定時,標定板擺放于鏡頭各位置,求出更精確的轉(zhuǎn)換系數(shù)K。 圖11 測量絕對誤差圖 由測量誤差折線圖可以發(fā)現(xiàn),測量存在一定的誤差,最大誤差的絕對值為0.205 mm,小于標定的一個像素0.25 mm的尺寸,滿足亞像素精度要求,且具有較高的穩(wěn)定性。 工件尺寸的測量是工業(yè)上常用的自動化生產(chǎn)技術(shù),為了提高測量精度及測量的穩(wěn)定性與魯棒性,本文提出了基于卡尺工具的邊緣點檢測,結(jié)合Tukey權(quán)重函數(shù)的曲線擬合方法的尺寸測量方法。通過Ramer算法的輪廓分割將測量目標整體輪廓自動分割成圓、圓弧和直線,全局輪廓分割參數(shù)S對輪廓進行分類,解決了輪廓定位問題,最后結(jié)合卡尺工具完成精確測量。實驗證明,本文方法的測量誤差在1個像素尺寸以內(nèi),誤差范圍在合理范圍內(nèi),精度可以滿足測量要求,具有較強的穩(wěn)定性與適應性。后續(xù)進一步研究驗證在復雜環(huán)境下算法的穩(wěn)定性及測量精度,使算法更具自適應性。2.3 基于卡尺工具的邊緣點檢測
2.4 基于Tukey算法的擬合
3 實驗分析
4 結(jié)束語