余躍杭,呂文閣
(廣東工業(yè)大學(xué)機(jī)電學(xué)院,廣東廣州 510006)
O型密封件是一種最常見(jiàn)的密封件,具有結(jié)構(gòu)簡(jiǎn)單,成本低廉、密封性能良好和安裝使用方便等特點(diǎn)[1]。O型密封件廣泛應(yīng)用于各行各業(yè)的各種大型機(jī)器設(shè)備中,其尺寸是否標(biāo)準(zhǔn)對(duì)于設(shè)備的密封性能有著巨大影響。
目前,國(guó)內(nèi)密封件生產(chǎn)企業(yè)主要依靠傳統(tǒng)人工的辦法,使用目測(cè)及利用離線式尺寸量規(guī)和環(huán)規(guī)儀等測(cè)量工具對(duì)密封件進(jìn)行檢測(cè)[2-3]。人工檢測(cè)方式不僅需要大規(guī)模的勞動(dòng)力,在檢測(cè)過(guò)程中,由于工作強(qiáng)度大及時(shí)間長(zhǎng),容易產(chǎn)生視覺(jué)疲勞,很難做到對(duì)產(chǎn)品質(zhì)量的一致要求和嚴(yán)格全面把關(guān)。為此,本文提出采用基于機(jī)器視覺(jué)的密封件檢測(cè)系統(tǒng)進(jìn)行檢測(cè),采用機(jī)器視覺(jué)檢測(cè)的方法,能有效提高檢測(cè)效率與檢測(cè)精度。
系統(tǒng)的硬件設(shè)備主要分為以下4個(gè)部分:照明、圖像采集、圖像處理和機(jī)械執(zhí)行部件。
照明部分采用的是暗室背光照明模型,暗室背光照明能獲得高對(duì)比度的圖像,使得背景與目標(biāo)產(chǎn)生很大的反差,對(duì)接下來(lái)的圖像采集和圖像分割至關(guān)重要。光源則選擇同軸光源,使得輪廓能清晰、準(zhǔn)確的被采集。
圖像采集部分主要由CCD相機(jī)與鏡頭組成。相機(jī)與鏡頭的選擇,則需要考慮視覺(jué)系統(tǒng)的精度要求。本文中的密封圈外徑尺寸為60 mm,要求檢測(cè)精度達(dá)到0.1 mm,檢測(cè)速度達(dá)到200 ms,因此圖像采集的速度必須被控制在100 ms以?xún)?nèi)。根據(jù)以上要求,按照成像原理的方法進(jìn)行計(jì)算[3]。系統(tǒng)采集部分選用德國(guó)Basler公司的acA系列Basler-acA1600-20gm工業(yè)相機(jī),鏡頭則選擇可調(diào)焦距f=25 mm的鏡頭,最小物距u=250 mm。相機(jī)的CCD芯片尺寸短邊h=6.6 mm,分辨率達(dá)到了1628×1236。求得最小視野v=66 mm,工業(yè)相機(jī)精度66/1236=0.05 mm。本方案論證檢測(cè)要求精度為0.1 mm,故所選取工業(yè)相機(jī)與鏡頭均符合檢測(cè)要求。
圖像處理包括圖像分割與圖像處理算法,是本文的主要內(nèi)容,將在后面詳解。
圖1 密封圈原圖像
機(jī)械執(zhí)行機(jī)構(gòu)主要根據(jù)圖像處理的結(jié)果,完成對(duì)次品的篩選、擊出等,本文不做詳細(xì)討論。圖1為本系統(tǒng)采集到的密封圈的原圖像。
圖2 圖像處理流程
檢測(cè)密封圈時(shí),首先根據(jù)采集到的原圖像,對(duì)原圖像進(jìn)行閾值分割,獲得二值化圖像。然后運(yùn)用圖像處理算法,對(duì)已經(jīng)二值化的圖像進(jìn)行機(jī)器視覺(jué)算法進(jìn)一步處理,找到圖像的內(nèi)圓與外圓,分別算出其尺寸。對(duì)于符合尺寸要求的密封圈,將進(jìn)行缺陷檢測(cè),對(duì)于不符合尺寸要求的密封圈,則直接剔除不良品。圖2是檢測(cè)的步驟。
閾值分割是機(jī)器視覺(jué)圖像處理中很重要的一步,是圖像分析和視覺(jué)系統(tǒng)的一個(gè)重要的組成部分。閾值分割的好壞,直接決定了圖像特征提取、視覺(jué)分析算法的成功與否。閾值分割是指根據(jù)圖像的灰度和色彩的信息,把圖像劃分出幾個(gè)區(qū)域,劃分后的同一個(gè)區(qū)域中,圖像應(yīng)該有相似性或一致性,而不同的區(qū)域則應(yīng)該有明顯的差別。閾值分割有直方圖分割法、迭代法和最大類(lèi)間分差法。本文主要運(yùn)用的是最大類(lèi)間分差法(Otsu分割法)將密封圈與背景分割。
設(shè)圖像A中總共存在m個(gè)類(lèi),那么應(yīng)該有m-1個(gè)閾值將圖像分成m個(gè)類(lèi)。將這m-1個(gè)類(lèi)表示成:
并將類(lèi)間方差定義為:
其中:
使得σBC取得最大值的一組閾值就是最優(yōu)閾值。
Otsu算法是一種動(dòng)態(tài)閾值分割的算法,針對(duì)本文密封圈圖像,只需要一個(gè)動(dòng)態(tài)閾值,就能夠很好的分割出密封圈的環(huán)面與背景圖像。算法的實(shí)現(xiàn)過(guò)程如下:
(1)計(jì)算出整幅圖像的平均灰度;
(2)計(jì)算背景像素在整幅圖像中所占的比例和目標(biāo)像素在整幅圖像中所占的比例;
(3)計(jì)算背景平均灰度值和目標(biāo)平均灰度值;
(4)根據(jù)上面的算法求出最大值,該最大值就是最佳分割閾值T;
(5)根據(jù)閾值T實(shí)現(xiàn)圖像的分割。
實(shí)驗(yàn)結(jié)果如圖3所示。
圖3 閾值分割
找出圖像的邊緣之后,就可以對(duì)密封圈的內(nèi)外圓尺寸進(jìn)行檢測(cè)。對(duì)圓尺寸的檢測(cè),首先要找出內(nèi)外圓,才能對(duì)其進(jìn)行檢測(cè)。傳統(tǒng)的檢測(cè)方法有重心法、邊緣掃描法和Hough變換圓檢測(cè)法等。這些檢測(cè)方法各有各自的優(yōu)點(diǎn),精度也較高,但是缺點(diǎn)也明顯,都需要對(duì)圖像中的每一點(diǎn)像素進(jìn)行掃描,而且還重復(fù)多次的掃描,效率低下。再者由于算法的原因,會(huì)產(chǎn)生大量的浮點(diǎn)運(yùn)算,而計(jì)算機(jī)的浮點(diǎn)運(yùn)算的速度遠(yuǎn)遠(yuǎn)不及整形運(yùn)算。因此,本文用于檢測(cè)圓的方法是基于Bresenham算法思想的一種改進(jìn)型圓檢測(cè)算法。
Bresenham算法是關(guān)于計(jì)算機(jī)圖形學(xué)特性而設(shè)計(jì)出來(lái)的算法,因?yàn)轱@示器(屏幕或打印機(jī))系由像素構(gòu)成,因此在求直線各點(diǎn)的過(guò)程中可以全部以整數(shù)來(lái)運(yùn)算,計(jì)算速度得以提高。
對(duì)于人們看到顯示器屏幕上的計(jì)算機(jī)圖像來(lái)說(shuō),直線或圓都是模擬出來(lái)的,是基于像素的形式顯示的。同樣的,相機(jī)采集到的圖像,為離散的二維像素的集合,類(lèi)似于圖像光柵化,要在光柵網(wǎng)格中離散的點(diǎn)繪制直線,Bresenham算法是目前應(yīng)用較為廣泛的直線生產(chǎn)算法,生成直線的計(jì)算效率和連續(xù)性都較為理想[5]。
具體算法如圖4所示。
圖4 Bresenham畫(huà)直線算法
首先畫(huà)一個(gè)起點(diǎn)P(xi,yi)。
畫(huà)下一個(gè)點(diǎn),x坐標(biāo)增加一個(gè)像素單位。如果x到圖像的最右端,則畫(huà)線完成,否則繼續(xù)尋找下一個(gè)點(diǎn)。如圖4,用網(wǎng)格線的交點(diǎn)模擬像素點(diǎn),由圖知道要畫(huà)的點(diǎn)要么為相交點(diǎn)的上點(diǎn),要么為下點(diǎn)。若直線與網(wǎng)格的截距d的坐標(biāo)大于(yi+yi+1)/2則選擇上鄰點(diǎn),否則選擇下鄰點(diǎn)。
繼續(xù)第二步,直至x到達(dá)最右端,畫(huà)線結(jié)束。
可以看到,在畫(huà)線的循環(huán)中,這個(gè)算法只用到了整數(shù)的加法,所以非常高效。
3.1.1 Bresenham算法原理[6]
如圖5,由于像素素坐標(biāo)的整數(shù)性,數(shù)字點(diǎn)(x,y)與所取像素點(diǎn)(x,y+ε)間會(huì)引起誤差,這里用ε表示累加誤差。圖5中,(x,y+ε)的下一個(gè)點(diǎn)為(x,y+ε+m),可以看出,當(dāng)(ε+m)<0.5時(shí),繪制(x+1,y)點(diǎn),否則繪制(x+1,y+1)點(diǎn)。每次繪制后,ε將更新為新值:
當(dāng)(ε+m)<0.5時(shí),ε=ε+m;
否則,ε=ε+m-1。
將上面的式子分別乘以d x,用ξ代替ε·d x,
而m·d x=d y,則可以用下式表示:
當(dāng)(ε+m)<0.5時(shí),ξ= ξ+d y
否則,ξ= ξ+d y-d x。
此時(shí),運(yùn)算已經(jīng)全部變?yōu)檎麛?shù)的運(yùn)算了。
圖5 Bresenham算法原理
3.1.2 各象限中的Bresenham算法
在算法的實(shí)際實(shí)現(xiàn)過(guò)程中,可能存在著d y>d x這種情況,便得到了不想要的結(jié)果。這是由于只考慮到了d x>d y,且d x、d y都為正的情況。因此,需根據(jù)不同的情況對(duì)算法進(jìn)行改進(jìn)。
如圖6,當(dāng)使用Bresenham劃線路徑掃描時(shí),線段的方向可以劃分出8種,將二維坐標(biāo)系劃分出8個(gè)不同的區(qū)域,由圖中所示的區(qū)域位置決定從(x,y)到(x+1,y+1)如何變化。
容易得出,當(dāng)線段處于①、④、⑤、⑧區(qū)域時(shí),可以用以|d x|和|d y|代替前面公式中的d x和d y,當(dāng)線段處于②、③、⑥、⑦區(qū)時(shí),將公式中的|△x|和|△y|對(duì)換,則上面的兩個(gè)公式仍然可用。
圖6 Bresenham在各個(gè)象限中的情況
基于Bresenham算法在圖像中快速描繪直線的特性,若利用其描繪直線的思想在圖像中沿著某個(gè)方向搜索點(diǎn),能大大提高其搜索的速度。按照其步驟,首先是要找到一個(gè)起點(diǎn),作為畫(huà)線的起點(diǎn)。對(duì)于本文中的密封圈檢測(cè)來(lái)說(shuō),想要搜索到內(nèi)圓和外圓,必須先找到一個(gè)位于內(nèi)圓內(nèi)的一個(gè)點(diǎn)。對(duì)于本系統(tǒng)所采用的相機(jī)和鏡頭的組合,密封圈在圖像中大概處于最中間的位置,因此將以下面的方法來(lái)確定出起點(diǎn)的位置。
(1)畫(huà)直線:在圖像中的x坐標(biāo)和y坐標(biāo)的三分之一處,分別畫(huà)一條平行于y軸和x軸的直線。設(shè)密封圈圖像的橫坐標(biāo)有a個(gè)像素,縱坐標(biāo)有b個(gè)像素,于是,分別畫(huà)出兩條直線:
(2)判斷交點(diǎn):對(duì)于取出邊緣后的圖像來(lái)說(shuō),只需找出直線與邊緣的交點(diǎn),便是與內(nèi)外圓的交點(diǎn)。在尋找前,先創(chuàng)建一個(gè)動(dòng)態(tài)數(shù)組。掃描過(guò)程中,將與前面的像素相比,像素值改變了的點(diǎn)保存到動(dòng)態(tài)數(shù)組里。最后,取出數(shù)組的首位兩個(gè)點(diǎn)。最后取出來(lái)了A、B、C、D四個(gè)邊緣點(diǎn)。
(3)分別以線段AB的中點(diǎn)和線段CD的中點(diǎn)畫(huà)中垂線,
最后用上面的公式,求出交點(diǎn)O,作為Bresenham的畫(huà)線起點(diǎn)。畫(huà)出的這個(gè)O點(diǎn),是可以確定是處于圓內(nèi)的某個(gè)點(diǎn)。如圖7所示,A、B、C、D分別為兩條線與輪廓的交點(diǎn),分別以AB和CD的中點(diǎn)畫(huà)一條中垂線,兩條中垂線的交點(diǎn)O即可作為畫(huà)線的起點(diǎn)。
確定掃描起點(diǎn)后,運(yùn)用Bresenham算法開(kāi)始對(duì)二值化圖像進(jìn)行掃描:
(1)分別以斜率為tan0°和tan180°沿兩個(gè)方向掃描,掃描的過(guò)程中,要根據(jù)不同的區(qū)域區(qū)別對(duì)待。創(chuàng)建數(shù)組,將掃描到的點(diǎn)分別記錄下其第一次掃到邊緣的像素值坐標(biāo),這兩個(gè)坐標(biāo)值是內(nèi)圓上的點(diǎn)。再記錄下第二次掃到邊緣的像素值坐標(biāo),這兩個(gè)坐標(biāo)值為外圓上的點(diǎn)。
(2)用坐標(biāo)距離公式分別算出內(nèi)圓兩個(gè)點(diǎn)之間的距離和外圓兩個(gè)點(diǎn)之間的距離,得出內(nèi)圓直徑和外圓直徑,并且求出圓心。
(3)以斜率tan1°和斜率tan181°掃描,類(lèi)似第一步和第二步的方法,求出內(nèi)外圓的直徑,此后每次增加一度的斜率掃描,總共循環(huán)180次。
(4)將最后得出的內(nèi)圓直徑180個(gè)數(shù)據(jù)與外圓直徑的180個(gè)數(shù)據(jù)分別求平均值,得出內(nèi)圓平均半徑與外圓平均半徑,并將圓心坐標(biāo)求平均。
(5)將得出的數(shù)據(jù)與標(biāo)準(zhǔn)數(shù)據(jù)對(duì)比,若超出標(biāo)準(zhǔn)范圍,則鑒定為不良品,否則為合格品。
圖7 確定Bresenham掃描直線的起點(diǎn)
在尺寸檢測(cè)正常的前提下,進(jìn)一步對(duì)產(chǎn)品表面缺陷進(jìn)行檢測(cè)。一般來(lái)說(shuō),密封圈的缺陷主要為磨損缺陷,即外圓或者內(nèi)圓上面出現(xiàn)了凹槽。
凹槽的檢測(cè)可以使用等分圓的辦法[7]。將圓等分成n份,這時(shí)候?qū)⒋龣z測(cè)的圖像與標(biāo)準(zhǔn)密封圈圖像比較,若為合格品,內(nèi)外圓之間的圓環(huán)半徑方向的像素?cái)?shù)應(yīng)該與標(biāo)準(zhǔn)件一樣或接近,若有較大的偏差,則為不良品。具體步驟如下:
(1)以圓心為中心將圓n等分;
(2)用Bresenham直線掃描對(duì)外環(huán)進(jìn)行掃描。記錄每一部分像素值為1的像素的個(gè)數(shù);
(3)設(shè)置一個(gè)合理的閾值,將掃描到的每一份像素點(diǎn)與標(biāo)準(zhǔn)件的圓環(huán)像素點(diǎn)進(jìn)行比較,若超出閾值范圍,則斷定為不良品。
對(duì)系統(tǒng)采集到的標(biāo)準(zhǔn)密封圈圖像進(jìn)行處理,經(jīng)過(guò)閾值分割與尺寸檢測(cè)、缺陷檢測(cè),系統(tǒng)均能正確的做出判斷。
本文介紹了一種基于機(jī)器視覺(jué)密封圈檢測(cè)系統(tǒng),實(shí)現(xiàn)了密封圈的實(shí)時(shí)在線檢測(cè)過(guò)程。該系統(tǒng)的圖像處理部分采用了基于Bresenham在屏幕中劃線的路徑的思想,并將其運(yùn)用于密封圈的數(shù)字圖像中的輪廓尋找。利用該方法,有效提高了密封圈檢測(cè)的速度與精度。
[1]肖鋒,王和順.基于圖像的O型密封圈尺寸檢測(cè)方法[J].潤(rùn)滑與密封,2014,39(1):93-96.
[2]周江,任錕,帥英琦.基于機(jī)器視覺(jué)的磁鋼片缺陷檢測(cè)研究[J].機(jī)電工程,2014(12):1541-1546.
[3]利新琴.基于機(jī)器視覺(jué)的密封橡膠圈缺陷檢測(cè)的研究[D].合肥:合肥工業(yè)大學(xué),2009.
[4]曹亮.基于Otsu理論的圖像分割算法研究[D].武漢:武漢理工大學(xué),2008.
[5]程滔,郭雅琳,李正平.Bresenham算法及其在遙感影像圖形繪制中的應(yīng)用[J].合肥工業(yè)大學(xué)學(xué)報(bào),2014,37(9):1072-1075.
[6]孫云.一種快速的Bresenham直線生成改進(jìn)算法[J].計(jì)算機(jī)光盤(pán)軟件與應(yīng)用,2014(3):108-110.
[7]楊杰.基于機(jī)器視覺(jué)的瓶口缺陷檢測(cè)算法研究及系統(tǒng)開(kāi)發(fā)[D].廣州:廣東工業(yè)大學(xué),2012.