劉 剛,黃一鳴,陸雨婷,任興龍
(華中農(nóng)業(yè)大學,湖北武漢 430070)
在工業(yè)生產(chǎn)中,當前仍主要采用人工的方法進行機床上下物料的工作。由于機器人的重復定位精度很高(±0.5 mm左右),而人工操作存在錯誤率高等問題,因此機器人(手臂)代替人工可以大大提高準確率。但是,機器人并不知道自己需要從哪里抓取目標物體?,F(xiàn)實情況中,螺母不可能是完全平放的,很多時候是層疊在一起的,這無疑加大了機器人進行視覺識別的難度。
本文從機器視覺系統(tǒng)出發(fā),基于Kinect傳感器獲得的深度圖像,利用圖像處理技術與Python語言編程,實現(xiàn)了對復雜擺放情況下螺母中心位置的擬合,從而實現(xiàn)對螺母的定位。
在桌面上有如圖1所示放置的螺母。采用Kinect傳感器獲得如圖2所示的深度圖。
圖1 實物圖
圖2 深度圖
為了增強圖像質(zhì)量,提高擬合精度,需對傳感器獲得的深度圖像進行預處理。圖像的預處理包括插值填充、二值化和圖像平滑。通過編寫Python代碼實現(xiàn)了以上過程,經(jīng)過圖像預處理后結果的如圖3所示。插值填充的目的是為了去除圖像中的噪聲;二值化處理的目的是為了分割圖像中的螺母與背景環(huán)境;圖像平滑的目的是為了提高圖像質(zhì)量。
為了有效去除背景等因素的影響,采用Canny邊緣檢測的方法對二值化之后的圖像進行邊緣檢測。
圖3 圖像預處理結果
圖4 邊緣檢測結果
Canny邊緣檢測的最優(yōu)性與以下因素有關[1-3]:
(1)高信噪比,即在進行邊緣判斷時的準確率高;
(2)定位準確,即檢測出的邊緣點要盡可能在實際邊緣的中心;
(3)對單一邊緣具有唯一一個像素響應。處理結果如圖4所示。
螺母為類圓圖像,因此在螺母的圖像中,經(jīng)常會出現(xiàn)類圓螺母粘連和重疊的現(xiàn)象,為了更準確的統(tǒng)計類圓螺母的數(shù)量,首先需要將類圓目標分割成單獨螺母[4]。本文應用基于凹點的分割方法,對粘連的類圓螺母進行分割。
本文提出的凹點判斷原理[5]:在圓域邊緣上取3點C1,C2和A,其中A處于C1,C2之間,連接以上三點構成三角形,如圖5所示。
取連線的中點為D,根據(jù)D點左邊對應像素的灰度值來判斷D是否在層疊的目標螺母上。
在進行判定時,有兩種情況,一種情況是D在邊緣內(nèi)側,則D∈O1O2,則直線AD上面所有的點都在圓域內(nèi),;另一種情況是D不在邊緣內(nèi)側,則若直線AD上除A點以外的點不在邊際圓域內(nèi),則邊緣形成凹陷,點A為凹點。
將n個相鄰凹點集聚在一起構成的群稱為凹點群,當僅存在著唯一凹點,即當n=1時,稱凹點群為獨立凹點群。
設凹點深度d為邊緣特征點xi與線段xi-1、xi+1之間的直線距離p稱為凹點深度,其中xi-1、xi+1分別為點xi的鄰繼特征點。
借助輪廓圖,建立一個數(shù)組S用于存放凹點對應的邊緣特征點序號,同時將這些凹點分為孤立的凹點群以便于找出分割點。在搜索分割點的過程中,將每個凹點群中的凹點深度與閾值Y進行比較,如果某一凹點的深度值超過了閾值Y,則視這一凹點為備選分割凹點。當凹點群中有且僅有唯一備選分割凹點時,則認為該點就是分割凹點;對于另一種情況,即當凹點群中的備選分割凹點有多個時,需要依據(jù)N點方向編碼差法[6]減去非凹點。處理結果如圖6所示。
圖5 凹點搜索原理
圖6 類圓分割結果
經(jīng)過以上的處理,可以認為螺母邊緣實際上已經(jīng)弱化接近為一個圓。因此,擬合螺母的中心位置的問題可以轉化為尋找圓心的問題。Hough變換是目前應用較為廣泛的圓檢測方法,很多情況下,一些干擾或其他事物的遮蓋會引起目標區(qū)域邊界的間斷,對于這些情況,Hough變換具有很好的容錯性和魯棒性[6]。
由于圖像出現(xiàn)了邊緣被干擾的情況,因此選擇Hough變換以實現(xiàn)較好的擬合效果。
但是,由于其自身的原理,Hough變換也存在著一些不足。比如,在進行運算時,Hough變換往往要進行全局的累加運算,會導致計算量急劇上升從而耗費大量的存儲空間,同時所用時間也會隨之增加。事實上,通過Kinect傳感器獲得的圖像往往受到外界噪聲的干擾,這會造成傳統(tǒng)Hough變換在進行參數(shù)空間的搜索時性能急劇下降。
為了克服Hough變換的這一不足,利用OpenCV對Hough變換進行了改進。改進之后的算法不僅對噪聲敏感度低,而且在檢測圓心時速度大大增加。
改進Hough算法尋找圓心的基本步驟如下。
(1)利用遍歷法找到滿足以下條件的像素點不是邊緣點:對相鄰的像素點分別進行向左和向右搜索,分別找到兩邊的第一個相鄰的邊緣像素點,記為rwp(右 )和lwq(左 ) ;pwj-lwq=rwp-owj。
(2)對滿足上一步驟條件的owj,采用改進后的Hough變換在一維的空間中進行累加計數(shù)。
(3)在參數(shù)空間中,通過步驟(2)累加計數(shù)的最大值所對應的owj即為圓心對應的橫坐標c=owj。
同理,可以求出圓心的縱坐標,這樣就可以得到圓心坐標(c,d)。
根據(jù)以上步驟求得的圓心坐標(c,d),將邊際像素點代入(x-c)2+(x-d)2=r2(圓的方程),可得出一個備選半徑,然后在單維空間中再利用經(jīng)過OpenCV改進后的Hough變換對備選半徑進行累加計算。最后,依據(jù)的計數(shù)值是否滿足構成圓所允許的最小點數(shù)來確定圓,得到如圖7所示的圖像。
圖7 改進Hough變換結果
圖8 邊緣曲率處理結果
通過先得出的四個類圓環(huán),可以得到其他三個重疊類圓環(huán)的邊緣曲率范圍。由于螺母相互重疊的區(qū)域在彼此交界處,邊緣點曲率會發(fā)生突變,利用這一特征可以實現(xiàn)重疊區(qū)域邊緣的分割[7]。
式(2)中,x1、y1為前采樣點的坐標,x2、y2為后采樣點坐標。θ是兩相鄰采樣點連線與x軸夾角。
式(3)中,v代表采樣間隔,θ1是當前點到前一點連線與x軸夾角,θ2是后一點到當前點連線與x軸夾角,C為當前采樣點曲率。
式(4)中,x,y表示圓上點坐標,b,c,d表示方程系數(shù)。
由于各邊緣點未必都恰好在同一圓上,這些邊緣點有可能處在不同的圓上,邊緣點處在不同的圓上時情形與處在同一圓上有巨大的差距。因此,不能確保所有邊緣點的E值都恰好等于0。各點與回歸圓(即擬合出的圓)上相應點的偏差為
式(5)中,xi、yi表示輪廓邊緣點坐標。
用最小二乘原理,使各點偏差平方和最小,進而求得圓的回歸方程,擬合出螺母邊緣圓,擬合出的圓為回歸圓。將回歸圓疊加到原圖上,如圖8所示。
本文采用OpenCV改進的Hough算法進行螺母中心位置的確定。改進后的Hough算法不僅具有很好的魯棒性和容錯性,而且在檢測圓心時速度大大增加。結果證明,本文所用方法不僅在圓邊界輕微間斷的情況下表現(xiàn)出了很好的擬合效果,而且當實物在空間中重疊導致圖像中實物部分遮蓋時也同樣表現(xiàn)出了很好的擬合效果。因此,在螺母定位時能夠實現(xiàn)很好的效果。
參考文獻:
[1]蔡健榮,周小軍,李玉良,等.基于機器視覺自然場景下成熟柑橘識別[J].農(nóng)業(yè)工程學報,2008,24(01):175-178.
[2]王植,賀賽先.一種基于Canny理論的自適應邊緣檢測方法[J].中國圖像圖形學報,2004,9(08):957-962.
[3]王會江.結合Canny算法和Hough變換的軸類零件邊緣提?。跩].機電工程技術,2016(9):27-30.
[4]陳健,廖唯.機器視覺概況及其在軸系部件測量中的應用[J].現(xiàn)代機械,2011(03):24-26.
[5]蘇威.基于機器視覺的重疊類圓顆粒計數(shù)系統(tǒng)[D].鎮(zhèn)江:江蘇大學,2009.
[6]謝忠紅,姬長英,郭小清,等.基于凹點搜索的重疊果實定位檢測算法研究[J].農(nóng)業(yè)機械學報,2011,42(12):191-196.
[7]尚璐,李銳,宋信玉.改進的Hough變換圓檢測算法[J].電子設計工程,2011,19(14):168-171.