李百明
(黎明職業(yè)大學(xué) 智能制造工程學(xué)院,福建 泉州 362000)
角碼常被用于裝飾工程和家具裝配,合理使用角碼能讓家具裝配更加立體,而角碼孔徑是否合乎標(biāo)準(zhǔn)直接影響裝配的穩(wěn)定性與可靠性。目前,對(duì)角碼孔徑的檢測(cè),絕大多數(shù)生產(chǎn)企業(yè)仍采用游標(biāo)卡尺和內(nèi)徑千分尺相結(jié)合的傳統(tǒng)人工檢測(cè)方法進(jìn)行,具有檢測(cè)工作量大、速度慢,易受人為因素影響等缺點(diǎn)[1],無(wú)法滿(mǎn)足大批量、高強(qiáng)度、實(shí)時(shí)在線(xiàn)檢測(cè)需求[2]。
近年來(lái),機(jī)器視覺(jué)技術(shù)得到了快速發(fā)展,因其具有檢測(cè)速度快、非接觸無(wú)損傷、檢測(cè)成本低、準(zhǔn)確度高等優(yōu)點(diǎn)被廣泛用于工業(yè)測(cè)量領(lǐng)域[3,4]。謝俊[5]等利用Canny邊緣檢測(cè)算子提出了一種對(duì)孔類(lèi)工件在線(xiàn)檢測(cè)方法,該方法的精度為像素級(jí)。陳怡然[6]等將形態(tài)學(xué)和Canny檢測(cè)算子相結(jié)合提出了一種圓形工件尺寸參數(shù)測(cè)量方法,實(shí)現(xiàn)了對(duì)圓形工件的非接觸測(cè)量,但精度仍為像素級(jí)。李執(zhí)[2]等將Blob分析、分割與卡尺技術(shù)相結(jié)合提出了一種金屬工件尺寸測(cè)量方法,該方法的精度可達(dá)亞像素級(jí)別,不足之處是Blob分析受照度變化的影響較大。針對(duì)角碼孔徑檢測(cè)的現(xiàn)狀,結(jié)合現(xiàn)有的機(jī)器視覺(jué)檢測(cè)技術(shù),本文將Canny檢測(cè)算子與卡尺工具相結(jié)合,提出了一種基于機(jī)器視覺(jué)的角碼孔徑測(cè)量方法,實(shí)驗(yàn)表明該方法測(cè)量精度能夠滿(mǎn)足要求,數(shù)據(jù)重復(fù)性好,測(cè)量速度快。
基于機(jī)器視覺(jué)的角碼孔徑測(cè)量系統(tǒng)由工業(yè)相機(jī)、工業(yè)鏡頭、LED背光源、載物臺(tái)、支架和計(jì)算機(jī)等部分組成,其孔徑測(cè)量流程如圖1所示。將采集到的彩色圖像轉(zhuǎn)成單通道的灰度圖像,以提高處理速度;通過(guò)二值化快速定位角碼所在區(qū)域;利用仿射變換將傾斜的角碼轉(zhuǎn)正,便于孔徑尺寸統(tǒng)計(jì);采用Canny邊緣檢測(cè)算子獲取角碼孔徑的邊緣輪廓點(diǎn),實(shí)現(xiàn)輪廓點(diǎn)的粗定位;利用卡尺工具進(jìn)一步獲取孔徑的亞像素邊緣點(diǎn);利用最小二乘法將邊緣點(diǎn)擬合成圓形輪廓;根據(jù)擬合的圓形輪廓計(jì)算角碼的孔徑尺寸。

