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