鄒哲暠,曾維友
(湖北汽車工業學院數理與光電工程學院,湖北十堰 442002)
軸承是機械設備的重要零部件之一,其應用很廣泛,作用于各個機械零件之間,主要作用是支撐機械旋轉,降低旋轉時的摩擦因數,從而使機械運轉更加快速,因此軸承內外徑是軸承的重要參數[1]。故快速、準確地檢測出軸承的內外徑和圓度是各大軸承工廠的研究重點之一。
傳統人工測量軸承內外徑的方法主要是借助機械式、光學式的測量儀器[2],這些測量儀器都需要人工操作,因此存在人工檢測疲勞、精度低、效率低等問題[3]。為了克服傳統測量的缺點,將機器視覺應用于軸承的內外徑測量,具有非接觸式、精度高、效率高、穩定性高等優點[4-6]。齊魯工業大學的李龍等人[7]提出用小波變換算法提取軸承邊緣,再通過Hough變換對軸承內外輪廓進行提取并測量;該方法雖然好于傳統測量方法,但是小波變換邊緣檢測和Hough變換計算量大,易消耗內存,從而降低了檢測速度。合肥工業大學的任永強等[8]提出了通過改進的圓檢測算法來提取軸承邊緣,它主要是通過輪廓面積周長比值篩選法篩選出一些無效輪廓點,保留軸承邊緣的有效輪廓點,再使用最小二乘法進行擬合,此方法雖然也能夠進行圓擬合,但擬合效果不好,檢測精度不高,主要起定位作用。
為了提高檢測速度,檢測精度,本文作者采用了基于機器視覺的軸承內外徑測量:首先使用閾值分割來對軸承定位,通過Canny算法進行邊緣提取,再使用卡尺工具法來擬合軸承內外圓,并通過標定測量出擬合圓的真實值,最后通過C#編寫測量交互界面,實現測量數據的處理及顯示。
硬件系統主要由相機、鏡頭、光源組成,硬件系統的好壞直接決定了圖像的質量和測量的精度。
相機的選型主要考慮相機的分辨率、幀率、靶面尺寸。相機的分辨率與光學傳感器的像元尺寸和所搭配的鏡頭有關。根據零件要求的檢測精度和零件尺寸大小,最終選擇海康MV-CE200-10GM型號2 000萬像素相機,其分辨率為5 472像素×3 648像素,像元尺寸為2.4 μm×2.4 μm。
鏡頭的選型主要考慮鏡頭的工作距離、視野以及畸變程度。由于軸承有一定的高度并且普通的工業鏡頭有一定的畸變,所以使用普通的工業鏡頭可能會照到軸承內壁從而對其內徑造成一定的影響,導致測量不準確。而遠心鏡頭不僅成像質量更高而且可以有效消除畸變。根據式(1):
(1)
其中:β為鏡頭的放大倍率;fCCD為相機的像元尺寸;fFOV為相機的視野范圍。根據計算,最終選用0.28倍的遠心鏡頭。
光源的選型對成像質量以及穩定性有重要影響。考慮到會有外界自然光的影響,首先要做遮光處理,然后主要是測量軸承的內外徑,需要它的輪廓即可,所以最終選擇穩定的背光源。背光源可以最好地體現出物體的輪廓,提高對比度。
根據以上硬件選型,再結合控制器、PC共同構成硬件系統如圖1所示。利用此硬件系統得到的圖像和實物如圖2所示。

圖1 硬件系統

圖2 軸承實物(a)和實時圖像(b)
利用機器視覺進行圖像處理、擬合、測量的基本流程是圖像采集,閾值化處理,圖像預處理,邊緣提取,調用Halcon中的卡尺工具算子進行擬合、測量、顯示。測量流程如圖3所示。

圖3 圖像處理的基本流程
相機標定主要是為了得到攝像機的內參和外參姿態。內參是從相機坐標系轉到像素坐標系,外參姿態是從世界坐標系轉到相機坐標系[9]。相機標定最終目的就是把像素坐標轉換成實際坐標,得到軸承內外徑的真實值。因此標定精度對于測量精度有一定影響。世界坐標系(X,Y,Z)與像素坐標系(u,v)轉化關系為
(2)
其中:f為相機的焦距;dx、dy分別為像素在X軸、Y軸方向上的物理距離;u0、v0為圖像原點的坐標;R為旋轉矩陣;T為平移矩陣。
Halcon相機標定主要是通過圓形陣列標定板來實現的。文中采用30 mm×30 mm大小、圖像陣列為9×9的圓心陣列形標定模板。生成標定文件,通過Halcon中的標定助手,對標定板進行旋轉、平移、傾斜式的拍照,一般需要10~15張標定圖像。最終得到的相機內參和外參如表1所示,標定板圖像如圖4所示。

