朱???,劉 毅,孟凡杰,叢 明
(1.大連理工大學(xué) 機械工程學(xué)院,遼寧 大連 116024;2.營口金辰機械股份有限公司,遼寧 營口 115000)
在機械制造行業(yè)中,零件裝配是產(chǎn)品出廠前的基本工作之一,其中軸孔裝配是最常見的配合形式。隨著工業(yè)4.0時代的到來,機械裝配也由自動化向智能化方向發(fā)展,越來越多的機構(gòu)研究使用視覺系統(tǒng)和工業(yè)機器人完成零件裝配工作。
在軸孔裝配工作中,如何通過機器視覺完成對待裝配工件上圓孔的識別和定位是整個裝配過程的關(guān)鍵?;舴蜃儞Q(Hough transform)于1962年由Paul Hough首次提出,而后經(jīng)推廣和改進廣泛應(yīng)用于圖像中直線和圓形的檢測[1]。傳統(tǒng)Hough變換最大的優(yōu)點是識別效果的魯棒性,即對圖像的質(zhì)量和噪聲不是特別敏感[2]。但該算法的實現(xiàn)會占用大量的計算機內(nèi)存、花費很長的計算時間,使得傳統(tǒng)Hough變換在實際應(yīng)用中幾乎無法實現(xiàn)[3-4]。
因此,國內(nèi)外專家學(xué)者不斷對傳統(tǒng)的Hough變換算法進行改進,做了大量的研究工作。Xu L等[5]提出了隨機霍夫變換算法(randomized Hough transform),通過對圖像空間中的點進行隨機抽樣以及參數(shù)空間中的動態(tài)鏈表結(jié)構(gòu)解決了傳統(tǒng)Hough變換計算時間長、內(nèi)存開銷大問題,在處理背景簡單的圖像時表現(xiàn)出了很好的性能。蔣聯(lián)源[6]對隨機Hough變換進行了改進,優(yōu)化了樣本點和待選圓的確定算法,結(jié)果表明該算法具有很強的魯棒性和良好的檢測精度,檢測速度明顯優(yōu)于原算法。Victor AR等[7]采用遺傳算法尋找最優(yōu)候選邊緣點,避免了一些偽邊緣點參與后續(xù)運算,縮小了搜索空間,結(jié)果表明該方法較傳統(tǒng)Hough圓檢測提高了檢測的速度和精度,檢測結(jié)果可以達到亞像素級別。上述方法雖從理論上解決了傳統(tǒng)Hough變換的一些缺點,但在實際工程應(yīng)用中仍存在一些問題,如:當(dāng)存在多個相似的圓時會同時檢出,無法單獨識別出特定的圓;圖像背景復(fù)雜時容易出現(xiàn)錯檢和漏檢等。
針對上述問題,本文提出了基于圖像深度信息集的Hough圓檢測方法。該方法利用待檢測圓孔所在平面的圖像深度集對該圓孔的彩色圖像進行相應(yīng)的像素級數(shù)據(jù)預(yù)處理,屏蔽掉與待檢測圓孔所在平面無關(guān)的像素信息,大大減小了后續(xù)圓孔檢測的計算復(fù)雜程度,再利用Hough梯度法即可準確檢測出該圓孔的相關(guān)參數(shù)信息。實驗結(jié)果表明:基于圖像深度信息集的Hough圓檢測方法,克服了現(xiàn)有的Hough變換方法無法單獨識別特定的圓以及容易出現(xiàn)錯檢和漏檢現(xiàn)象等缺點,適用于復(fù)雜背景下特定圓孔的檢測。
我們已知圓在二維圖像坐標系下的解析表達式為:
(x-m)2+(y-n)2=r2
(1)
其中,(x,y)是像素坐標變量,(m,n)為圓心坐標,r為圓的半徑。
圖1 圓在參數(shù)空間中的映射
根據(jù)Hough變換的原理,圖像坐標系下的一個像素點映射到參數(shù)空間中表現(xiàn)為一個錐面。如果將圖像坐標系下所有的像素坐標按此映射關(guān)系變換到參數(shù)空間中,將在參數(shù)坐標系下形成一個圓錐面簇,若源圖像中存在圓形,那么屬于同一個圓周上的像素點在參數(shù)空間中會交于一點,如圖1所示。通過統(tǒng)計找到累加器中的局部最大值集合,如果存在多個圓錐面交于一點(mi,ni,ri),那么就說明源圖像中存在圓形,其中(mi,ni)就是這些圓形的圓心坐標,ri為圓的半徑,單位為像素。
圖2 基于深度信息集的工件圓孔檢測
在機械零件裝配行業(yè)中,存在大量的回轉(zhuǎn)體結(jié)構(gòu),往往一個單一的工件上就會存在很多的通孔、沉孔以及圓形工藝凸臺,若直接對相機獲取的源圖像進行Hough圓檢測則會將圖像中所有的圓檢測出來,無法直接獲得待裝配的圓孔信息且計算量巨大。對此,本文提出了一種基于圖像深度信息集的Hough圓檢測方法,具體實現(xiàn)流程如圖2所示。
對圖像樣本的數(shù)字化處理采用開源計算機視覺庫(Opencv),深度圖像數(shù)據(jù)存儲為CV_16UC1格式,彩色圖像數(shù)據(jù)存儲為CV_8UC3格式[8]。下面以8位3通道(CV_8UC3)彩色圖像為例說明如何對圖像進行像素級處理。如圖3所示,一個3×2個像素大小的RGB圖像在Mat中的存儲形式實質(zhì)上就是一個3行2列的矩陣,每列又包含了藍、綠、紅三個通道。(Opencv中以BGR順序存儲)。
圖3 8位3通道RGB圖像在Mat中的存儲方式
如果我們想訪問像素矩陣中某個像素對其進行讀取或重新賦值,就要用到如下尋址表達式:
Addr(M(i,j))=M.data+M.step[0]×i+M.step[1]×j
(2)
圖4 磁流體密封裝置彩色圖像
圖5 磁流體密封裝置深度圖像
其中M.data是起始位置的地址,即左上角藍色塊的地址,step[0]表示每一行像素的數(shù)據(jù)大小,step[1]表示一個像素的數(shù)據(jù)大小(以8bit數(shù)據(jù)塊為一個單位),i和j分別代表像素矩陣的行和列的下標(矩陣索引下標從0開始)。
圖6 圖像預(yù)處理算法流程圖
假設(shè)我們想訪問最后一個像素M(2,1),那么M.data+M.step[0]×2+M.step[1]×1 就指向最后一個像素。本文中,我們利用3D相機采集到的對齊的彩色和深度數(shù)據(jù)流樣本如圖4、圖5所示,其中黑色圓孔為待裝配軸承孔。
根據(jù)深度圖像中待裝配軸承孔所在平面的深度信息獲取到該平面上所有像素的坐標,然后將該坐標集對應(yīng)到彩色圖像中,對彩色圖像進行像素級處理,屏蔽與待檢測軸承孔無關(guān)的像素信息,具體算法流程如圖6所示。
圖7為經(jīng)圖像預(yù)處理后的待裝配工件的彩色圖像,用于后續(xù)的檢測。
圖7 圖像預(yù)處理效果圖
對于圓周上每一個非零像素點,沿其局部梯度矢量方向的直線必過圓心。若忽略一定的誤差,那么沿圓周上任意兩個不在同一條直線上的點的梯度方向直線的交點就是該圓的圓心,連接圓心和上述兩點中的任一點之間線段的長度即為半徑[9-10]。具體實現(xiàn)步驟如下:
(1)將待檢測圖像轉(zhuǎn)為灰度圖并對其進行高斯平滑處理。
(2)對圖像應(yīng)用Canny算子[11]進行邊緣檢測,針對邊緣圖像中每一個非零像素點計算其局部梯度。
(3)將梯度方向上的點放入累加器中累加并記錄每個非零像素的位置坐標。
(4)找出累加器中的局部峰值,并將這些峰值降序排列,如果這個峰值受到邊緣圖像非零像素充分的支持,那么就會被認定為圓心,由圓心到邊緣上任一點的距離即為半徑[12]。
關(guān)于步驟(2)中局部梯度的計算,假設(shè)被作用的圖像為M,我們分別對其x和y兩個方向求導(dǎo)(使用3×3的內(nèi)核進行卷積):
(3)
(4)
之后使用如下兩個公式計算出梯度的幅值和方向:
(5)
(6)
圖8 圖像采集與處理軟件
根據(jù)上述原理,本文利用Microsoft Visual Studio 2010、Opencv2.4.9、Intel RealSense R200相機搭建了圖像采集與處理系統(tǒng)(軟件界面如圖8所示),并對三軸磁流體密封裝置上的軸承孔進行了檢測實驗。
圖9為利用傳統(tǒng)的Hough梯度法得出的檢測結(jié)果,共檢出了2個圓,其在圖像坐標系下的圓心坐標和半徑分別為[(199,115),40]、[(197,116),99],但并沒有檢測出待裝配的軸承孔。圖10為采用基于圖像深度信息集的Hough圓變換的檢測結(jié)果,共檢出了1個圓,其在圖像坐標系下的圓心坐標和半徑為[(202,116),11],得到了待裝配軸承孔在圖像坐標系下的相關(guān)參數(shù)信息。
由對比分析可知,若對源圖像直接使用傳統(tǒng)Hough梯度法,會傾向于檢出所有同心圓中最大的圓形,并不能得到需要檢測到的圓形,繼而無法得出待裝配軸承孔的相關(guān)參數(shù)信息,不能滿足實際工程需要。而基于圖像深度信息集的Hough圓檢測可以依據(jù)待裝配圓孔所在平面的深度信息快速提取與該孔有關(guān)的像素坐標,屏蔽與檢測目標無關(guān)的像素,再利用Hough圓變換得到該圓孔的所需參數(shù),以便引導(dǎo)工業(yè)機器人進行下一步的裝配工作。
圖9 傳統(tǒng)Hough圓檢測
圖10 基于圖像深度信息集的Hough圓檢測
本文以三軸磁流體密封裝置上的軸孔自動裝配為研究對象,提出了一種基于圖像深度信息集的工件圓孔檢測方法,并開發(fā)了圖像采集與處理軟件驗證該方法的可行性與優(yōu)點。利用圖像深度信息以及彩色圖和深度圖二者之間的對應(yīng)關(guān)系對待檢測圖像進行像素級預(yù)處理,然后結(jié)合邊緣圖像的梯度信息進行Hough變換,既保留了傳統(tǒng)Hough梯度法的魯棒性,又彌補了傳統(tǒng)方法的缺點和不足,使其可以更好地應(yīng)用于軸孔自動化裝配工作中。實驗結(jié)果表明,該方法可以直接準確地獲得待裝配軸承孔的相關(guān)參數(shù)信息,滿足實際工程需要。
[參考文獻]
[1] Djekoune AO, Messaoudi K, Belhocine M. Incremental Hough Transform: A New Method for Circle Detection[A]. In Computational Intelligence [C]. Springer International Publishing,2016.
[2] Lo RC, Hsu HC. A Circular Band Extraction Method Based on Extended Hough Transform[J]. International Journal of Pattern Recognition and Artificial Intelligence, 2016 ,30(8):1655021.
[3] Zhou B, He Y. Fast Circle Detection Using Spatial Decomposition of Hough Transform[J]. International Journal of Pattern Recognition and Artificial Intelligence,2017,31(3):652-657.
[4] 葉峰,陳燦杰,賴乙宗,等. 基于有序Hough變換的快速圓檢測算法[J]. 光學(xué)精密工程,2014,22(4):1105-1111.
[5] Xu L, Oja E,Kultanen P. A new curve detection method: randomized Hough transform (RHT) [J]. Pattern recognition letters,1990,11(5):331-338.
[6] Jiang LY. Efficient randomized Hough transform for circle detection using novel probability sampling and feature points[J]. Optik-International Journal for Light and Electron Optics, 2012,123(20):1834-1840.
[7] Victor AR,Carlos H,Garcia-Capulin,et al. Circle detection on images using genetic algorithms[J]. Pattern Recognition Letters, 2006, 27(6): 652-657.
[8] Kaehler A,Bradski G. Learning OpenCV 3: Computer Vision in C++ with the OpenCV Library[M]. O'Reilly Media, Inc,2016.
[9] 崔繼文,譚久彬. 基于梯度信息的隨機Hough變換圓輪廓測量技術(shù)[J]. 紅外與激光工程,2006,35(S4):419-424.
[10] Su L, Yan M, Yin Y. Small surface target detection algorithm based on panoramic vision[A]. InControl Conference (CCC) [C].IEEE,2016:3967-3972.
[11] Razak NA, Liong CY, Jemain AA, et al. Firing Pin Impression Segmentation using Canny Edge Detection Operator and Hough Transform[J]. Journal of Telecommunication, Electronic and Computer Engineering (JTEC),2017,9(1):6-23.
[12] 毛星云,冷雪飛. OpenCV3編程入門[M].北京:電子工業(yè)出版社,2015.