胡瑞欽,張立建,孟少華
(1.北京衛(wèi)星環(huán)境工程研究所,北京 100094; 2.北京市航天產(chǎn)品智能裝配技術(shù)與裝備工程技術(shù)研究中心,北京 100094)
基于OpenCV的圖像橢圓特征識別與定位研究
胡瑞欽1,2,張立建1,2,孟少華1,2
(1.北京衛(wèi)星環(huán)境工程研究所,北京 100094; 2.北京市航天產(chǎn)品智能裝配技術(shù)與裝備工程技術(shù)研究中心,北京 100094)
面向平板零件上螺紋孔的識別定位需求,基于開源計算機視覺庫OpenCV進行橢圓特征的識別與定位研究;采用Canny邊緣檢測算法提取圖像邊緣信息,對邊緣圖像通過輪廓檢索得到單一的連續(xù)輪廓,并對得到的每一條連續(xù)輪廓進行橢圓擬合;研究給出一種評價輪廓與所擬合橢圓誤差的計算方法,以此誤差為準則實現(xiàn)非橢圓特征的剔除;進一步針對螺紋孔形成的相套橢圓特征,采用聚類篩選的方法得到螺紋孔對應(yīng)的內(nèi)環(huán)橢圓特征,從而實現(xiàn)了板上螺紋孔的識別與定位。
橢圓識別;螺紋孔;目標篩選;圖像處理
圓形是各類物體上的常見特征,如機械結(jié)構(gòu)上常見的軸和孔、用于輔助視覺測量的標志點等。由于拍照角度往往不垂直于圓形面,圓形目標物在經(jīng)過相機成像后成為橢圓,對圖像中的橢圓特征進行可靠的識別和定位,是對目標物進行測量定位的基礎(chǔ)。
目前常用的橢圓檢測算法主要由Hough變換法、最小二乘法等。Hough變換是常用的一種形狀檢測方法[1],常被應(yīng)用于檢測直線和圓[2-3]。也有研究將Hough變換用于橢圓檢測[4-5],傳統(tǒng)的Hough 變換需要將圖像空間映射到參數(shù)空間進行五維統(tǒng)計,計算效率很低且精度不高[6]。由此,又出現(xiàn)了隨機Hough 變換法[7],雖降低了計算量,但其性能隨圖像復(fù)雜度下降很快,且仍未很好的提高精度[8]。最小二乘法是在隨機誤差為正態(tài)分布時,可使測量誤差的平方和最小,被視為從一組測量值中求出一組未知量的最可信賴的方法之一[9]。采用最小二乘法進行橢圓擬合,是通過全部或部分目標物體的邊界信息,估計出橢圓方程參數(shù),計算高效[10],在橢圓目標物具有完整邊界的情況下,具有較高的擬合精度[8]。
OpenCV是Intel公司資助的開源計算機視覺庫,由一系列C函數(shù)和少量C++類構(gòu)成,)提供了豐富的圖像及計算機視覺處理函數(shù),在物體識別、運動跟蹤、機器視覺等領(lǐng)域有廣泛的應(yīng)用。利用OpenCV進行圖像處理并進行橢圓識別與定位,方便快捷,便于自動化系統(tǒng)的快速構(gòu)件和開發(fā)。
現(xiàn)有的OpenCV給出了進行橢圓擬合的函數(shù)cvFitEllipse2(),該函數(shù)基于最小二乘法,對任意形狀的輪廓均能給出與輪廓最相似的橢圓,但OpenCV沒有給出擬合誤差評估與橢圓篩選的函數(shù),無法直接將橢圓特征與其他特征如方形、三角形進行區(qū)分識別。
本文面向平板零件上螺紋孔的識別定位需求,首先在圖像中提取孔邊緣的特征輪廓,而后利用cvFitEllipse2()函數(shù)對輪廓進行橢圓擬合,研究給出一種用于評價原有輪廓與所擬合橢圓間誤差的計算方法,進而據(jù)此將非橢圓特征剔除,有效地實現(xiàn)橢圓特征的識別與定位。
圖1所示為一平板零件圖像,需要在圖像中識別出板上螺紋孔對應(yīng)的橢圓特征,并給出圓心在圖像中的位置。
圖1 帶有螺紋孔的平板照片 圖2 圖像處理流程
圖像處理流程如圖2所示,首先進行圖像預(yù)處理,將彩色圖像轉(zhuǎn)換為灰度圖像,并對圖像進行平滑濾波,去除噪點;進一步通過邊緣提取得到圓孔邊緣對應(yīng)的圖像像素,而后進行輪廓檢索,得到圖像中所有的連續(xù)輪廓;對每一條連續(xù)輪廓進行橢圓擬合,得到橢圓大小、坐標等相關(guān)參數(shù);最后計算原有輪廓與所擬合橢圓間的誤差,將誤差小于一定值的輪廓識別為橢圓,完成對橢圓特征的識別和定位。
2.1 邊緣提取
邊緣為圖像中灰度發(fā)生急劇變化的區(qū)域邊界,邊緣點能夠給出目標輪廓的位置[11]。邊緣檢測是圖像處理與理解的重要部分,最終的結(jié)果好壞對圖像分析和圖像理解有重要影響,邊緣檢測的本質(zhì)是利用各種算法來得到圖像中對象與背景之間的相交線[12]。常見的邊緣檢測算子有Roberts算子、Sobel算子、Prewitt算子、Laplacian算子、LOG算子、Canny算子等[11]。
研究中邊緣檢測采用Canny算法。Canny算法具有很好的信噪比和檢測精度,對含有白噪聲的階梯型邊緣檢測圖像效果最好。Canny算法得到的邊緣與真實邊緣間的偏差很小,檢測到的虛假邊緣較少,漏檢率較小。該算法的主要步驟包括:高斯平滑、梯度檢測、沿梯度方向的非極大值抑制和雙閾值邊緣檢測連接算法。Canny算法檢測的邊緣是閉合的、單像素寬的,能比較精確地定位圖像中的邊緣。
Canny邊緣提取采用OpenCV中的Canny()函數(shù)實現(xiàn),第一閾值設(shè)定為40,第二閾值設(shè)定為120,Sobel 算子內(nèi)核大小設(shè)定為3,邊緣提取結(jié)果如圖3所示。
圖3 Canny邊緣提取結(jié)果
2.2 輪廓檢索
圖3所示的邊緣圖像包含了所有的邊緣信息,直接進行橢圓擬合是對所有邊緣像素信息整體進行橢圓擬合。若要識別出每個圓孔對應(yīng)的橢圓特征,需要對圖3中每一條連續(xù)的輪廓單獨進行橢圓擬合,因此首先需要對圖3中的輪廓進行檢索。
在輪廓檢索前,為增加輪廓的連續(xù)性,以盡量保證橢圓特征輪廓的完整性,對圖3的邊緣圖像進行先“膨脹”再“腐蝕”的形態(tài)學(xué)運算,“膨脹”和“腐蝕”分別使用OpenCV提供的dilate()和erode()函數(shù),“膨脹”和“腐蝕”均使用大小為3×3的結(jié)構(gòu)元素。形態(tài)學(xué)運算后的結(jié)果如圖4所示。
圖4 形態(tài)學(xué)運算結(jié)果
對圖4所示的二值圖像進行輪廓檢索,OpenCV中提供cvFindContours()函數(shù)用于從二值圖像中檢索輪廓,函數(shù)將檢測到的輪廓逐一“編號”,可用于后續(xù)的橢圓擬合。對圖4的二值圖像進行輪廓檢索的結(jié)果如圖5所示,檢索得到了所有的內(nèi)輪廓及外輪廓。
圖5 輪廓檢索結(jié)果
2.3 橢圓擬合
對檢索到的每一條輪廓進行橢圓擬合,使用OpenCV提供的cvFitEllipse2()函數(shù),橢圓擬合結(jié)果如圖6所示。cvFitEllipse2()函數(shù)返回橢圓長、短軸的像素長度(a,b),橢圓中心坐標(x0,y0),以及橢圓長軸相對于圖像X軸的偏角θ0。由圖6可見,對于每一條輪廓,均擬合得到了橢圓,后續(xù)進一步對圓孔邊緣對應(yīng)的橢圓進行篩選。
圖6 橢圓擬合結(jié)果
2.4 橢圓篩選
為判斷一條輪廓是否是橢圓,研究采用一種計算方法計算輪廓與橢圓間的誤差,計算示意圖如圖7所示。
圖7 橢圓擬合誤差計算示意圖 圖8 橢圓參數(shù)方程示意圖
對于輪廓上任意一點
P
2
,其在圖像中的坐標為(
x
2
,
y
2
),計算其與橢圓中心
P
0
的距離:
(1)
將P2點與P0點連線,計算P0P2與圖像X軸的偏角:
(2)
記P0P2連線與所擬合橢圓的交點為P1,則P0P1與圖像X軸的偏角為:
θ1=θ2-θ0
(3)
橢圓參數(shù)方程如圖8所示,由橢圓參數(shù)方程[13],橢圓上一點P的坐標為:
(4)
則圖8中OP的長度為:
(5)
由橢圓的性質(zhì),易得到[13]:
(6)
式(6)代入式(5)可得到:
(7)
則圖7中P0P1的長度為:
(8)
記圖7中P2點偏離橢圓的誤差為:
(9)
設(shè)一條輪廓有N個點,對每個點按式(9)計算偏離橢圓的誤差δi(1≤i≤N),對N個誤差δi求平均,得到該條輪廓偏離橢圓的誤差為:
(10)
ε的值僅與輪廓的形狀相關(guān),而與輪廓的尺度無關(guān),可用于進行橢圓特征的識別。對圖6中擬合的橢圓進行初步篩選,篩選條件為輪廓誤差ε≤0.2且橢圓短軸15≤b≤200,初步篩選結(jié)果如圖9所示。由圖9可見,在板上每個螺紋孔的對應(yīng)位置,得到2個相套的橢圓,這一方面是由于相較于通孔,螺紋孔邊緣不夠突出明顯,且板上的螺紋孔經(jīng)過多次螺釘裝拆,在孔周邊造成了一定痕跡,相套橢圓中內(nèi)環(huán)對應(yīng)的橢圓才是螺紋孔的橢圓特征。
圖9 初步橢圓篩選結(jié)果
圖10 聚類橢圓篩選結(jié)果
為篩選出“內(nèi)環(huán)橢圓”,對所有橢圓按中心位置進行聚類,將橢圓間中心距離小于一定數(shù)值的橢圓歸為一類,在每一類中選擇長軸數(shù)值較小的橢圓,即可得到“內(nèi)環(huán)橢圓”。聚類篩選結(jié)果見圖10,得到了板上螺紋孔對應(yīng)的橢圓特征,其中圖1中右下角的螺紋孔未得到識別,是由于孔周圍磨損嚴重,磨損的邊緣對識別造成了干擾。
本文面向平板零件上螺紋孔的識別定位需求,基于OpenCV進行橢圓特征的識別與定位研究。采用OpenCV中Canny()函數(shù)得到圖像邊緣信息,對邊緣圖像利用cvFindContours()函數(shù)進行輪廓檢索得到單一的連續(xù)輪廓,并對每一條連續(xù)輪廓利用cvFitEllipse2()函數(shù)進行橢圓擬合。
研究給出一種評價輪廓與所擬合橢圓誤差的計算方法,該算法得到的擬合誤差僅與輪廓的形狀相關(guān),而與輪廓的尺度無關(guān),使用該算法成功實現(xiàn)了非橢圓特征的排除。針對螺紋孔形成的相套橢圓特征,對所有橢圓按中心位置進行聚類,將橢圓間中心距離小于一定數(shù)值的橢圓歸為一類,在每一類中選擇長軸數(shù)值較小的橢圓,得到螺紋孔對應(yīng)的內(nèi)環(huán)橢圓特征,從而實現(xiàn)了板上螺紋孔的識別與定位。
在后續(xù)工作中,需進一步針對不同條件、不同情況的板類零件進行研究,增強算法的適應(yīng)性。
[1] Hough P V C. Methods and means for recognizing complex patterns[P]. US, 3069654,1962-12-18.
[2] Xu Z, Shin B S, Klette R. Closed form line-segment extraction using the Hough transform[J]. Pattern Recognition, 2015, 48(12):4012-4023.
[3] 葉 峰, 陳燦杰, 賴乙宗,等. 基于有序Hough變換的快速圓檢測算法[J]. 光學(xué)精密工程, 2014, 22(4): 1105-1111.
[4] 袁 理, 葉 露, 賈建祿. 基于Hough變換的橢圓檢測算法[J]. 中國光學(xué)與應(yīng)用光學(xué), 2010, 03(4): 379-384.
[5] 陸 路, 梁光明, 丁建文. 基于Hough變換的橢圓檢測改進算法[J]. 現(xiàn)代電子技術(shù), 2015, 38(16):92-94.
[6] 韓建棟, 楊紅菊, 呂乃光. 視覺測量中橢圓自動檢測與定位方法[J]. 計算機工程與應(yīng)用, 2011, 47(17): 169-171.
[7] Xu L, Oja E, Kultanen P. A new curve detection method: randomized Hough transform (RHT) [J]. Pattern Recognition Letters, 1990, 11(5): 331-338.
[8] 馮軍帥, 樊慶文, 王德麾,等. 一種運用自聚類方法優(yōu)化橢圓圖像識別的方法[J]. 電子測試, 2013(9): 19-23.
[9] 王萬國, 王仕榮, 徐正飛,等. 基于邊界的最小二乘橢圓擬合改進算法[J]. 計算機技術(shù)與發(fā)展, 2013(4): 67-70.
[10] 薛 程, 王士同. 一種新的不基于Hough變換的隨機橢圓檢測算法[J]. 微計算機信息, 2006, 22(1): 265-268.
[11] 董鴻燕. 邊緣檢測的若干技術(shù)研究[D]. 長沙: 國防科學(xué)技術(shù)大學(xué), 2008.
[12] 賀 萌. 基于自適應(yīng)形態(tài)學(xué)的邊緣檢測及應(yīng)用[D]. 長沙: 中南大學(xué), 2013.
[13] 曹智梅. 巧用參數(shù)方程加工橢圓曲線[J]. 南方金屬, 2012(4): 44-46.
Study on Recognition and Localization of Ellipse Based on OpenCV
Hu Ruiqin1,2,Zhang Lijian1,2,Meng Shaohua1,2
(1.Beijing Institute of Spacecraft Environment Engineering, Beijing 100094, China; 2.Beijing Engineering Research Center of the Intelligent Assembly Technology and Equipment for Aerospace Product, Beijing 100094, China)
For the recognition and localization of threaded holes on flat plate parts, a study on recognition and localization of ellipse based on OpenCV has been done. The canny edge detecting algorithm is used to obtain the edge information in the image, the individual contours is obtained through contour retrieving, and a ellipse is obtained for each contour by ellipse-fitting. An algorithm for evaluating the ellipse fitting error is proposed, which can be used to eliminate the non-ellipse features. For the nested ellipses detected on threaded holes, a method of cluster analysis is used to obtain the inner ellipses, thus the recognition and localization of threaded holes is realized.
ellipse recognition; threaded hole; target extract; image processing
2016-07-18;
2016-08-03。
北京市科技創(chuàng)新基地培育與發(fā)展專項項目(Z151104001615076)。
胡瑞欽(1988-),男,內(nèi)蒙古呼和浩特人,碩士,工程師,主要從事航天器裝配領(lǐng)域自動化機電技術(shù)方向的研究。
1671-4598(2016)12-0116-03
10.16526/j.cnki.11-4762/tp.2016.12.033
TP391
A