表1 相機內外參數

圖4 標定板圖像
利用相機得到圖像后,需要對圖像進行預處理,達到定位的效果,采用Blob分析對軸承進行閾值分割。常用的閾值分割有全局閾值分割、自動全局閾值分割、動態閾值分割等。文中使用threshold (Image, Region, 0, 90)算子對圖像進行閾值分割,凸顯出圖像所在的區域,方便后續的邊緣提取。經過不同閾值分割方法和不同閾值處理后的圖像如圖5所示。

圖5 不同閾值分割方法圖像
通過上述4幅圖像可以看出:使用全局閾值分割并把閾值設為90時,對軸承的分割效果最為明顯,更加方便后續的圖像處理。
像素是一幅圖像的最小單位。實驗所用相機的像元尺寸為2.4 μm×2.4 μm,因此得到的圖像兩個像素之間的距離大約為2.4 μm,宏觀上可以把它們看作是連在一起的,但在微觀上,它們之間還有無限的更小的東西存在,這個更小的東西稱為“亞像素”[10]。
在對圖像進行閾值分割后,需要提取圖像的內外徑邊緣。首先,采用像素級方式對邊緣進行提取,利用fill_up(Regions, RegionFillUp)算子填充整個區域,得到外徑輪廓,然后使用difference(RegionTrans,Regions,RegionDifference)算子得到內徑輪廓。其次,采用亞像素級別的方式進行邊緣提取,利用edges_sub_pix(Image, Edges,′canny′, 5, 50, 100)算子實現對軸承內外徑的邊緣提取。該算子主要通過Canny算法對邊緣進行提取。Canny算法是對邊緣梯度進行二階求導的一個方法,它滿足三大最優邊緣檢測的準則:(1)最優檢測,算法需要精確找到盡可能多的邊緣,盡可能減少誤檢和漏檢;(2)最優定位準則,算法檢測的邊緣點應精確地定位在邊緣的中心;(3)檢測點與邊緣點一一對應,不會產生過多的偽邊緣[11]。因此該檢測算法的精度和速度都很好,使用該算法可以快速、精確地提取所需要的邊緣輪廓。Canny算法的一般步驟為:
(1)用高斯濾波來平滑圖像,以達到去除噪聲的目的。二維高斯濾波的函數為
(3)
其中:σ是標準差,它控制著圖像的平滑程度。高斯濾波的主要作用就是去除噪聲。因為噪聲和邊緣一樣都屬于高頻信號,很容易被識別為偽邊緣。應用高斯濾波去除噪聲,降低偽邊緣的識別。但是由于圖像邊緣信息也是高頻信號,高斯濾波的σ選擇很重要,過小的σ會使噪聲去除不干凈,過大的σ會使一些弱邊緣檢測不到。
(2)計算梯度幅值和方向
(4)
(5)
其中:G為梯度強度;θ為梯度方向。
(3)非極大值抑制
非極大值抑制就是將邊緣變得更加清晰。它只保留每個像素點梯度上的極大值,這樣就能使邊緣寬度大大減少,消除許多虛假的邊緣點。
(4)雙閾值檢測和連接邊緣
在非極大值抑制之后,剩余的邊緣像素可以更精準地表示實際的邊緣。然而,仍然存在一些由噪聲和顏色變化引起的邊緣像素。為了解決這一問題,必須要用雙閾值檢測,消除低于低閾值的弱邊緣像素,保留高于高閾值的強邊緣像素,而處于高低閾值中間的這些邊緣像素可以通過查看其8個鄰域像素,只要其中有強邊緣像素,那就可以把它當作真實的邊緣,最后連接這些強邊緣像素就形成了亞像素邊緣輪廓。
最終得到的像素輪廓和亞像素輪廓分別如圖6、圖7所示。

圖6 像素輪廓 圖7 亞像素輪廓
從兩圖對比中可以明顯看出亞像素級邊緣提取的效果遠遠好于像素級,亞像素邊緣提取精度更高,擬合效果更好,最終測量的結果也更精準。
獲取其邊緣輪廓后使用circularity_xld(SelectedXLD,Circularity)算子得到內外圓的圓度。
擬合圓算法主要有Hough變換、最小二乘法、模板匹配、小波變換等。文中采用的卡尺工具法也是用最小二乘法來擬合。由于是對軸承進行內外圓的測量,由于環境影響和本身零件的高度差,內徑邊緣有陰影部分,如果直接使用最小二乘法可能會使擬合的圓誤差較大。因此本文作者提出了一種改進的卡尺工具法來擬合圓,其主要步驟如下:
(1)得到需要擬合圓的初步位置、大致的圓心位置及半徑。
(2)在內外圓輪廓的初步位置創建卡尺工具,產生等距的矩形工具,對矩形工具中的各個像素點進行幅度值計算,由于幅度值越大,像素點的灰度值變化越劇烈,則越是邊緣點,所以獲得其中的最大值Mmax,就將該點記為有效邊緣點,其他像素點則為無效邊緣點。
(3)通過最小二乘法將第(2)步中篩選出來的有效邊緣點擬合圓。最小二乘法擬合圓的基本步驟就是首先設圓的方程為
(x-x0)2+(y-y0)2=r2
(6)
保證誤差平方和最小,其誤差平方的函數為
(7)
其中:(x0,y0)是擬合的圓心坐標;r是擬合圓的半徑;(xi,yi)是圓弧上的邊緣點的坐標;n是參與擬合的邊緣點數。將其展開并改寫為
(8)

