鄒哲暠,曾維友
(湖北汽車工業(yè)學(xué)院數(shù)理與光電工程學(xué)院,湖北十堰 442002)
軸承是機(jī)械設(shè)備的重要零部件之一,其應(yīng)用很廣泛,作用于各個機(jī)械零件之間,主要作用是支撐機(jī)械旋轉(zhuǎn),降低旋轉(zhuǎn)時的摩擦因數(shù),從而使機(jī)械運(yùn)轉(zhuǎn)更加快速,因此軸承內(nèi)外徑是軸承的重要參數(shù)[1]。故快速、準(zhǔn)確地檢測出軸承的內(nèi)外徑和圓度是各大軸承工廠的研究重點(diǎn)之一。
傳統(tǒng)人工測量軸承內(nèi)外徑的方法主要是借助機(jī)械式、光學(xué)式的測量儀器[2],這些測量儀器都需要人工操作,因此存在人工檢測疲勞、精度低、效率低等問題[3]。為了克服傳統(tǒng)測量的缺點(diǎn),將機(jī)器視覺應(yīng)用于軸承的內(nèi)外徑測量,具有非接觸式、精度高、效率高、穩(wěn)定性高等優(yōu)點(diǎn)[4-6]。齊魯工業(yè)大學(xué)的李龍等人[7]提出用小波變換算法提取軸承邊緣,再通過Hough變換對軸承內(nèi)外輪廓進(jìn)行提取并測量;該方法雖然好于傳統(tǒng)測量方法,但是小波變換邊緣檢測和Hough變換計算量大,易消耗內(nèi)存,從而降低了檢測速度。合肥工業(yè)大學(xué)的任永強(qiáng)等[8]提出了通過改進(jìn)的圓檢測算法來提取軸承邊緣,它主要是通過輪廓面積周長比值篩選法篩選出一些無效輪廓點(diǎn),保留軸承邊緣的有效輪廓點(diǎn),再使用最小二乘法進(jìn)行擬合,此方法雖然也能夠進(jìn)行圓擬合,但擬合效果不好,檢測精度不高,主要起定位作用。
為了提高檢測速度,檢測精度,本文作者采用了基于機(jī)器視覺的軸承內(nèi)外徑測量:首先使用閾值分割來對軸承定位,通過Canny算法進(jìn)行邊緣提取,再使用卡尺工具法來擬合軸承內(nèi)外圓,并通過標(biāo)定測量出擬合圓的真實值,最后通過C#編寫測量交互界面,實現(xiàn)測量數(shù)據(jù)的處理及顯示。
硬件系統(tǒng)主要由相機(jī)、鏡頭、光源組成,硬件系統(tǒng)的好壞直接決定了圖像的質(zhì)量和測量的精度。
相機(jī)的選型主要考慮相機(jī)的分辨率、幀率、靶面尺寸。相機(jī)的分辨率與光學(xué)傳感器的像元尺寸和所搭配的鏡頭有關(guān)。根據(jù)零件要求的檢測精度和零件尺寸大小,最終選擇海康MV-CE200-10GM型號2 000萬像素相機(jī),其分辨率為5 472像素×3 648像素,像元尺寸為2.4 μm×2.4 μm。
鏡頭的選型主要考慮鏡頭的工作距離、視野以及畸變程度。由于軸承有一定的高度并且普通的工業(yè)鏡頭有一定的畸變,所以使用普通的工業(yè)鏡頭可能會照到軸承內(nèi)壁從而對其內(nèi)徑造成一定的影響,導(dǎo)致測量不準(zhǔn)確。而遠(yuǎn)心鏡頭不僅成像質(zhì)量更高而且可以有效消除畸變。根據(jù)式(1):
(1)
其中:β為鏡頭的放大倍率;fCCD為相機(jī)的像元尺寸;fFOV為相機(jī)的視野范圍。根據(jù)計算,最終選用0.28倍的遠(yuǎn)心鏡頭。
光源的選型對成像質(zhì)量以及穩(wěn)定性有重要影響??紤]到會有外界自然光的影響,首先要做遮光處理,然后主要是測量軸承的內(nèi)外徑,需要它的輪廓即可,所以最終選擇穩(wěn)定的背光源。背光源可以最好地體現(xiàn)出物體的輪廓,提高對比度。
根據(jù)以上硬件選型,再結(jié)合控制器、PC共同構(gòu)成硬件系統(tǒng)如圖1所示。利用此硬件系統(tǒng)得到的圖像和實物如圖2所示。
圖1 硬件系統(tǒng)
圖2 軸承實物(a)和實時圖像(b)
利用機(jī)器視覺進(jìn)行圖像處理、擬合、測量的基本流程是圖像采集,閾值化處理,圖像預(yù)處理,邊緣提取,調(diào)用Halcon中的卡尺工具算子進(jìn)行擬合、測量、顯示。測量流程如圖3所示。
圖3 圖像處理的基本流程
相機(jī)標(biāo)定主要是為了得到攝像機(jī)的內(nèi)參和外參姿態(tài)。內(nèi)參是從相機(jī)坐標(biāo)系轉(zhuǎn)到像素坐標(biāo)系,外參姿態(tài)是從世界坐標(biāo)系轉(zhuǎn)到相機(jī)坐標(biāo)系[9]。相機(jī)標(biāo)定最終目的就是把像素坐標(biāo)轉(zhuǎn)換成實際坐標(biāo),得到軸承內(nèi)外徑的真實值。因此標(biāo)定精度對于測量精度有一定影響。世界坐標(biāo)系(X,Y,Z)與像素坐標(biāo)系(u,v)轉(zhuǎn)化關(guān)系為
(2)
其中:f為相機(jī)的焦距;dx、dy分別為像素在X軸、Y軸方向上的物理距離;u0、v0為圖像原點(diǎn)的坐標(biāo);R為旋轉(zhuǎn)矩陣;T為平移矩陣。
Halcon相機(jī)標(biāo)定主要是通過圓形陣列標(biāo)定板來實現(xiàn)的。文中采用30 mm×30 mm大小、圖像陣列為9×9的圓心陣列形標(biāo)定模板。生成標(biāo)定文件,通過Halcon中的標(biāo)定助手,對標(biāo)定板進(jìn)行旋轉(zhuǎn)、平移、傾斜式的拍照,一般需要10~15張標(biāo)定圖像。最終得到的相機(jī)內(nèi)參和外參如表1所示,標(biāo)定板圖像如圖4所示。
表1 相機(jī)內(nèi)外參數(shù)
圖4 標(biāo)定板圖像
利用相機(jī)得到圖像后,需要對圖像進(jìn)行預(yù)處理,達(dá)到定位的效果,采用Blob分析對軸承進(jìn)行閾值分割。常用的閾值分割有全局閾值分割、自動全局閾值分割、動態(tài)閾值分割等。文中使用threshold (Image, Region, 0, 90)算子對圖像進(jìn)行閾值分割,凸顯出圖像所在的區(qū)域,方便后續(xù)的邊緣提取。經(jīng)過不同閾值分割方法和不同閾值處理后的圖像如圖5所示。
圖5 不同閾值分割方法圖像
通過上述4幅圖像可以看出:使用全局閾值分割并把閾值設(shè)為90時,對軸承的分割效果最為明顯,更加方便后續(xù)的圖像處理。
像素是一幅圖像的最小單位。實驗所用相機(jī)的像元尺寸為2.4 μm×2.4 μm,因此得到的圖像兩個像素之間的距離大約為2.4 μm,宏觀上可以把它們看作是連在一起的,但在微觀上,它們之間還有無限的更小的東西存在,這個更小的東西稱為“亞像素”[10]。
在對圖像進(jìn)行閾值分割后,需要提取圖像的內(nèi)外徑邊緣。首先,采用像素級方式對邊緣進(jìn)行提取,利用fill_up(Regions, RegionFillUp)算子填充整個區(qū)域,得到外徑輪廓,然后使用difference(RegionTrans,Regions,RegionDifference)算子得到內(nèi)徑輪廓。其次,采用亞像素級別的方式進(jìn)行邊緣提取,利用edges_sub_pix(Image, Edges,′canny′, 5, 50, 100)算子實現(xiàn)對軸承內(nèi)外徑的邊緣提取。該算子主要通過Canny算法對邊緣進(jìn)行提取。Canny算法是對邊緣梯度進(jìn)行二階求導(dǎo)的一個方法,它滿足三大最優(yōu)邊緣檢測的準(zhǔn)則:(1)最優(yōu)檢測,算法需要精確找到盡可能多的邊緣,盡可能減少誤檢和漏檢;(2)最優(yōu)定位準(zhǔn)則,算法檢測的邊緣點(diǎn)應(yīng)精確地定位在邊緣的中心;(3)檢測點(diǎn)與邊緣點(diǎn)一一對應(yīng),不會產(chǎn)生過多的偽邊緣[11]。因此該檢測算法的精度和速度都很好,使用該算法可以快速、精確地提取所需要的邊緣輪廓。Canny算法的一般步驟為:
(1)用高斯濾波來平滑圖像,以達(dá)到去除噪聲的目的。二維高斯濾波的函數(shù)為
(3)
其中:σ是標(biāo)準(zhǔn)差,它控制著圖像的平滑程度。高斯濾波的主要作用就是去除噪聲。因為噪聲和邊緣一樣都屬于高頻信號,很容易被識別為偽邊緣。應(yīng)用高斯濾波去除噪聲,降低偽邊緣的識別。但是由于圖像邊緣信息也是高頻信號,高斯濾波的σ選擇很重要,過小的σ會使噪聲去除不干凈,過大的σ會使一些弱邊緣檢測不到。
(2)計算梯度幅值和方向
(4)
(5)
其中:G為梯度強(qiáng)度;θ為梯度方向。
(3)非極大值抑制
非極大值抑制就是將邊緣變得更加清晰。它只保留每個像素點(diǎn)梯度上的極大值,這樣就能使邊緣寬度大大減少,消除許多虛假的邊緣點(diǎn)。
(4)雙閾值檢測和連接邊緣
在非極大值抑制之后,剩余的邊緣像素可以更精準(zhǔn)地表示實際的邊緣。然而,仍然存在一些由噪聲和顏色變化引起的邊緣像素。為了解決這一問題,必須要用雙閾值檢測,消除低于低閾值的弱邊緣像素,保留高于高閾值的強(qiáng)邊緣像素,而處于高低閾值中間的這些邊緣像素可以通過查看其8個鄰域像素,只要其中有強(qiáng)邊緣像素,那就可以把它當(dāng)作真實的邊緣,最后連接這些強(qiáng)邊緣像素就形成了亞像素邊緣輪廓。
最終得到的像素輪廓和亞像素輪廓分別如圖6、圖7所示。
圖6 像素輪廓 圖7 亞像素輪廓
從兩圖對比中可以明顯看出亞像素級邊緣提取的效果遠(yuǎn)遠(yuǎn)好于像素級,亞像素邊緣提取精度更高,擬合效果更好,最終測量的結(jié)果也更精準(zhǔn)。
獲取其邊緣輪廓后使用circularity_xld(SelectedXLD,Circularity)算子得到內(nèi)外圓的圓度。
擬合圓算法主要有Hough變換、最小二乘法、模板匹配、小波變換等。文中采用的卡尺工具法也是用最小二乘法來擬合。由于是對軸承進(jìn)行內(nèi)外圓的測量,由于環(huán)境影響和本身零件的高度差,內(nèi)徑邊緣有陰影部分,如果直接使用最小二乘法可能會使擬合的圓誤差較大。因此本文作者提出了一種改進(jìn)的卡尺工具法來擬合圓,其主要步驟如下:
(1)得到需要擬合圓的初步位置、大致的圓心位置及半徑。
(2)在內(nèi)外圓輪廓的初步位置創(chuàng)建卡尺工具,產(chǎn)生等距的矩形工具,對矩形工具中的各個像素點(diǎn)進(jìn)行幅度值計算,由于幅度值越大,像素點(diǎn)的灰度值變化越劇烈,則越是邊緣點(diǎn),所以獲得其中的最大值Mmax,就將該點(diǎn)記為有效邊緣點(diǎn),其他像素點(diǎn)則為無效邊緣點(diǎn)。
(3)通過最小二乘法將第(2)步中篩選出來的有效邊緣點(diǎn)擬合圓。最小二乘法擬合圓的基本步驟就是首先設(shè)圓的方程為
(x-x0)2+(y-y0)2=r2
(6)
保證誤差平方和最小,其誤差平方的函數(shù)為
(7)
其中:(x0,y0)是擬合的圓心坐標(biāo);r是擬合圓的半徑;(xi,yi)是圓弧上的邊緣點(diǎn)的坐標(biāo);n是參與擬合的邊緣點(diǎn)數(shù)。將其展開并改寫為
(8)
(9)
求解上式可以得出:
(10)
(11)
(12)
其中:
最終求得最佳擬合的圓心坐標(biāo)(x0,y0)、半徑r的擬合值:
(13)
此實驗中卡尺的大小也非常重要,它決定著能否準(zhǔn)確找到輪廓上的邊緣點(diǎn)??ǔ叩膶挾群透叨葧绊懙秸业竭吘夵c(diǎn)的位置。不同卡尺大小對測量結(jié)果的影響如表2所示。
表2 不同卡尺大小的測量結(jié)果單位:mm
由表2可看出:在高精度測量過程中,卡尺的大小確實影響測量精度。最終選用的卡尺工具寬度和高度分別為30和30,此時測量的精度最高。在找到足夠多的邊緣點(diǎn)后通過最小二乘法擬合圓輪廓并獲取直徑。采用這種算法得到的輪廓是亞像素級,精度很高,速度也很快??ǔ吖ぞ叻〝M合的內(nèi)外徑輪廓如圖8所示。
圖8 卡尺工具法擬合的內(nèi)外徑
當(dāng)使用卡尺工具法擬合好軸承內(nèi)外圓輪廓后,利用相機(jī)標(biāo)定好的內(nèi)外參數(shù),通過set_metrology_model_param()算子設(shè)置卡尺模型的內(nèi)外參,使用get_metrology_object_result (MetrologyHandle1, 0,′all′,′result_type′,′radius′, Parameter1)算子即可直接得出內(nèi)外圓的真實半徑。
經(jīng)過圖像獲取、處理、分析、擬合圖像中的內(nèi)外圓、尺寸測量等步驟,可以得到精準(zhǔn)的內(nèi)外圓直徑,最后通過C#編寫測量交互界面,使數(shù)據(jù)處理過程和測量結(jié)果顯示在此界面上。Halcon聯(lián)合C#窗體的測量結(jié)果如圖9所示。
圖9 測量結(jié)果顯示
軸承的應(yīng)用范圍很廣泛,不同場景應(yīng)用的要求也不同。實驗選用型號為688zz的全新軸承。為了分析測量精度和重復(fù)精度,將對被測軸承(外徑15.992 mm,內(nèi)徑7.996 mm)進(jìn)行10次測量。用平均值和標(biāo)準(zhǔn)差來驗證測量精度。測量結(jié)果如表3—表4所示。測量誤差分析如表5所示。
表3 內(nèi)外徑尺寸測量值及誤差單位:mm
表4 內(nèi)外圓度測量值單位:(°)
表5 測量誤差分析單位:mm
由測量數(shù)據(jù)可知:10次測量結(jié)果的平均值接近于標(biāo)準(zhǔn)值,同時標(biāo)準(zhǔn)差非常小,表明系統(tǒng)很穩(wěn)定。10次測量的圓度基本接近于1.00,表明產(chǎn)品接近正圓。最后由表3的測量數(shù)據(jù)可以算出,內(nèi)外徑誤差的平均值都在0.008 mm以內(nèi),完全達(dá)到國家標(biāo)準(zhǔn)。
實驗的誤差主要來源于硬件誤差和軟件誤差,其中硬件誤差主要是相機(jī)與鏡頭的選型是否完全匹配,是硬件本身誤差,這種誤差基本難以消除。而軟件誤差主要是一些算子的參數(shù)設(shè)置和相機(jī)標(biāo)定帶來的誤差。相機(jī)標(biāo)定時會帶來一些誤差,盡量多角度、全視野地查找標(biāo)定板。在擬合圓算法時一些參數(shù)設(shè)置也會影響最終測量值,比如edges_sub_pix ()算子中第4個參數(shù)代表對邊緣點(diǎn)進(jìn)行平滑處理的平滑系數(shù),設(shè)置不同的值對找到的內(nèi)外圓輪廓有一定影響,如果設(shè)置太大就會找不到邊緣,設(shè)置太小就會找到更多的輪廓和邊緣點(diǎn),從而影響其擬合結(jié)果??ǔ吖ぞ叻ㄖ锌ǔ叩拇笮∫矔M合的邊緣點(diǎn)有一定影響,因此選用更高分辨率的相機(jī)和鏡頭,選擇合適的參數(shù)設(shè)置,產(chǎn)生的誤差就會減小,測量的數(shù)據(jù)更加精準(zhǔn)。
以Halcon為平臺,使用圖像處理和卡尺工具法對軸承的內(nèi)外徑以及圓度進(jìn)行檢測。首先使用標(biāo)定板對相機(jī)進(jìn)行標(biāo)定,其次使用閾值分割和邊緣檢測算子對軸承進(jìn)行定位,最后使用卡尺工具法對軸承進(jìn)行擬合、測量。由測量結(jié)果可知:該測量方法具有一定的實用性,基本解決了人工測量不準(zhǔn)確、速度慢等問題,并且該方法還具有相對穩(wěn)定、魯棒性高、速度快等特點(diǎn)。測量精度高于0.008 mm,對于688zz型號的軸承,國家普通級標(biāo)準(zhǔn)內(nèi)外徑公差在0.008 mm以內(nèi),此測量方法完全滿足國家標(biāo)準(zhǔn)。