圖1 角碼孔徑測(cè)量流程
本系統(tǒng)所用的相機(jī)是彩色相機(jī),拍攝的圖片是每個(gè)像素點(diǎn)用3個(gè)值來(lái)表示的彩色圖像,直接對(duì)其進(jìn)行分析運(yùn)算量非常大。對(duì)角碼的孔徑尺寸進(jìn)行測(cè)量的關(guān)鍵是準(zhǔn)確提取其邊緣信息,而邊緣信息只和光強(qiáng)相關(guān),因此,為降低運(yùn)算量需要將三通道的彩色圖像轉(zhuǎn)成只包含光強(qiáng)信息的單通道灰度圖像。常用的灰度化處理方法有最大值法、加權(quán)平均值法和平均值法等。本文采用加權(quán)平均值法進(jìn)行灰度化處理。加權(quán)平均值法原理是根據(jù)三通道的重要程度對(duì)紅綠藍(lán)三通道分別設(shè)置不同的權(quán)值進(jìn)行加權(quán)平均[7],其計(jì)算公式如式(1)所示。
f(x,y)=ωRR+ωGG+ωBB。
(1)
式中:f(x,y)為像素點(diǎn)(x,y)的灰度值;R、G和B分別為紅、綠和藍(lán)三個(gè)通道在像素點(diǎn)(x,y)的像素值;ωR、ωG和ωB分別為紅綠藍(lán)三個(gè)通道的權(quán)值。
由于人眼對(duì)綠色最為敏感,對(duì)藍(lán)色敏感度最低的特性,故取ωR=0.299,ωG=0.587,ωB=0.114。圖2為角碼的灰度圖。

圖2 角碼的灰度圖
二值化的目的是快速定位角碼的位置,并將角碼和背景分離,為后續(xù)仿射變換做準(zhǔn)備。測(cè)量系統(tǒng)中采用的是背光源照明,拍攝的圖像中背景是白色,而角碼主體由于不透光而呈黑色,因此角碼和背景之間對(duì)比度分明,故本文采用最大類(lèi)間方差法對(duì)角碼圖像進(jìn)行二值化處理。最大類(lèi)間方差二值化法的原理是:根據(jù)圖像的灰度特性,將角碼圖像分為前景和背景兩部分,然后計(jì)算前景和背景之間的類(lèi)間方差,當(dāng)前景和背景的類(lèi)間方差最大時(shí),表示前景和背景的差異最大,此時(shí)的閾值即為最佳分割閾值[8]。二值化結(jié)果如圖3所示。

圖3 角碼二值化結(jié)果
在對(duì)角碼的孔徑進(jìn)行非接觸檢測(cè)時(shí),在水平面內(nèi)角碼可能朝各個(gè)方向傾斜,為便于將角碼圖像上的孔徑和物理孔徑建立準(zhǔn)確的對(duì)應(yīng)關(guān)系,需通過(guò)仿射變換將角碼旋轉(zhuǎn)到水平方向。將角碼旋轉(zhuǎn)到水平方向的具體步驟如下[9]:
1)計(jì)算出二值化區(qū)域的中心點(diǎn)坐標(biāo)(x0,y0);
2)求出二值化區(qū)域相對(duì)水平方向的傾斜角度θ;
3)利用傾斜角度θ計(jì)算旋轉(zhuǎn)矩陣R,如式(2)所示。
(2)
4)定義一個(gè)齊次變換矩陣M,如式(3)所示。
(3)
5)將齊次變換矩陣從點(diǎn)(x0,y0)平移到原點(diǎn),然后旋轉(zhuǎn)角度θ,最后再平移回中心點(diǎn)處(x0,y0),得到變化矩陣Q,如式(4)所示。
(4)
6)將矩陣Q應(yīng)用于仿射變換中,即可獲得轉(zhuǎn)正的角碼圖像,轉(zhuǎn)正結(jié)果如圖4所示。

