胡瑞欽,張立建,孟少華
(1.北京衛(wèi)星環(huán)境工程研究所,北京 100094; 2.北京市航天產(chǎn)品智能裝配技術(shù)與裝備工程技術(shù)研究中心,北京 100094)
基于OpenCV的圖像橢圓特征識(shí)別與定位研究
胡瑞欽1,2,張立建1,2,孟少華1,2
(1.北京衛(wèi)星環(huán)境工程研究所,北京 100094; 2.北京市航天產(chǎn)品智能裝配技術(shù)與裝備工程技術(shù)研究中心,北京 100094)
面向平板零件上螺紋孔的識(shí)別定位需求,基于開源計(jì)算機(jī)視覺庫OpenCV進(jìn)行橢圓特征的識(shí)別與定位研究;采用Canny邊緣檢測(cè)算法提取圖像邊緣信息,對(duì)邊緣圖像通過輪廓檢索得到單一的連續(xù)輪廓,并對(duì)得到的每一條連續(xù)輪廓進(jìn)行橢圓擬合;研究給出一種評(píng)價(jià)輪廓與所擬合橢圓誤差的計(jì)算方法,以此誤差為準(zhǔn)則實(shí)現(xiàn)非橢圓特征的剔除;進(jìn)一步針對(duì)螺紋孔形成的相套橢圓特征,采用聚類篩選的方法得到螺紋孔對(duì)應(yīng)的內(nèi)環(huán)橢圓特征,從而實(shí)現(xiàn)了板上螺紋孔的識(shí)別與定位。
橢圓識(shí)別;螺紋孔;目標(biāo)篩選;圖像處理
圓形是各類物體上的常見特征,如機(jī)械結(jié)構(gòu)上常見的軸和孔、用于輔助視覺測(cè)量的標(biāo)志點(diǎn)等。由于拍照角度往往不垂直于圓形面,圓形目標(biāo)物在經(jīng)過相機(jī)成像后成為橢圓,對(duì)圖像中的橢圓特征進(jìn)行可靠的識(shí)別和定位,是對(duì)目標(biāo)物進(jìn)行測(cè)量定位的基礎(chǔ)。
目前常用的橢圓檢測(cè)算法主要由Hough變換法、最小二乘法等。Hough變換是常用的一種形狀檢測(cè)方法[1],常被應(yīng)用于檢測(cè)直線和圓[2-3]。也有研究將Hough變換用于橢圓檢測(cè)[4-5],傳統(tǒng)的Hough 變換需要將圖像空間映射到參數(shù)空間進(jìn)行五維統(tǒng)計(jì),計(jì)算效率很低且精度不高[6]。由此,又出現(xiàn)了隨機(jī)Hough 變換法[7],雖降低了計(jì)算量,但其性能隨圖像復(fù)雜度下降很快,且仍未很好的提高精度[8]。最小二乘法是在隨機(jī)誤差為正態(tài)分布時(shí),可使測(cè)量誤差的平方和最小,被視為從一組測(cè)量值中求出一組未知量的最可信賴的方法之一[9]。采用最小二乘法進(jìn)行橢圓擬合,是通過全部或部分目標(biāo)物體的邊界信息,估計(jì)出橢圓方程參數(shù),計(jì)算高效[10],在橢圓目標(biāo)物具有完整邊界的情況下,具有較高的擬合精度[8]。
OpenCV是Intel公司資助的開源計(jì)算機(jī)視覺庫,由一系列C函數(shù)和少量C++類構(gòu)成,)提供了豐富的圖像及計(jì)算機(jī)視覺處理函數(shù),在物體識(shí)別、運(yùn)動(dòng)跟蹤、機(jī)器視覺等領(lǐng)域有廣泛的應(yīng)用。利用OpenCV進(jìn)行圖像處理并進(jìn)行橢圓識(shí)別與定位,方便快捷,便于自動(dòng)化系統(tǒng)的快速構(gòu)件和開發(fā)。
現(xiàn)有的OpenCV給出了進(jìn)行橢圓擬合的函數(shù)cvFitEllipse2(),該函數(shù)基于最小二乘法,對(duì)任意形狀的輪廓均能給出與輪廓最相似的橢圓,但OpenCV沒有給出擬合誤差評(píng)估與橢圓篩選的函數(shù),無法直接將橢圓特征與其他特征如方形、三角形進(jìn)行區(qū)分識(shí)別。
本文面向平板零件上螺紋孔的識(shí)別定位需求,首先在圖像中提取孔邊緣的特征輪廓,而后利用cvFitEllipse2()函數(shù)對(duì)輪廓進(jìn)行橢圓擬合,研究給出一種用于評(píng)價(jià)原有輪廓與所擬合橢圓間誤差的計(jì)算方法,進(jìn)而據(jù)此將非橢圓特征剔除,有效地實(shí)現(xiàn)橢圓特征的識(shí)別與定位。
圖1所示為一平板零件圖像,需要在圖像中識(shí)別出板上螺紋孔對(duì)應(yīng)的橢圓特征,并給出圓心在圖像中的位置。
圖1 帶有螺紋孔的平板照片 圖2 圖像處理流程
圖像處理流程如圖2所示,首先進(jìn)行圖像預(yù)處理,將彩色圖像轉(zhuǎn)換為灰度圖像,并對(duì)圖像進(jìn)行平滑濾波,去除噪點(diǎn);進(jìn)一步通過邊緣提取得到圓孔邊緣對(duì)應(yīng)的圖像像素,而后進(jìn)行輪廓檢索,得到圖像中所有的連續(xù)輪廓;對(duì)每一條連續(xù)輪廓進(jìn)行橢圓擬合,得到橢圓大小、坐標(biāo)等相關(guān)參數(shù);最后計(jì)算原有輪廓與所擬合橢圓間的誤差,將誤差小于一定值的輪廓識(shí)別為橢圓,完成對(duì)橢圓特征的識(shí)別和定位。
2.1 邊緣提取
邊緣為圖像中灰度發(fā)生急劇變化的區(qū)域邊界,邊緣點(diǎn)能夠給出目標(biāo)輪廓的位置[11]。邊緣檢測(cè)是圖像處理與理解的重要部分,最終的結(jié)果好壞對(duì)圖像分析和圖像理解有重要影響,邊緣檢測(cè)的本質(zhì)是利用各種算法來得到圖像中對(duì)象與背景之間的相交線[12]。常見的邊緣檢測(cè)算子有Roberts算子、Sobel算子、Prewitt算子、Laplacian算子、LOG算子、Canny算子等[11]。
研究中邊緣檢測(cè)采用Canny算法。Canny算法具有很好的信噪比和檢測(cè)精度,對(duì)含有白噪聲的階梯型邊緣檢測(cè)圖像效果最好。Canny算法得到的邊緣與真實(shí)邊緣間的偏差很小,檢測(cè)到的虛假邊緣較少,漏檢率較小。該算法的主要步驟包括:高斯平滑、梯度檢測(cè)、沿梯度方向的非極大值抑制和雙閾值邊緣檢測(cè)連接算法。Canny算法檢測(cè)的邊緣是閉合的、單像素寬的,能比較精確地定位圖像中的邊緣。
Canny邊緣提取采用OpenCV中的Canny()函數(shù)實(shí)現(xiàn),第一閾值設(shè)定為40,第二閾值設(shè)定為120,Sobel 算子內(nèi)核大小設(shè)定為3,邊緣提取結(jié)果如圖3所示。
圖3 Canny邊緣提取結(jié)果
2.2 輪廓檢索
圖3所示的邊緣圖像包含了所有的邊緣信息,直接進(jìn)行橢圓擬合是對(duì)所有邊緣像素信息整體進(jìn)行橢圓擬合。若要識(shí)別出每個(gè)圓孔對(duì)應(yīng)的橢圓特征,需要對(duì)圖3中每一條連續(xù)的輪廓單獨(dú)進(jìn)行橢圓擬合,因此首先需要對(duì)圖3中的輪廓進(jìn)行檢索。
在輪廓檢索前,為增加輪廓的連續(xù)性,以盡量保證橢圓特征輪廓的完整性,對(duì)圖3的邊緣圖像進(jìn)行先“膨脹”再“腐蝕”的形態(tài)學(xué)運(yùn)算,“膨脹”和“腐蝕”分別使用OpenCV提供的dilate()和erode()函數(shù),“膨脹”和“腐蝕”均使用大小為3×3的結(jié)構(gòu)元素。形態(tài)學(xué)運(yùn)算后的結(jié)果如圖4所示。
圖4 形態(tài)學(xué)運(yùn)算結(jié)果
對(duì)圖4所示的二值圖像進(jìn)行輪廓檢索,OpenCV中提供cvFindContours()函數(shù)用于從二值圖像中檢索輪廓,函數(shù)將檢測(cè)到的輪廓逐一“編號(hào)”,可用于后續(xù)的橢圓擬合。對(duì)圖4的二值圖像進(jìn)行輪廓檢索的結(jié)果如圖5所示,檢索得到了所有的內(nèi)輪廓及外輪廓。
圖5 輪廓檢索結(jié)果
2.3 橢圓擬合
對(duì)檢索到的每一條輪廓進(jìn)行橢圓擬合,使用OpenCV提供的cvFitEllipse2()函數(shù),橢圓擬合結(jié)果如圖6所示。cvFitEllipse2()函數(shù)返回橢圓長(zhǎng)、短軸的像素長(zhǎng)度(a,b),橢圓中心坐標(biāo)(x0,y0),以及橢圓長(zhǎng)軸相對(duì)于圖像X軸的偏角θ0。由圖6可見,對(duì)于每一條輪廓,均擬合得到了橢圓,后續(xù)進(jìn)一步對(duì)圓孔邊緣對(duì)應(yīng)的橢圓進(jìn)行篩選。
圖6 橢圓擬合結(jié)果
2.4 橢圓篩選
為判斷一條輪廓是否是橢圓,研究采用一種計(jì)算方法計(jì)算輪廓與橢圓間的誤差,計(jì)算示意圖如圖7所示。
圖7 橢圓擬合誤差計(jì)算示意圖 圖8 橢圓參數(shù)方程示意圖
對(duì)于輪廓上任意一點(diǎn)
P
2
,其在圖像中的坐標(biāo)為(
x
2
,
y
2
),計(jì)算其與橢圓中心
P
0
的距離:
(1)
將P2點(diǎn)與P0點(diǎn)連線,計(jì)算P0P2與圖像X軸的偏角:
(2)
記P0P2連線與所擬合橢圓的交點(diǎn)為P1,則P0P1與圖像X軸的偏角為:
θ1=θ2-θ0
(3)
橢圓參數(shù)方程如圖8所示,由橢圓參數(shù)方程[13],橢圓上一點(diǎn)P的坐標(biāo)為:
(4)
則圖8中OP的長(zhǎng)度為:
(5)
由橢圓的性質(zhì),易得到[13]:
(6)
式(6)代入式(5)可得到:
(7)
則圖7中P0P1的長(zhǎng)度為:
(8)
記圖7中P2點(diǎn)偏離橢圓的誤差為:
(9)
設(shè)一條輪廓有N個(gè)點(diǎn),對(duì)每個(gè)點(diǎn)按式(9)計(jì)算偏離橢圓的誤差δi(1≤i≤N),對(duì)N個(gè)誤差δi求平均,得到該條輪廓偏離橢圓的誤差為:
(10)
ε的值僅與輪廓的形狀相關(guān),而與輪廓的尺度無關(guān),可用于進(jìn)行橢圓特征的識(shí)別。對(duì)圖6中擬合的橢圓進(jìn)行初步篩選,篩選條件為輪廓誤差ε≤0.2且橢圓短軸15≤b≤200,初步篩選結(jié)果如圖9所示。由圖9可見,在板上每個(gè)螺紋孔的對(duì)應(yīng)位置,得到2個(gè)相套的橢圓,這一方面是由于相較于通孔,螺紋孔邊緣不夠突出明顯,且板上的螺紋孔經(jīng)過多次螺釘裝拆,在孔周邊造成了一定痕跡,相套橢圓中內(nèi)環(huán)對(duì)應(yīng)的橢圓才是螺紋孔的橢圓特征。
圖9 初步橢圓篩選結(jié)果
圖10 聚類橢圓篩選結(jié)果
為篩選出“內(nèi)環(huán)橢圓”,對(duì)所有橢圓按中心位置進(jìn)行聚類,將橢圓間中心距離小于一定數(shù)值的橢圓歸為一類,在每一類中選擇長(zhǎng)軸數(shù)值較小的橢圓,即可得到“內(nèi)環(huán)橢圓”。聚類篩選結(jié)果見圖10,得到了板上螺紋孔對(duì)應(yīng)的橢圓特征,其中圖1中右下角的螺紋孔未得到識(shí)別,是由于孔周圍磨損嚴(yán)重,磨損的邊緣對(duì)識(shí)別造成了干擾。
本文面向平板零件上螺紋孔的識(shí)別定位需求,基于OpenCV進(jìn)行橢圓特征的識(shí)別與定位研究。采用OpenCV中Canny()函數(shù)得到圖像邊緣信息,對(duì)邊緣圖像利用cvFindContours()函數(shù)進(jìn)行輪廓檢索得到單一的連續(xù)輪廓,并對(duì)每一條連續(xù)輪廓利用cvFitEllipse2()函數(shù)進(jìn)行橢圓擬合。
研究給出一種評(píng)價(jià)輪廓與所擬合橢圓誤差的計(jì)算方法,該算法得到的擬合誤差僅與輪廓的形狀相關(guān),而與輪廓的尺度無關(guān),使用該算法成功實(shí)現(xiàn)了非橢圓特征的排除。針對(duì)螺紋孔形成的相套橢圓特征,對(duì)所有橢圓按中心位置進(jìn)行聚類,將橢圓間中心距離小于一定數(shù)值的橢圓歸為一類,在每一類中選擇長(zhǎng)軸數(shù)值較小的橢圓,得到螺紋孔對(duì)應(yīng)的內(nèi)環(huán)橢圓特征,從而實(shí)現(xiàn)了板上螺紋孔的識(shí)別與定位。
在后續(xù)工作中,需進(jìn)一步針對(duì)不同條件、不同情況的板類零件進(jìn)行研究,增強(qiáng)算法的適應(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變換的快速圓檢測(cè)算法[J]. 光學(xué)精密工程, 2014, 22(4): 1105-1111.
[4] 袁 理, 葉 露, 賈建祿. 基于Hough變換的橢圓檢測(cè)算法[J]. 中國(guó)光學(xué)與應(yīng)用光學(xué), 2010, 03(4): 379-384.
[5] 陸 路, 梁光明, 丁建文. 基于Hough變換的橢圓檢測(cè)改進(jìn)算法[J]. 現(xiàn)代電子技術(shù), 2015, 38(16):92-94.
[6] 韓建棟, 楊紅菊, 呂乃光. 視覺測(cè)量中橢圓自動(dòng)檢測(cè)與定位方法[J]. 計(jì)算機(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ùn)用自聚類方法優(yōu)化橢圓圖像識(shí)別的方法[J]. 電子測(cè)試, 2013(9): 19-23.
[9] 王萬國(guó), 王仕榮, 徐正飛,等. 基于邊界的最小二乘橢圓擬合改進(jìn)算法[J]. 計(jì)算機(jī)技術(shù)與發(fā)展, 2013(4): 67-70.
[10] 薛 程, 王士同. 一種新的不基于Hough變換的隨機(jī)橢圓檢測(cè)算法[J]. 微計(jì)算機(jī)信息, 2006, 22(1): 265-268.
[11] 董鴻燕. 邊緣檢測(cè)的若干技術(shù)研究[D]. 長(zhǎng)沙: 國(guó)防科學(xué)技術(shù)大學(xué), 2008.
[12] 賀 萌. 基于自適應(yīng)形態(tài)學(xué)的邊緣檢測(cè)及應(yīng)用[D]. 長(zhǎng)沙: 中南大學(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ā)展專項(xiàng)項(xiàng)目(Z151104001615076)。
胡瑞欽(1988-),男,內(nèi)蒙古呼和浩特人,碩士,工程師,主要從事航天器裝配領(lǐng)域自動(dòng)化機(jī)電技術(shù)方向的研究。
1671-4598(2016)12-0116-03
10.16526/j.cnki.11-4762/tp.2016.12.033
TP391
A