本發(fā)明屬于機(jī)器視覺圖像處理技術(shù)領(lǐng)域,具體涉及在工業(yè)場景下,對圓形物體的精確檢測和定位的方法。
背景技術(shù):
圖像處理技術(shù)通常是一個(gè)視覺系統(tǒng)的核心部分,本發(fā)明所涉及的邊緣點(diǎn)提取以及橢圓檢測均為圖像處理領(lǐng)域最為重要的研究方法之一。
當(dāng)人們觀察一個(gè)物體時(shí),所感知到邊緣通常是顏色有明顯變化的地方,而在圖像中對這種變化進(jìn)行數(shù)學(xué)表示的就是邊緣檢測算子。其中比較常用的算子有Roberts算子、Sobel算子、Prewitt算子、Laplacian算子以及Canny算子等。這些傳統(tǒng)的基于邊緣檢測算子的算法雖然能夠提取出邊緣的像素,但同時(shí)會將很多噪聲點(diǎn)誤認(rèn)為是邊緣。尤其當(dāng)物體的厚度不可忽略時(shí),厚度因素會導(dǎo)致物體在邊緣的提取過程中加入很多的噪點(diǎn),使檢測出的物體形狀在傾斜的厚度一側(cè)向外扭曲。
Hough變換是由Paul Hough于1962年提出的,實(shí)現(xiàn)了一種從圖像空間到參數(shù)空間的映射關(guān)系。其核心思想在于點(diǎn)與線的對偶性,圖像空間中共線的點(diǎn)可以與參數(shù)空間中交于同一點(diǎn)的線一一對應(yīng)。Hough變換被廣泛用于線段、圓、橢圓等目標(biāo)的檢測中,各種新的改進(jìn)算法也陸續(xù)提出。針對于橢圓檢測,較為經(jīng)典的有5點(diǎn)Hough變換檢測,隨機(jī)Hough變換檢測等方法。
為縮小參數(shù)空間的維度,提出了一種基于橢圓三點(diǎn)(長軸2端點(diǎn)和橢圓上其它任意1點(diǎn))確定法的1維度Hough變換檢測法。
在工業(yè)應(yīng)用中,單目2D相機(jī)由于成本低廉和處理快速等優(yōu)勢而被廣泛應(yīng)用。工業(yè)環(huán)境下為進(jìn)行物體抓取,可將單目2D相機(jī)固定在機(jī)械臂上,相機(jī)隨機(jī)械臂一起移動,在物體正上方拍攝圖像。工業(yè)環(huán)境中圓形零件使用非常普遍,但是由于小孔成像原理以及圓形物體的對稱性,在圓形物體上方對物體拍攝后,繞X、Y軸的旋轉(zhuǎn)角為(α,β)和(-α,-β)在圖像中形成的橢圓輪廓是一樣的,這就造成了物體定位的旋轉(zhuǎn)鏡像問題。同時(shí)由于單目2D相機(jī)不能獲取深度信息,在對圓形物體的旋轉(zhuǎn)角大小計(jì)算時(shí),利用圓形物體在圖像中檢測出的橢圓信息,計(jì)算先繞X軸旋轉(zhuǎn)角絕對值再繞Y軸旋轉(zhuǎn)角絕對值(其中a為長半軸,c為橢圓中心沿Y軸方向到橢圓點(diǎn)的距離,d為橢圓中心沿X軸方向到橢圓點(diǎn)的距離)。但由于y=cos-1(x)函數(shù)曲線在x=1附近比較陡峭,當(dāng)或接近1時(shí),即使檢測到的c、d誤差較小,計(jì)算出的旋轉(zhuǎn)角的誤差也會很大。
技術(shù)實(shí)現(xiàn)要素:
為了實(shí)現(xiàn)對帶厚度干擾和鏡像問題的圓形物體的精確定位,本發(fā)明提供了一種基于邊緣點(diǎn)密度去除厚度噪點(diǎn)的方法,以消除厚度噪點(diǎn)對圓形物體的干擾,同時(shí)利用噪點(diǎn)中心位置關(guān)系解決旋轉(zhuǎn)鏡像問題,準(zhǔn)確計(jì)算出物體旋轉(zhuǎn)的方向;針對于物體中間帶有突出的圓柱的情況,利用中心偏移算法計(jì)算物體旋轉(zhuǎn)角的大小。
本發(fā)明提出的帶厚度干擾的圓形物體的精確定位方法,具體步驟為:
(1)基于邊緣點(diǎn)密度提取去除厚度產(chǎn)生的噪點(diǎn)后的邊緣輪廓;
(2)基于厚度噪點(diǎn)中心的旋轉(zhuǎn)鏡像處理;
(3)基于中心點(diǎn)偏移的目標(biāo)精確定位。
其中,步驟(1)所述的基于邊緣點(diǎn)密度提取去除厚度產(chǎn)生的噪點(diǎn)后的邊緣輪廓,使用Canny算子提取輪廓,在低閾值情況下提取出的輪廓明顯可以看到由于厚度產(chǎn)生的雙邊或多邊,所以由零件厚度產(chǎn)生的噪聲點(diǎn),其周圍的邊緣點(diǎn)密度較大。利用這一特性,遍歷整個(gè)輪廓曲線上的點(diǎn),即可判斷是否是噪聲點(diǎn)。具體流程如下:
(a)使用高閾值Canny算子(即使用otsu自適應(yīng)閾值算法,計(jì)算出Canny的2個(gè)閾值threshold_1、threshold_2)提取邊緣像素點(diǎn),對邊緣像素點(diǎn)進(jìn)行連接,提取出連續(xù)的輪廓曲線;
(b)使用低閾值Canny算子(即在使用otsu自適應(yīng)閾值算法計(jì)算的閾值參數(shù)基礎(chǔ)上,乘以一個(gè)[0.2,0.5]之間的比例因子)再作邊緣點(diǎn)檢測;
(c)遍歷(a)中提取到的每個(gè)輪廓曲線的點(diǎn)p1,p2,…,pn,統(tǒng)計(jì)pi(i=1,…n)的周圍k×k范圍的邊緣點(diǎn)的個(gè)數(shù)di,作為pi的邊緣點(diǎn)密度的計(jì)量值(其中,k為預(yù)設(shè)的參數(shù));
(d)根據(jù)每個(gè)輪廓點(diǎn)pi(i=1,…n)的邊緣點(diǎn)密度di的大小,對該輪廓上的所有像素點(diǎn)進(jìn)行升序排序;
(e)找到邊緣點(diǎn)密度d>=DensityThresh的第一個(gè)輪廓點(diǎn)的序號j,取rate=MIN(j/
size,RateThresh),將排序后的尾部rate比例的輪廓點(diǎn)作為噪聲點(diǎn)刪去(其中,DensityThresh為預(yù)設(shè)的密度閾值參數(shù),size為輪廓的像素點(diǎn)數(shù),RateThresh為預(yù)設(shè)的噪聲點(diǎn)比例閾值);
(f)計(jì)算出(d)中刪去的噪聲點(diǎn)的中心(noiseCenter),用于步驟(2)解決圓形物體在圖像中的鏡像問題。
步驟(2)所述的基于厚度噪點(diǎn)中心的旋轉(zhuǎn)鏡像處理,首先采用基于Hough變換的方法,利用橢圓的三點(diǎn)確定法(長軸2端點(diǎn)和橢圓上其它任意1點(diǎn)),對步驟(1)提取出的去噪聲點(diǎn)后的輪廓點(diǎn)進(jìn)行橢圓檢測,得到橢圓的精確檢測結(jié)果,根據(jù)橢圓長軸與步驟(1)中noiseCenter的位置關(guān)系判斷物體旋轉(zhuǎn)角方向。具體流程如下:
(a)對步驟(1)提取的去噪聲點(diǎn)后的輪廓,采用基于Hough變換的橢圓長短軸-三點(diǎn)檢測
法,得到橢圓參數(shù){O(Ox,Oy),a,b,θ},實(shí)現(xiàn)圓形物體的精確檢測,中心位置坐標(biāo)O(Ox,Oy);
(b)先算出noiseCenter在(a)檢測到的橢圓長軸L的方位direction,計(jì)算旋轉(zhuǎn)角rotX,
rotY的正負(fù)號signX和signY,從而解決了圓形物體在圖像中的鏡像問題:
如果θ>=0,direction為左上方:signX=1,signY=-1;
如果θ>=0,direction為右下方:signX=-1,signY=1;
如果θ<0,direction為右上方:signX=1,signY=1;
如果θ<0,direction為左下方:signX=-1,signY=-1。
步驟(3)所述的基于中心點(diǎn)偏移的目標(biāo)精確定位,是針對圓形物體中間有一個(gè)突出的圓柱軸的情況,對圓柱上方的小圓在圖像中的小橢圓進(jìn)行檢測,得到小橢圓相對大橢圓的中心偏移量,基于中心偏移進(jìn)行精確定位。具體流程如下:
(a)截取大橢圓中心r×r的范圍的圖像,r為大橢圓長半軸的1/2;
(b)使用步驟(1)和(2)的方法在(a)截取的圖像檢測小橢圓,得到小橢圓參數(shù){O2(O2x,O2y),a2,b2,θ2};
(c)旋轉(zhuǎn)后的中心偏移OO2=(Δx,Δy),radius為圓形物體的實(shí)際半徑長,h為中間圓柱高,計(jì)算繞X、Y軸的旋轉(zhuǎn)角rotX和rotY:
本發(fā)明提出的帶厚度干擾的圓形物體的精確檢測和定位方法,能夠有效的去除厚度因素造成的物體檢測的誤差(可應(yīng)用于任意形狀的帶厚度物體),同時(shí)解決了圓形物體在單目2D圖像中的旋轉(zhuǎn)鏡像問題,并且針對圓形物體中間帶有突出的圓柱軸的情況,達(dá)到旋轉(zhuǎn)角度的精確計(jì)算,從而實(shí)現(xiàn)精確檢測和精確定位。實(shí)驗(yàn)驗(yàn)證,本發(fā)明對于目標(biāo)物體定位的平均誤差較小,位置坐標(biāo)誤差一般為1個(gè)像素,旋轉(zhuǎn)角度誤差一般為1°,能夠達(dá)到較高的定位精度;同時(shí)能夠滿足工業(yè)場景實(shí)時(shí)檢測的需求,并且對于外界干擾具備一定的抗噪能力。
附圖說明
圖1為本發(fā)明算法框架圖。
圖2為物體繞X軸正方向旋轉(zhuǎn)與負(fù)方向旋轉(zhuǎn)的示意圖(旋轉(zhuǎn)鏡像問題)。
圖3為物體厚度對邊緣輪廓提取的干擾的示意圖。
圖4為帶厚度噪點(diǎn)的邊緣點(diǎn)(左圖),去噪后的輪廓點(diǎn)(右圖)。
圖5為物體旋轉(zhuǎn)示意圖。其中,OP:物體未旋轉(zhuǎn)時(shí)的法向量,OP1:物體繞X軸旋轉(zhuǎn)α后的法向量,OP2:物體再繞Y周旋轉(zhuǎn)β后的法向量。
圖6為消除了左上方厚度誤差后的目標(biāo)檢測結(jié)果效果圖。
圖7為用于物體旋轉(zhuǎn)角輔助計(jì)算中間小圓檢測效果圖。
圖8為利用精確定位結(jié)果,機(jī)械臂抓取物體的效果圖。
具體實(shí)施方式
下面結(jié)合附圖,進(jìn)一步描述本發(fā)明,但不以任何方式限制本發(fā)明的范圍。
一、操作流程
如圖1所示,本發(fā)明的框架可以分為去噪聲點(diǎn)的輪廓提取及旋轉(zhuǎn)鏡像的處理、精確定位三部分,去噪聲點(diǎn)的輪廓提取階段通過對邊緣點(diǎn)的密度計(jì)算去除厚度噪點(diǎn),旋轉(zhuǎn)鏡像的處理部分基于噪聲點(diǎn)中心和Hough變換檢測檢測出的橢圓長軸的位置關(guān)系判斷,目標(biāo)精確定位部分使用已檢測出的橢圓信息,通過精確定位算法進(jìn)行目標(biāo)精確定位。
二、具體實(shí)現(xiàn)流程
本發(fā)明所提供的一種帶厚度干擾的圓形物體的精確檢測和定位方法,其實(shí)現(xiàn)流程可以總結(jié)為如下部分:
1)基于邊緣點(diǎn)密度提取去除厚度產(chǎn)生的噪點(diǎn)后的邊緣輪廓
如圖3所示,使用Canny算子提取輪廓,在低閾值情況下提取出的輪廓明顯可以看到由于厚度產(chǎn)生的雙邊或多邊,所以由零件厚度產(chǎn)生的噪聲點(diǎn),其周圍的邊緣點(diǎn)密度較大。利用這一特性,遍歷整個(gè)輪廓曲線上的點(diǎn),即可判斷是否是噪聲點(diǎn)。具體方法如下:
(a)使用高閾值Canny算子提取邊緣像素點(diǎn),對邊緣像素點(diǎn)進(jìn)行連接,提取出連續(xù)的輪廓曲線
(b)使用低閾值Canny算子再作邊緣點(diǎn)檢測;
(c)遍歷(a)中提取到的每個(gè)輪廓曲線的點(diǎn)p1,p2,…,pn,統(tǒng)計(jì)pi(i=1,…n)的周圍k×k范圍的邊緣點(diǎn)的個(gè)數(shù)di,作為pi的邊緣點(diǎn)密度的計(jì)量值(其中,k為預(yù)設(shè)的參數(shù));
(d)根據(jù)每個(gè)輪廓點(diǎn)pi(i=1,…n)的邊緣點(diǎn)密度di的大小,對該輪廓上的所有像素點(diǎn)進(jìn)行升序排序;
(e)找到邊緣點(diǎn)密度d>=DensityThresh的第一個(gè)輪廓點(diǎn)的序號j,取rate=MIN(j/size,RateThresh),將排序后的尾部rate比例的輪廓點(diǎn)作為噪聲點(diǎn)刪去(其中,DensityThresh為預(yù)設(shè)的密度閾值參數(shù),size為輪廓的像素點(diǎn)數(shù),RateThresh為預(yù)設(shè)的噪聲點(diǎn)比例閾值);
(f)計(jì)算出(d)中刪去的噪聲點(diǎn)的中心noiseCenter,用于步驟(2)解決圓形物體在圖像中的鏡像問題。
2)如圖6所示,基于厚度噪點(diǎn)中心的旋轉(zhuǎn)鏡像處理,采用基于Hough變換的方法,利用橢圓的長短軸-三點(diǎn)確定法(長軸2端點(diǎn)和橢圓上其它任意1點(diǎn)),對步驟(1)提取出的去燥聲點(diǎn)后的輪廓點(diǎn)進(jìn)行橢圓檢測,得到橢圓的精確檢測結(jié)果,根據(jù)橢圓長軸與步驟(1)中noiseCenter的位置關(guān)系判斷物體旋轉(zhuǎn)角方向。具體方法如下:
(a)對步驟(1)提取的去噪聲點(diǎn)后的輪廓,采用基于Hough變換的橢圓長短軸-三點(diǎn)檢測
法,得到橢圓參數(shù){O(Ox,Oy),a,b,θ},實(shí)現(xiàn)圓形物體的精確檢測,中心位置坐標(biāo)O(Ox,Oy);
(b)先算出noiseCenter在(a)檢測到的橢圓長軸L的方位direction,計(jì)算旋轉(zhuǎn)角rotX,
rotY的正負(fù)號signX和signY,從而解決了圓形物體在圖像中的鏡像問題:
如果θ>=0,direction為左上方:signX=1,signY=-1;
如果θ>=0,direction為右下方:signX=-1,signY=1;
如果θ<0,direction為右上方:signX=1,signY=1;
如果θ<0,direction為左下方:signX=-1,signY=-1。
3)基于中心點(diǎn)偏移的目標(biāo)精確定位
如圖7所示,針對圓形零件中間有一個(gè)突出的圓柱軸的特點(diǎn),對圓柱上方的小圓在圖像中的小橢圓進(jìn)行檢測,得到小橢圓相對大橢圓的中心偏移量,基于中心偏移進(jìn)行精確定位。具體方法如下:
(a)截取大橢圓中心r×r的范圍的圖像,r為大橢圓長半軸的1/2;
(b)使用步驟(1)和(2)的方法在(a)截取的圖像中檢測小橢圓,得到小橢圓參數(shù){O2(O2x,O2y),a2,b2,θ2}
(c)旋轉(zhuǎn)后的中心偏移OO2=(Δx,Δy),radius為圓形物體的實(shí)際半徑長,h為中間圓柱高,計(jì)算繞X、Y軸的旋轉(zhuǎn)角rotX和rotY:
從而實(shí)現(xiàn)了對圓形物體的精確定位。
三、實(shí)驗(yàn)結(jié)果
如圖6所示,本發(fā)明所提供的帶厚度干擾的圓形物體的精確定位方法能夠得到目標(biāo)的精確位置以及旋轉(zhuǎn)角。同時(shí)經(jīng)實(shí)驗(yàn)驗(yàn)證,本發(fā)明對于目標(biāo)物體定位的平均誤差較小,位置坐標(biāo)誤差一般為1個(gè)像素,旋轉(zhuǎn)角度誤差一般為1°,能夠達(dá)到較高的定位精度;同時(shí)能夠滿足工業(yè)場景實(shí)時(shí)檢測的需求,并且對于外界干擾具備一定的抗噪能力。