圖4 轉(zhuǎn)正后的角碼圖像
常用的邊緣檢測(cè)算子有Sobel算子、Robert算子和Canny算子等[5]。由于Canny算子具有抗噪能力強(qiáng)[10]、邊緣檢測(cè)精度更優(yōu)[11]等特點(diǎn),因此本文采用Canny邊緣檢測(cè)算子來(lái)提取角碼的邊緣輪廓。Canny邊緣檢測(cè)的流程如下[12-14]:
1)用二維高斯波函數(shù)對(duì)角碼圖像進(jìn)行卷積處理,以達(dá)到盡可能消除噪聲的目的,計(jì)算方法如式(5)~(6)所示。
(5)
R(x,y)=G(x,y)*f(x,y) ,
(6)
式中:G(x,y)表示高斯濾波函數(shù);f(x,y)表示角碼的灰度圖像;R(x,y)表示降噪后的圖像;σ表示高斯濾波參數(shù)。
用一階偏導(dǎo)的有限差分計(jì)算像素梯度幅值和梯度方向,計(jì)算公式如式(7)~(8)所示。
(7)
(8)
式中:M(x,y)表示像素梯度幅值;fx(x,y)表示圖像在水平方向的一階偏導(dǎo)數(shù);fy(x,y)表示圖像在垂直方向的一階偏導(dǎo)數(shù);θ(x,y)表示像素梯度方向。
3)以梯度幅值矩陣內(nèi)的每一點(diǎn)為中心,沿其八鄰域方向進(jìn)行遍歷,找到與中心點(diǎn)梯度方向相同的兩個(gè)鄰域,并將這兩個(gè)鄰域的幅值與中心點(diǎn)的幅值進(jìn)行比較,若中心點(diǎn)的幅值最大,則保留該中心點(diǎn)的梯度值,反之將該中心點(diǎn)的梯度值置為0。
4)設(shè)定一個(gè)高閾值和一個(gè)低閾值,梯度幅值大于高閾值的點(diǎn)視為強(qiáng)邊緣,保留該點(diǎn);梯度幅值小于低閾值的像素點(diǎn)視為非邊緣,舍棄此點(diǎn);介于高閾值和低閾值中間的點(diǎn)視為弱邊緣,若其八鄰域內(nèi)存在強(qiáng)邊緣,則保留此點(diǎn),否則視為孤立的噪點(diǎn),舍去不要[15]。
利用Canny邊緣檢測(cè)算子對(duì)圖4中1號(hào)孔進(jìn)行邊緣提取,結(jié)果如圖5所示。由圖5可知,Canny算子完整地提取了圓孔的邊緣輪廓,但輪廓為像素級(jí)精度且是一個(gè)不規(guī)則的復(fù)雜多邊形,用此輪廓計(jì)算的直徑誤差較大。

圖5 Canny算子邊緣提取圖
為提高角碼孔徑的測(cè)量精度和邊緣提取的準(zhǔn)確性,本文采用基于卡尺工具的邊緣檢測(cè)算法來(lái)提取角碼的孔徑輪廓,該方法檢測(cè)的輪廓精度為亞像素級(jí)別。基于卡尺工具邊緣檢測(cè)算法的具體步驟如下[16]:
1)做Canny算子提取的圓孔輪廓的最小外接圓。
2)在最小外接圓上產(chǎn)生等大、等距的測(cè)量矩形,如圖6所示。測(cè)量矩形的數(shù)量決定檢測(cè)到邊緣點(diǎn)的個(gè)數(shù),測(cè)量矩形的數(shù)量越多,檢測(cè)到的邊緣點(diǎn)數(shù)越多,檢測(cè)所需的時(shí)間也越久。本文所用測(cè)量矩形的長(zhǎng)為40,寬為10,數(shù)量為30。

圖6 添加測(cè)量矩形
3)計(jì)算每個(gè)測(cè)量矩形內(nèi)每個(gè)像素點(diǎn)的梯度幅值,并采用極大值抑制獲取最優(yōu)邊緣點(diǎn)位置,所得邊緣點(diǎn)如圖7所示。

圖7 最優(yōu)邊緣點(diǎn)
4)用最小二乘法將提取到的邊緣點(diǎn)擬合成一個(gè)標(biāo)準(zhǔn)的圓形,如圖8所示。

圖8 最小二乘法擬合圓形軌跡
為驗(yàn)證本文算法的有效性,搭建了如圖9所示的實(shí)驗(yàn)平臺(tái)。

圖9 基于機(jī)器視覺(jué)的角碼孔徑測(cè)量平臺(tái)
相機(jī)選用深圳邁德威視公司的MV-G2592C型彩色CMOS工業(yè)相機(jī),該相機(jī)的分辨率為2 592×1 944;光源采用發(fā)光面為169×145 mm的LED背光源;鏡頭選用大恒圖像的HN-P-2528-6M-C2/3型600萬(wàn)像素工業(yè)鏡頭;所用算法實(shí)驗(yàn)平臺(tái)為Halcon20.11版。
通過(guò)本文設(shè)計(jì)的采集系統(tǒng)從圖像上直接獲得的尺寸是以像素為單位的,而工件的實(shí)際尺寸是以毫米為單位,將像素尺寸轉(zhuǎn)換成實(shí)際尺寸的過(guò)程稱(chēng)為標(biāo)定。標(biāo)定的具體方法是先對(duì)實(shí)際尺寸為L(zhǎng)的工件進(jìn)行拍照,然后測(cè)得該工件的像素尺寸為M,則可得系統(tǒng)的標(biāo)定系數(shù)K:
(9)
式中,L為表示工件的實(shí)際尺寸,單位為mm;M為表示工件的圖像尺寸,單位為pixel;K為表示單位像素所對(duì)應(yīng)的實(shí)際尺寸,單位為mm/pixel。
本文對(duì)同一工件的圓1到圓4進(jìn)行多組測(cè)量,得系統(tǒng)的標(biāo)定系數(shù)K=0.050 9 mm/pixel。
為了驗(yàn)證系統(tǒng)的重復(fù)性精度,在相同測(cè)量環(huán)境下,采用本文方法對(duì)同一工件進(jìn)行15次測(cè)量,測(cè)量結(jié)果如圖10所示。

