肖金輝,項新建
(浙江科技學院 自動化與電氣工程學院,杭州 310023)
鋼尺在現(xiàn)代生產(chǎn)、生活、學習中作為一種測量標準而廣泛使用,因此對鋼尺自身精度的要求就十分嚴格。根據(jù)國家計量標準JJG 1-1999《鋼直尺檢定規(guī)程》,長度小于或等于300 mm的鋼尺,端邊直線度公差要求在0.04 mm之內(nèi),兩端邊的平行度公差要求在0.25 mm之內(nèi),端邊相對于側(cè)邊的垂直度公差在0.06 mm。企業(yè)根據(jù)生產(chǎn)經(jīng)驗,在實際檢測鋼尺質(zhì)量的過程中,很多情況下是通過檢測兩端邊的長度以及兩端長度的差值來衡量鋼尺是否合格。傳統(tǒng)工業(yè)生產(chǎn)中,針對鋼尺端邊尺寸檢測主要以人工檢測為主,這種檢測方式雖然能夠達到檢測目的,但效率低、速度慢,耗費大量的人力物力,并且當工人長時間做檢測的工作后,會出現(xiàn)不同程度的視疲勞,導致測量誤差增大,不能保證準確性[1-3],因此急需一種新檢測方式來改變存在的問題。近年來隨著機器視覺的快速發(fā)展,視覺檢測技術(shù)引入工業(yè)實際生產(chǎn)檢測中[4-6]可以實現(xiàn)對工件尺寸的高精度、非接觸實時在線檢測,這種非接觸式測量法滿足流水線生產(chǎn)過程中檢測的節(jié)拍[7]。因此,筆者利用機器視覺技術(shù),通過調(diào)用機器視覺軟件Halcon中的算法包對鋼尺圖像進行一維測量,最終快速實現(xiàn)鋼尺端邊檢測和分類。
圖1 鋼尺端邊測量系統(tǒng)示意Fig.1 Schematic diagram of measurement system
機器視覺系統(tǒng)的基本流程為圖像采集、圖像識別、分類處理。本文以Halcon軟件為開發(fā)平臺,首先對攝像機進行標定,設(shè)置相機為外部觸發(fā)[8-9],在傳送帶上采集鋼尺的圖像,然后通過blob分析定位出感興趣區(qū)域(region of interest,ROI),再調(diào)用Halcon中相關(guān)的一維測量算子測量出鋼尺端邊的尺寸,最后通過C#和Halcon混合編程完成自動控制下位機對鋼尺的分撿工作。鋼尺端邊測量系統(tǒng)如圖1所示。
相機的標定是整個測量系統(tǒng)的基石,保證測量的精度。相機的標定是為了求得像素坐標系與世界坐標系的轉(zhuǎn)換關(guān)系,從而將攝像機成像平面上的像點和現(xiàn)實世界中的實際點形成對應(yīng)。其中像素坐標系(u,v)與世界坐標系(XW,XW,ZW)的轉(zhuǎn)換公式為:
(1)
由式(1)可知,相機標定實際是為了確定相機的內(nèi)外參數(shù),從而得到像素坐標系與世界坐標系的轉(zhuǎn)換關(guān)系。Halcon為相機的標定提供了比較直觀的能通過界面操作的標定助手,在進行相機標定之前要做以下準備:
1)選擇標定板的材質(zhì)和合適的標定板尺寸,標定板的大小一般占相機視野的1/3左右[11],本系統(tǒng)選用光源打光,選擇透光性較好的玻璃材質(zhì)標定板,60 mm×60 mm。
2)通過算子gen_caltab獲得生成標定板的描述文件,描述文件要與標定板的大小尺寸對應(yīng)。
本系統(tǒng)選擇某公司提供的面陣CCD相機,選擇固定焦距鏡頭,標定完成如圖2所示。
圖2 標定完成Fig.2 Calibration completion
標定系數(shù)如下:
CameraParameters:=[0.015 304 9,0.318 736,8.199 89e-006,8.3e-006,-178.172,-545.22,2 456,2 058]
CameraPose:=[0.151 239,0.138 71,0.185 711,359.488,0.092 882,229.698,0]
圖3 鋼尺打光Fig.3 Lighting diagram
標定系數(shù)中含有相機的內(nèi)外參數(shù),在Halcon中通過調(diào)用該系數(shù)可完成像素尺寸到實際物理尺寸的轉(zhuǎn)換,需注意的是相機完成標定之后,相機和鏡頭的位置都不能發(fā)生改變,一旦位置發(fā)生改變必須進行重新標定,標定成功后才能對鋼尺進行圖像采集。
1.2.1 光源的選型
本研究測量的鋼尺長度為20 cm,寬度為24~26 mm,由于鋼尺表面反光較大,故采用2個條形光源對鋼尺進行打光,如圖3所示。
1.2.2 相機的外部觸發(fā)
相機的觸發(fā)方式有軟件觸發(fā)和外部硬件觸發(fā),因為是在傳送帶上采集圖像,所以本研究選擇設(shè)置為上跳變外部硬件觸發(fā),硬件觸發(fā)器是光電開關(guān)。
整個圖像處理分3步:1)通過圖像分割選出鋼尺的ROI區(qū)域。2)在原圖中扣除鋼尺區(qū)域,為使每次的測量結(jié)果誤差小,通過仿射變換把鋼尺圖像轉(zhuǎn)換到水平位置。3)進行一維測量,分別測出兩條邊的長度。
圖像分割的目的是從圖像中把目標區(qū)域和背景區(qū)域分開。本研究選用的全局閾值分割法在閾值分割之前首先進行圖像灰度化處理;Halcon中全局閾分割值法的算子為threshold,閾值分割之后得到的是區(qū)域圖像,然后調(diào)用connection算子斷開連通域?qū)D像分成不同的區(qū)域塊,再調(diào)用select_shapes算子進行區(qū)域特征選擇;最后找到鋼尺感興趣區(qū)域(ROI),為了使鋼尺的邊緣都包括在ROI內(nèi)部,對ROI進行dilation_rectangle1矩形膨脹運算,ROI定位如圖4所示。
圖4 ROI定位Fig.4 ROI positioning
腐蝕和膨脹是2個最基本的也是最重要的形態(tài)學運算,矩形膨脹算法是由膨脹算法演變而來,膨脹算法的數(shù)學形式為:
A⊕B={x|B(x)∩A≠?}。
(2)
式(2)中:B為結(jié)構(gòu)元素;A為輸入圖像。用結(jié)構(gòu)元素B掃過整幅輸入圖像A,一旦結(jié)構(gòu)元素的原點遇到二值圖像中值為1的像素,則將輸入圖像上與結(jié)構(gòu)元素對應(yīng)的像素置為1并輸出,矩形膨脹運算的結(jié)構(gòu)元素是一個矩形。
在一維測量之前,為了使每次都能快速、高精度地測量鋼尺的兩端,測量之前將鋼尺圖像仿射變換到水平位置。Halcon中有很多仿射變換相關(guān)的算子,本研究中首先用vector_angle_to_rigid算子得到圖像變換到水平方向的二維矩陣,然后通過affine_trans_image算子將二維矩陣作用到圖像上實現(xiàn)鋼尺圖像的轉(zhuǎn)正,最后通過區(qū)域?qū)υ瓐D像進行摳圖,區(qū)域轉(zhuǎn)正和圖像分割如圖5所示。
圖5 區(qū)域轉(zhuǎn)正和圖像分割Fig.5 Regional correction and image segmentation
像素坐標(u,v)仿射變換到(x,y)坐標下的一般表達式為:
(3)
式(3)中:仿射變換矩陣為A。仿射變換主要包含平移變換、比例變換和旋轉(zhuǎn)變換。本研究中主要用到平移變換和旋轉(zhuǎn)變換。圖像的平移變換就是將圖像中的所有像素點按照要求進行垂直、水平方向移動。平移過程中只改變圖像的位置,內(nèi)容不會發(fā)生改變。表達式為:
(4)
式(4)中:x0和y0分別為x和y的坐標平移量。
圖像的旋轉(zhuǎn)是指圖像按照某點為原點旋轉(zhuǎn)某個角度,圖像旋轉(zhuǎn)后只是發(fā)生位置變化。表達式為:
(5)
式(5)中:θ為旋轉(zhuǎn)角度。
圖6 感興趣區(qū)域Fig.6 Region of interest
鋼尺的一維測量分2步:1)在已經(jīng)擺正的圖像上調(diào)用gen_measure_rectangle2算子形成一個矩形的測量對象(ROI)。2)調(diào)用measure_pairs算子,得到一維測量的結(jié)果。
由于本研究測量的是鋼尺的兩端,所以會調(diào)用2次gen_measure_rectangle2形成2個矩形的測量對象(ROI)。一維測量核心算子gen_measure_rectangle2。該算子前面7個參數(shù)是為了形成一個矩形,通過這個算子會產(chǎn)生一個矩形的測量對象,在矩形的測量對象內(nèi)每間隔一個像素建立一條投影的線段,線段的長度等于矩形的寬度,這些線段稱為等距線。在每條等距線上取線段中點并連接起來,形成帶有方向的線段,稱作剖面線(profile line),線段的方向代表矩感興趣區(qū)域的方向[13],如圖6所示。
通過計算每條等距線的平均灰度值,可以得出輪廓線的灰度直方圖。如果等距線不是垂直或水平的,那么等距線經(jīng)過的就不是一個完整的像素,需要進行插值處理。參數(shù)Interpolation可以決定插值的方法,設(shè)置Interpolation=’nearest_neighbor’則取最近像素的灰度值,這種方法速度最快但精度低;設(shè)置Interpolation=’bilinear’采用雙線性插值法,這種方法精度最高但速度最慢。測量矩陣的各個屬性值通過MeasureHandle句柄調(diào)用。一維測量另外一個核心算子測量算子measure_pairs,測量算子通過調(diào)用MeasureHandle句柄,然后改變平滑系數(shù)Sigma的值,對輪廓線進行高斯濾波,最后得到輪廓線的一階灰度差分直方圖。再回過來分析gen_measure_rectangle2中矩形的中心點坐標如何確定,矩形中心點是要測量的鋼尺中心點,通過圖像分割之后得到鋼尺的區(qū)域,經(jīng)過擺正之后在該區(qū)域上調(diào)用一個外接矩形算子,可以得到鋼尺區(qū)域的具體坐標,通過中心點平移得到鋼尺兩端的中心點坐標,由此就可以完成對鋼尺兩端的一維測量。測量實現(xiàn)如圖7所示。
圖7 測量的實現(xiàn)Fig.7 Measurement implementation diagram
圖8 測量系統(tǒng)軟件界面Fig.8 Software interface of measurement system
本系統(tǒng)軟件設(shè)計包含圖像采集模塊、圖像識別模塊、數(shù)據(jù)顯示模塊、串口通信模塊。圖像采集模塊通過調(diào)用相機自帶的SDK,完成圖像的采集、觸發(fā)模式設(shè)置。圖像識別模塊圖像處理的算法部分是在Halcon中完成,將Halcon中的算法程序?qū)С鰹楹蠬DevelopEeport類的.cs格式文件,然后在C#窗體界面編程中創(chuàng)建HDevelopEeport類的實例,通過該實例調(diào)用HDevelopEeport類的圖像處理函數(shù),完成本系統(tǒng)軟件對圖像識別模塊的編程。數(shù)據(jù)顯示模塊通過調(diào)用C#窗體界面中自帶Label,TextBook控件來顯示圖像識別和邏輯處理的結(jié)果。串口通信模塊通過調(diào)用C#窗體界面中自帶的SerialPort控件來完成與下位機的通信[14]。主界面如圖8所示。
圖9 分撿系統(tǒng)流程Fig.9 Flow chart of bifurcation system
鋼尺端邊的圖像經(jīng)過上位機進行圖像識別和處理之后,會把結(jié)果顯示到界面上,同時在軟件內(nèi)部會把測量的結(jié)果和錄入的標準進行邏輯上的對比和運算,然后把結(jié)果以指令的方式傳遞給下位機分撿系統(tǒng),下位機根據(jù)不同的指令,對應(yīng)I/O口置0或置1使繼電器吸合來間接控制分撿電機工作[15]。本系統(tǒng)下位機分撿系統(tǒng)把80C51單片機作為主控芯片,分撿系統(tǒng)流程如圖9所示,下位機分撿原理如圖10所示。
圖10 下位機分撿原理Fig.10 Principle diagram of slave computer sorting
為了驗證本測量系統(tǒng)在實際生產(chǎn)檢測過程中的應(yīng)用效果,本研究采取2種方法對其進行驗證:少量重復測量鋼尺的端邊和大批量測量鋼尺端邊。重復測量是為了驗證重復精度,重復精度從最大、最小誤差的絕對值進行評價,大批量測量鋼尺端邊是為了驗證檢測系統(tǒng)的檢測精度、誤檢率、漏檢率。
檢測精度:
(6)
誤檢率:
(7)
漏檢率:
(8)
式(6)~(8)中:TP為被正確檢測出合格品的數(shù)量;TN為被正確檢測出次品的數(shù)量;P為合格品;N為次品;FP為合格品被誤檢的數(shù)量;FN為次品沒有被檢測出來誤認為合格品的數(shù)量。
驗證設(shè)定的錄入標準為:1)鋼尺兩端的長度不超過25.00 mm;2)鋼尺兩端的長度不低于24.00 mm;3)鋼尺亮度的長度差值不超過0.20 mm。
為了驗證本系統(tǒng)的重復精度,對一個已知實際尺寸的鋼尺重復檢測10次,鋼尺長度為20 cm,由于鋼尺有兩端,故在測量的過程中對兩端進行標記,以保證測量的數(shù)據(jù)不混淆。表1為鋼尺兩端重復測量結(jié)果。
表1 鋼尺兩端重復測量結(jié)果Table 1 Repeated measurement results at both ends of steel ruler mm
為了驗證該系統(tǒng)在實際使用過程中的性能,鋼尺分3組,每組100只,長度為20 cm,端邊在24~26 mm,對其檢測,結(jié)果見表2。
表2 大批量檢測結(jié)果Table 2 Large batch test results
對長度為20 cm,端邊長度在24~26 mm的鋼尺進行重復精度驗證和大批量檢測精度驗證,結(jié)果顯示,對鋼尺端邊檢測的測量最大絕對值誤差在0.070 mm,總檢測精度為99.33%,完全滿足工業(yè)生產(chǎn)的檢測需求。
本文以Halcon軟件為平臺,針對鋼尺兩端的尺寸測量以及分類,進行了完整的系統(tǒng)設(shè)計。這個系統(tǒng)中包括鋼尺在流水線上的圖像采集、圖像處理及測量,最后到分類。從實際測量的數(shù)據(jù)來看,其檢測結(jié)果值與標準值的偏差小于0.1 mm,分類結(jié)果滿足工業(yè)要求,從而在很大程度上解決了鋼尺檢測不準確等問題,促進了機器視覺技術(shù)在工業(yè)生產(chǎn)中的應(yīng)用。未來除了增加樣本的數(shù)量和更改測試的光線外,還打算提高檢測精度,同時利用機器視覺技術(shù)對鋼尺的缺陷進行檢測。