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