(9)
求解上式可以得出:
(10)
(11)
(12)
其中:
最終求得最佳擬合的圓心坐標(x0,y0)、半徑r的擬合值:
(13)
此實驗中卡尺的大小也非常重要,它決定著能否準確找到輪廓上的邊緣點。卡尺的寬度和高度會影響到找到邊緣點的位置。不同卡尺大小對測量結果的影響如表2所示。

表2 不同卡尺大小的測量結果單位:mm
由表2可看出:在高精度測量過程中,卡尺的大小確實影響測量精度。最終選用的卡尺工具寬度和高度分別為30和30,此時測量的精度最高。在找到足夠多的邊緣點后通過最小二乘法擬合圓輪廓并獲取直徑。采用這種算法得到的輪廓是亞像素級,精度很高,速度也很快。卡尺工具法擬合的內外徑輪廓如圖8所示。

圖8 卡尺工具法擬合的內外徑
當使用卡尺工具法擬合好軸承內外圓輪廓后,利用相機標定好的內外參數,通過set_metrology_model_param()算子設置卡尺模型的內外參,使用get_metrology_object_result (MetrologyHandle1, 0,′all′,′result_type′,′radius′, Parameter1)算子即可直接得出內外圓的真實半徑。
經過圖像獲取、處理、分析、擬合圖像中的內外圓、尺寸測量等步驟,可以得到精準的內外圓直徑,最后通過C#編寫測量交互界面,使數據處理過程和測量結果顯示在此界面上。Halcon聯合C#窗體的測量結果如圖9所示。

圖9 測量結果顯示
軸承的應用范圍很廣泛,不同場景應用的要求也不同。實驗選用型號為688zz的全新軸承。為了分析測量精度和重復精度,將對被測軸承(外徑15.992 mm,內徑7.996 mm)進行10次測量。用平均值和標準差來驗證測量精度。測量結果如表3—表4所示。測量誤差分析如表5所示。

表3 內外徑尺寸測量值及誤差單位:mm

表4 內外圓度測量值單位:(°)

表5 測量誤差分析單位:mm
由測量數據可知:10次測量結果的平均值接近于標準值,同時標準差非常小,表明系統很穩定。10次測量的圓度基本接近于1.00,表明產品接近正圓。最后由表3的測量數據可以算出,內外徑誤差的平均值都在0.008 mm以內,完全達到國家標準。
實驗的誤差主要來源于硬件誤差和軟件誤差,其中硬件誤差主要是相機與鏡頭的選型是否完全匹配,是硬件本身誤差,這種誤差基本難以消除。而軟件誤差主要是一些算子的參數設置和相機標定帶來的誤差。相機標定時會帶來一些誤差,盡量多角度、全視野地查找標定板。在擬合圓算法時一些參數設置也會影響最終測量值,比如edges_sub_pix ()算子中第4個參數代表對邊緣點進行平滑處理的平滑系數,設置不同的值對找到的內外圓輪廓有一定影響,如果設置太大就會找不到邊緣,設置太小就會找到更多的輪廓和邊緣點,從而影響其擬合結果。卡尺工具法中卡尺的大小也會對擬合的邊緣點有一定影響,因此選用更高分辨率的相機和鏡頭,選擇合適的參數設置,產生的誤差就會減小,測量的數據更加精準。
以Halcon為平臺,使用圖像處理和卡尺工具法對軸承的內外徑以及圓度進行檢測。首先使用標定板對相機進行標定,其次使用閾值分割和邊緣檢測算子對軸承進行定位,最后使用卡尺工具法對軸承進行擬合、測量。由測量結果可知:該測量方法具有一定的實用性,基本解決了人工測量不準確、速度慢等問題,并且該方法還具有相對穩定、魯棒性高、速度快等特點。測量精度高于0.008 mm,對于688zz型號的軸承,國家普通級標準內外徑公差在0.008 mm以內,此測量方法完全滿足國家標準。