次數(shù)/次(a) 孔1

次數(shù)/次(b) 孔2

次數(shù)/次(c) 孔3

次數(shù)/次(c) 孔4圖10 工件重復(fù)性檢測(cè)
由圖10可知,該工件中孔1的最大尺寸為4.841 8 mm,最小尺寸為4.827 7 mm,二者的差值為0.014 1 mm,測(cè)量孔1直徑的重復(fù)性精度約為0.014 1 mm;孔2的最大尺寸為4.7917 mm,最小尺寸為4.777 3 mm,二者的差值為0.014 4 mm,孔2直徑的重復(fù)性精度約為0.014 4 mm;孔3的最大尺寸為4.810 7 mm,最小尺寸為4.798 0 mm,其重復(fù)測(cè)量的最大差值為0.012 7 mm,孔3直徑的重復(fù)性精度近似為0.012 7 mm;孔4的最大尺寸為4.846 8 mm,最小尺寸為4.833 2 mm,二者的差值為0.013 6 mm,孔4直徑的重復(fù)性精度約為0.013 6 mm。
通過(guò)以上分析可知,本系統(tǒng)對(duì)4個(gè)孔進(jìn)行測(cè)量時(shí)的重復(fù)性精度均近似為0.01 mm,能夠滿(mǎn)足對(duì)角碼孔徑的重復(fù)性檢測(cè)精度要求且測(cè)量的直徑數(shù)值波動(dòng)平穩(wěn),具有很好的穩(wěn)定性。
為了驗(yàn)證本測(cè)量系統(tǒng)測(cè)量結(jié)果的精確度,讓操作熟練的工人利用分辨力為0.01 mm的游標(biāo)卡尺對(duì)5個(gè)不同的工件分別進(jìn)行多次測(cè)量,取多次測(cè)量的平均值作為各個(gè)工件的真值;然后再利用本測(cè)量系統(tǒng)對(duì)這5個(gè)工件的尺寸進(jìn)行檢測(cè);最后通過(guò)比較二者的差值即可得到系統(tǒng)的測(cè)量精度。表1給出了本文算法的測(cè)量精度。

表1 本文算法測(cè)量精度
由表1可知,孔1~孔4的最大誤差分別為0.025 4、0.024 6、0.028 5和0.021 9 mm,均在0.03 mm內(nèi)且小于一個(gè)像素0.050 9 mm,能夠滿(mǎn)足對(duì)角碼孔徑的測(cè)量精度要求。此外,用游標(biāo)卡尺檢測(cè)角碼的四個(gè)孔徑大約需要3 min,而本文算法只需126 ms,測(cè)量效率大幅提升,能滿(mǎn)足大批量、高強(qiáng)度、實(shí)時(shí)檢測(cè)需求。
實(shí)驗(yàn)表明,本文提出的基于機(jī)器視覺(jué)的角碼孔徑測(cè)量方法的最大絕對(duì)測(cè)量誤差不超過(guò)0.03 mm,達(dá)到了亞像素測(cè)量精度,能夠滿(mǎn)足企業(yè)對(duì)角碼孔徑的測(cè)量精度要求;測(cè)量的重復(fù)性精度小于0.015 mm,說(shuō)明測(cè)量結(jié)果的穩(wěn)定性較好;該方法檢測(cè)四個(gè)孔徑只需要126 ms,相對(duì)人工檢測(cè)在速度上得到了極大提高。因此,本文設(shè)計(jì)的檢測(cè)方法能夠滿(mǎn)足角碼孔徑的大批量、快速,實(shí)時(shí)檢測(cè)需求,具有良好的應(yīng)用前景。