高茂源,王好臣,叢志文,王澤政,李家鵬
(山東理工大學(xué)機(jī)械工程學(xué)院,山東淄博 255000)
目前企業(yè)中生產(chǎn)的機(jī)械零件的測量手段主要依靠輪廓儀,激光測量儀或三坐標(biāo)測量機(jī)等測量工具,這些方法操作復(fù)雜,精度低,且儀器設(shè)備成本高。機(jī)器視覺技術(shù)發(fā)展迅速,被廣泛應(yīng)用于物體識別、缺陷檢測、測量等方面,并發(fā)揮著重要的作用。將機(jī)器視覺技術(shù)應(yīng)用于尺寸測量中已有很多案例,國內(nèi)外學(xué)者也對此進(jìn)行實(shí)驗(yàn)研究,并取得了一定的成果。陳舒萍等[1]利用機(jī)器視覺實(shí)現(xiàn)金屬成形加工溫度的測量,可以實(shí)時測量工件區(qū)域溫度變化和工件輪廓尺寸的變化;萬子平[2]將機(jī)器視覺應(yīng)用于零件輪廓測量。Khalili等[3]利用視覺技術(shù)測量固體材料的裂縫尺寸。
利用強(qiáng)大的工業(yè)級圖像處理軟件HALCON結(jié)合機(jī)器視覺技術(shù),可大大提高零件測量的效率,提高精確性與穩(wěn)定性,實(shí)現(xiàn)零件尺寸的快速精密測量。HALCON軟件包含1千多個算子,擁有廣泛的機(jī)器視覺集成開發(fā)環(huán)境,可以快速實(shí)現(xiàn)圖像處理的需求。本文針對機(jī)械零件的尺寸測量問題,提出一種基于HALCON的機(jī)械零件尺寸快速精密測量方法。通過相機(jī)標(biāo)定獲得其內(nèi)外參數(shù),利用HALCON對零件圖像進(jìn)行處理。零件邊界采用HALCON中的直線擬合算子獲得邊界點(diǎn)的起止點(diǎn)坐標(biāo),而內(nèi)部孔徑采用導(dǎo)入的最小二乘算子擬合圓參數(shù),獲得內(nèi)孔的直徑尺寸,實(shí)現(xiàn)快速高效的圖像處理與測量。
測量系統(tǒng)由硬件和軟件兩部分組成,硬件部分由工控機(jī)和實(shí)驗(yàn)平臺組成;軟件部分采用HALCON進(jìn)行圖像處理并輸出處理結(jié)果。
測量系統(tǒng)的硬件部分選用500萬像素的工業(yè)CCD相機(jī)、25 mm焦距的工業(yè)鏡頭、圖像采集卡、LED背光光源和工控機(jī)。測量流程為:相機(jī)采集零件圖像傳給工控機(jī),工控機(jī)對所采集圖像進(jìn)行處理,返回并顯示測量結(jié)果。測量系統(tǒng)的結(jié)構(gòu)如圖1所示。
圖1 測量系統(tǒng)結(jié)構(gòu)圖
圖像處理軟件使用德國MVte公司開發(fā)的HALCON。它由1 000多個獨(dú)立函數(shù)以及底層的數(shù)據(jù)管理核心構(gòu)成,整個函數(shù)庫可以用多種編程語言訪問,HALCON中包含各類濾波,形態(tài)學(xué)分析,校正等基本的幾何以及影像計算功能,應(yīng)用范圍涵蓋醫(yī)學(xué)、遙感探測,到工業(yè)上的各類自動化檢測[4]。HALCON還可以導(dǎo)入自定義封裝算子,其程序也可以和C、C++或C#等多種語言聯(lián)合編程。HALCON操作界面如圖2所示。
圖2 HALCON操作界面
機(jī)械零件尺寸測量的基本流程為:首先利用HALCON軟件對相機(jī)進(jìn)行標(biāo)定,獲得相機(jī)內(nèi)外參。通過相機(jī)采集圖像,對圖像進(jìn)行預(yù)處理,提取零件區(qū)域并進(jìn)行矯正;通過邊緣檢測得到零件圖像的邊緣,其邊界利用HALCON的擬合算子進(jìn)行直線擬合,內(nèi)孔利用封裝好的最小二乘算子進(jìn)行擬合;最后根據(jù)相機(jī)標(biāo)定結(jié)果,利用所得關(guān)鍵點(diǎn)坐標(biāo)和擬合圓的半徑的像素距離計算出零件的實(shí)際尺寸?;贖ALCON軟件進(jìn)行圖像處理的流程如圖3所示。
圖3 圖像處理流程圖
為保證零件測量的精度,并獲得圖像點(diǎn)和物體點(diǎn)之間的關(guān)系就要進(jìn)行相機(jī)的標(biāo)定。相機(jī)標(biāo)定的實(shí)質(zhì)就是獲得世界坐標(biāo)系與圖像像素坐標(biāo)系之間的轉(zhuǎn)換關(guān)系。其中世界坐標(biāo)系(XW,YW,Z W)與像素坐標(biāo)系(u,v)的轉(zhuǎn)換公式為:
式中:M1為相機(jī)內(nèi)部參數(shù),包括焦距f,單個像元的高d x、寬d y,橫坐標(biāo)值u0、縱坐標(biāo)值v0這5個變量;M2為相機(jī)外部參數(shù),包括平移矩陣T和旋轉(zhuǎn)矩陣R。
通過相機(jī)標(biāo)定確定其內(nèi)外參數(shù),實(shí)現(xiàn)像素坐標(biāo)系到世界坐標(biāo)系的轉(zhuǎn)換。
相機(jī)標(biāo)定板采用圓心點(diǎn)陣標(biāo)定板,用相機(jī)拍攝標(biāo)定板圖像,每拍一張就要改變標(biāo)定板的位置,角度和方向,在拍攝時要求標(biāo)定板要涵蓋圖像視場大部分區(qū)域,第一幅標(biāo)定圖像中的標(biāo)定板要直接放在測量平面上拍攝[5]。所拍攝的標(biāo)定板圖像如圖4所示。
通過調(diào)用caltab_points()函數(shù)從標(biāo)定板的描述文件中得到標(biāo)定點(diǎn)在世界坐標(biāo)系中的坐標(biāo)值。從CCD傳感器和鏡頭的說明書中得到相機(jī)初始內(nèi)參[6]。標(biāo)定點(diǎn)的像素坐標(biāo)采用算子find_caltab()和find_marks_and_pose()得到。其提取步驟為:首先對標(biāo)定圖像閾值分割,分離內(nèi)部區(qū)域與背景,然后利用Canny濾波器提取標(biāo)定點(diǎn)邊緣,利用線性最小化代數(shù)誤差擬合橢圓獲得每個標(biāo)定點(diǎn)的像素坐標(biāo)。最后利用算子camera_calibration()對相機(jī)進(jìn)行標(biāo)定,得到標(biāo)定后的相機(jī)內(nèi)外參數(shù)以及投影誤差。
圖4 標(biāo)定圖像
通過標(biāo)定獲得相機(jī)內(nèi)部參數(shù)如表1所示,其中k為畸變系數(shù),外部參數(shù)如表2所示。
表1 工業(yè)相機(jī)內(nèi)部參數(shù)
表2 工業(yè)相機(jī)外部參數(shù)
為確保標(biāo)定的準(zhǔn)確與穩(wěn)定性,在標(biāo)定完成后不能更改相機(jī)的位置,否則將重新標(biāo)定。通過標(biāo)定后獲得相機(jī)的內(nèi)外參數(shù),就可將零件的圖像尺寸轉(zhuǎn)換為實(shí)際尺寸。
在HALCON軟件中調(diào)用open_framegrabber( ) 與grab_image_start()算子采集零件圖像。調(diào)用rgb_to_gray()算子對圖像進(jìn)行灰度化處理。在圖像獲取和傳輸過程中會受到噪聲污染,不利于圖像處理與分析[7],使用中值濾波算子median_image()和高斯濾波算子gauss_image()消除零件圖像的椒鹽噪聲和高斯噪聲。處理后的圖像如圖5所示。
為了獲得零件的特征,將零件區(qū)域與背景區(qū)域分開,需要對零件圖像進(jìn)行圖像分割。圖像分割采用閾值分割法,閾值分割根據(jù)圖像像素灰度幅度進(jìn)行分割,劃分為不同等級,通過設(shè)定灰度閾值提取零件區(qū)域。如下式所示:
圖5 去除噪聲后的工件圖像
設(shè)g(x)為閾值運(yùn)算后的二值圖像;T為根據(jù)圖像的灰度直方圖確定的閾值;1為目標(biāo)圖像的值;0為背景圖像的值。按照式(2)進(jìn)行二值化,就可以將零件區(qū)域分割出來。
在HALCON中利用灰度直方圖工具確定合適的閾值。通過對濾波后的零件圖像進(jìn)行二值化,將零件區(qū)域分割出來。采用算法為:threshold(G-rayImage, Regions, 0, 114)。由上可知,零件圖像的灰度值介于0~114之間,背景圖像的灰度值大于114。然后使用算子connection (Regions, Connected-Regions)分為不同的連通域,利用面積特征提取零件區(qū)域。處理后的圖像如圖6所示。
為了快速高效的進(jìn)行零件測量工作,確保測量精度,需要將采集到的零件圖像仿射變換至水平位置。仿射變化的表達(dá)式為:
圖6 提取的零件區(qū)域
式中:A為仿射變換矩陣,由線性部分和平移部分組成。
仿射變化主要包括平移變換和旋轉(zhuǎn)變換。平移變換使得圖像所有像素點(diǎn)按所要求的偏移量水平、垂直移動;而旋轉(zhuǎn)變換則使得圖像繞著某一點(diǎn)旋轉(zhuǎn)一定角度[8]。平移變換與旋轉(zhuǎn)變換的表達(dá)式分別為:
式中:x0,y0分別為坐標(biāo)平移量;θ為旋轉(zhuǎn)角度。
在HALCON中進(jìn)行仿射變換采用的算法如下:
orientation_region (ConnectedRegions, Phi)
vector_angle_to_rigid (Row, Column, Phi, Row, Column, 0, HomMat2D)
affine_trans_image (GrayImage, ImagTrans, Hom-Mat2D,′cons-tant′,′false′)
首先調(diào)用orientation_region算子計算圖像偏轉(zhuǎn)角度;然后利用vector_angle_to_rigid算子得到圖像變換到水平位置的二維矩陣;最后利用affine_trans_image算子將二維矩陣作用到零件圖像將其轉(zhuǎn)換至水平位置。區(qū)域轉(zhuǎn)正后的圖像如圖7所示。
為確保零件測量結(jié)果的精確性,需要得到零件圖像的亞像素數(shù)據(jù),即零件圖像邊緣。在HALCON中亞像素邊緣用XLD(Extended Line Descriptions)表示。邊緣是圖像的非常重要的特征,圖像周圍像素灰度值發(fā)生變化的像素點(diǎn)為圖像邊緣上的點(diǎn),即灰度值導(dǎo)數(shù)最大的區(qū)域。邊緣檢測就是通過計算灰度值變化的導(dǎo)數(shù),來提取圖像中灰度值空間方向梯度大的邊、線特征的過程[9]。用梯度可以很好地反映圖像的邊緣位置,梯度對應(yīng)一階導(dǎo)數(shù),對于一個連續(xù)圖像函數(shù)f(x,y)梯度表示為:
圖7 區(qū)域轉(zhuǎn)正
通過邊緣檢測將零件圖像邊緣提取出來。邊緣檢測采用Canny算子,基本思想是首先對圖像選擇一定的高斯濾波器進(jìn)行平滑濾波,然后采用非極值抑制技術(shù)處理,進(jìn)而得到圖像邊緣[10]。其步驟如下:
第一,用環(huán)形二維的高斯濾波器G(x,y)平滑圖像f(x,y),得到平滑圖像fs(x,y)。
第二,計算平滑圖像的每個像元點(diǎn)的梯度幅值M(x,y)和方向α(x,y),利用梯度幅值和方向計算出每點(diǎn)的邊緣強(qiáng)度和方向。
第三,對梯度幅值進(jìn)行非極大值抑制,為確定邊緣保留局部梯度最大的點(diǎn),而抑制非極大值,即將非局部最大值點(diǎn)設(shè)為0,細(xì)化邊緣。
第四,設(shè)置低閾值T1和高閾值T2,通過圖像的邊緣像素與設(shè)置的高低閾值進(jìn)行對比來檢測邊緣和連接邊緣。
在HALCON中利用edges_sub_pix(GrayImage,Edges,′Canny′, 0.6, 20,40)算子提取零件圖像的亞像素邊緣。所得到的圖像邊緣如圖8所示。
獲得零件邊緣輪廓后,就可以對邊界和內(nèi)孔的孔徑進(jìn)行擬合。
2.5.1 直線擬合
調(diào)用HALCON中select_shape_xld()算子,利用XLD的特征直方圖,利用寬度這一特征范圍將孔徑邊緣剔除,只保留零件外輪廓。若提取零件其中一條邊需要將零件的XLD輪廓分割為直線或者圓弧線段。調(diào)用segment_contours_xld()算子進(jìn)行分割,分割后的輪廓由全局輪廓屬性cont_a-pprox確定。輪廓對照如表3所示。
圖8 零件亞像素邊緣
表3 輪廓對照表
將零件輪廓分割完成之后調(diào)用get_contour_global_at-trib_xld(ObjectSelected,'cont_approx',Attrib)算子得到每段輪廓的屬性。若Attrib=-1則屬于直線段,然后就可以利用直線擬合算子fit_line_contour_xld()擬合邊界直線,并獲取起止點(diǎn)的坐標(biāo)值,通過獲得的坐標(biāo)值可以得到零件在圖像中的尺寸,通過轉(zhuǎn)換關(guān)系可以得到零件的實(shí)際尺寸。邊界擬合效果如圖9所示。
圖9 直線擬合
圖10 圓擬合
2.5.2 圓擬合
由于拍攝不穩(wěn)定和現(xiàn)場環(huán)境等因素,導(dǎo)致孔徑處圖像在邊緣提取時有時無法獲得近乎完整的圓形輪廓,所以在調(diào)用select_shape_xld()算子提取圓形輪廓時,只能提取部分圓弧,不利于圓的擬合,這時就需要對提取的圓弧進(jìn)行共圓聯(lián)合,調(diào)用union_cocircular_contours_xld()算子對圓弧進(jìn)行共圓聯(lián)合。
對孔徑處圓形擬合時,采用最小二乘法進(jìn)行圓參數(shù)擬合,并將程序封裝為算子導(dǎo)入至HALCON中,進(jìn)行擬合時直接調(diào)用即可。最小二乘法常用于曲線擬合,在擬合圓形時即使出現(xiàn)邊緣缺失,也不會影響圓心定位和檢測。
圓方程可表示為:
用最小二乘法擬合圓時要求所優(yōu)化目標(biāo)函數(shù)的誤差平方和最小,目標(biāo)函數(shù)為:
式中:(xi,yi) ,i=1,2,3為圓弧上特征點(diǎn)在圖像坐標(biāo)系中的坐標(biāo);n為參與擬合的特征點(diǎn)數(shù)。
為獲得一個最小化問題的直接解,同時避免了平方根,將目標(biāo)函數(shù)改寫為:
由最小二乘法原理可知,需要求解A,B,C使E取極小值。故A,B,C應(yīng)滿足:
求解方程(17)~(19)得到圓心坐標(biāo)(x0,y0)和半徑r的擬合值為:
通過調(diào)用自定義圓擬合算子對零件孔徑邊緣進(jìn)行擬合得到圓心坐標(biāo)(x0,y0)和半徑r。圓擬合的圖像如圖10所示。
通過直線擬合得到零件邊界的起止點(diǎn)坐標(biāo),在HALCON中調(diào)用image_points_to_world_plane算子將直線起止點(diǎn)的圖像坐標(biāo)轉(zhuǎn)換為世界坐標(biāo),調(diào)用求兩點(diǎn)之間距離的算子distance_pp()獲得零件的實(shí)際邊長。設(shè)x代表實(shí)際尺寸,p代表圖像中1個像素距離,通過得到的HALCON標(biāo)定板圓形標(biāo)志的像素坐標(biāo)和世界坐標(biāo),結(jié)合相機(jī)標(biāo)定的結(jié)果可得每個像素對應(yīng)的實(shí)際尺寸為0.000 11 mm,從而求出孔徑r的實(shí)際尺寸。測量結(jié)果如圖11所示。
利用高精度測量設(shè)備測量零件的實(shí)際尺寸,并與視覺測量結(jié)果進(jìn)行對比并計算誤差如表4所示。
圖11 測量結(jié)果
表4 實(shí)際值與測量值對比
從表中可以看出,利用視覺測量的零件尺寸和實(shí)際尺寸相差很小,并且每個尺寸的誤差都在±0.02 mm之內(nèi),滿足誤差允許范圍,準(zhǔn)確性和實(shí)時性滿足工業(yè)生產(chǎn)的檢測需求。
本文利用機(jī)器視覺技術(shù)對機(jī)械零件進(jìn)行尺寸測量,利用HALCON軟件對零件圖像進(jìn)行處理,采用擬合的方法獲得零件的尺寸,實(shí)驗(yàn)表明測量結(jié)果滿足精度要求。該方案可實(shí)現(xiàn)快速,準(zhǔn)確、實(shí)時的非接觸式尺寸測量,可應(yīng)用于實(shí)際生產(chǎn)中,提高零件的生產(chǎn)效率,對一些簡單機(jī)械零件的尺寸測量具有一定的指導(dǎo)意義。