田庸,韓震宇,周永洪
(四川大學制造科學與工程學院,成都 610065)
基于多重插值的亞像素邊緣檢測
田庸,韓震宇,周永洪
(四川大學制造科學與工程學院,成都 610065)
亞像素邊緣檢測是圖像處理的重要內容,邊緣檢測的精度直接影響圖像處理的精度。分析一些亞像素邊緣檢測算法的優缺點,并對基于插值的亞像素邊緣檢測進行改進。通過粗邊緣檢測縮小亞像素檢測的檢測范圍,減小計算量。提出多重插值的方法,先對部分點進行插值,將插值結果中的點作為新的插值點,通過兩次插值,提高邊緣檢測的精度和抗干擾能力。從實驗結果來看,該亞像素邊緣檢測算法的最大誤差為0.109 pixel,耗時也較短,能應用于實時檢測系統。
機器視覺;圖像處理;亞像素;Herminte 插值;邊緣檢測;多重插值
圖像處理是視覺系統中最核心的部分,視覺檢測系統的測量精度與圖像處理的精度直接相關。邊緣檢測是圖像處理的重要內容,邊緣檢測的精度直接影響圖像處理結果的精度。因此,邊緣檢測是圖像處理的基礎。經典的邊緣檢測算法容易實現,但是,其定位精度差,一般定位精度是像素級。如Sobel,Prewitt,Roberts,Canny和Laplacian等邊緣檢測算法[1],都只能達到像素級定位精度[2]。
隨著圖像處理的不斷發展和應用,像素級精度越來越不能滿足測量精度的要求。因此,更高精度的亞像素邊緣檢測被提出。Tabatabai和Mitchell最先提出使用灰度矩來對邊緣進行亞像素精度定位[3]。Jensen和Anastassiuo提出使用非線性插值對邊緣進行亞像素精度定位[4]。Hueckl使用擬合方程對邊緣進行亞像素定位[5]。
近年來,國內學者也深入研究了亞像素邊緣檢測。同時,也取得了一些成果。孫秋成等提出了一種基于貝塞爾邊緣模型的亞像素邊緣檢測算法[6]。該算法具有較高的定位精度,但是,模型較復雜,計算時間較慢,難以應用于實時在線檢測。
本文首先對邊緣進行像素級的粗邊緣檢測,并求出每個輪廓點的梯度方向。然后,通過牛頓多項式插值和三次Herminte插值對圖像邊緣進行亞像素定位。從而,將二維圖像的邊緣檢測轉化為一維的邊緣檢測。該算法求解簡單,具有較高的定位精度,同時,計算時間也較快,能應用于實時檢測系統。
圖像處理中,用f(i,j)表示點(i,j)的亮度,即灰度。圖像的邊緣一般是指灰度值發生突變的點。邊緣檢測的實質是提取出圖像中對象與背景間的交界線[7]。在邊緣方向上,局部灰度值變化平緩。在垂直于邊緣的方向上,局部灰度值變化劇烈。如果圖像是連續函數,那么很容易聯想到利用導數求取圖像邊緣。對于階躍邊緣點,其灰度的一階導數在該點達到極大值,二階導數在該點與零交叉[8]。實際中,圖像是離散的像素點和灰度值,不能對其直接進行求導。但是,可以用一階差分和二階差分來近似表示一階導數和二階導數。對于階躍邊緣,圖像灰度的一階導數的極大值和二階導數的零點位置對應了圖像的邊緣。圖像邊緣與圖像灰度一階導數和二階導數的關系,如圖1。

圖1 階躍邊緣
1.1 經典像素級邊緣檢測
經典像素級邊緣檢測的基本思想是將圖像灰度看作連續函數,并用圖像灰度一階差分和二階差分來近似代替圖像灰度的一階導數和二階導數。然后,通過一階導數的極值點或者二階導數的零點來確定圖像邊緣。
對于數字圖像f(i,j),在3×3的8鄰域中,其x方向和y方向的一階差分可分別表示為:

上面兩個式子可用卷積模板表示:

對于經典Prewitt邊緣檢測算子:取G(i,j)=max[|fx(i,j)|,|fy(i,j)|],若G(i,j)大于某一設定的閾值,則認為點(i,j)是圖像的邊緣點。這顯然是不合理的,圖像中的某些噪聲點的一階差分也可能會大于規定的閾值,故將噪聲點判斷為邊緣點。若邊緣點的G(i,j)較小,會造成對邊緣點的漏檢。
其他的邊緣檢測算子的基本思想和Prewitt邊緣檢測算子相似,只是對鄰域中的某些點的權值不同。如Sobel的卷積模板為:

但是,各種經典邊緣檢測算子對邊緣檢測的效果還是有一定差別的。
1.2 常用的亞像素邊緣檢測
亞像素邊緣檢測是將像素進行細分,通過計算,能將圖像邊緣定位非整數像素位置。常用的亞像素邊緣檢測的方法有:基于矩的亞像素邊緣檢測、基于擬合的亞像素邊緣檢測、基于插值的亞像素邊緣檢測[9]。
矩的方法不受圖像的尺寸和旋轉角度的干擾,但是,計算時間長。擬合法的抗擾性強,所檢出的邊緣點位置較準確,但在抗干擾和檢測出復雜形狀的邊緣之間存在較尖銳的矛盾[10]。同時,為了提高精度和抗干擾能力,擬合需要的點較多,使得計算變得復雜。插值的方法檢測精度較高,計算也較擬合的方法簡單。但是,插值的檢測精度易受到噪聲的影響。
基于插值的亞像素邊緣檢測容易受到噪聲影響,文中提出一種改進的插值方法。首先,對圖像進行粗邊緣檢測。然后,在像素級精度邊緣的基礎上,將二維圖像插值轉化為圖像梯度方向的一維插值。最后,通過多重插值,對圖像進行亞像素邊緣檢測。該方法計算簡單,有效地提高基于插值的方法檢測的精度。
2.1 粗邊緣檢測
圖像處理中,直接對整幅圖像進行插值處理,插值計算十分復雜,計算時間很長。同時,一般來說,插值是對圖像進行分段插值,整幅圖像中,邊緣只占很小的一部分,不是邊緣部分的插值計算都是不必要的。
因此,亞像素邊緣檢測不是直接對整幅圖像進行插值,而是先進行粗邊緣檢測,然后再進行亞像素邊緣檢測。粗邊緣檢測是使用像素級邊緣檢測,找到圖像邊緣所在的一個局部區域。在粗邊緣檢測后,亞像素邊緣檢測的插值點大量減少,計算量也隨之減小。粗邊緣檢測后,進行亞像素邊緣檢測不僅不會影響邊緣的檢測,還能減少冗余的計算量,有效地提高亞像素邊緣檢測的速度。
2.2 精邊緣檢測
圖像是二維的,如果對圖像進行二維的插值,插值模型較復雜,而且求解復雜。將二維圖像的邊緣檢測轉化為一維圖像的邊緣檢測,不僅能簡化插值計算,也能是邊緣的求解變得更加方便。
問題的關鍵是如何將二維的圖像邊緣檢測轉化為一維圖像的邊緣檢測。如果能夠確定邊緣的梯度方向,在梯度方向上,對圖像進行亞像素邊緣檢測,就能得到圖像的亞像素邊緣。這里給出一種較為簡單的梯度近似計算方法:對圖像進行粗邊緣檢測后,在圖像上,以檢測到的整數像素邊緣為中心,獲取(2N+1)×(2N+1)的正方形中所有像素點的坐標和灰度值。將圖像分為如圖2的4個方向。

圖2 圖像的方向
在圖像邊緣方向,灰度值的變化不明顯。在圖像邊緣梯度方向,灰度值變化較大。故邊緣方向相鄰的兩點灰度值差的絕對值很小,其他方向較大。因此,可以認為邊緣方向相鄰兩點灰度值差的絕對值之和最小。即:令Si為i(i=0,1,2,3)方向所有相鄰像素點灰度值差的絕對值之和。若Si最小,則i方向是邊緣方向,邊緣的梯度方向與邊緣方向垂直,從而可以確定邊緣的梯度方向,并記錄下邊緣梯度方向的2N+1個像素點的坐標和灰度值。
由于圖像中存在噪聲,如果直接對邊緣梯度方向進行插值,插值精度會受到影響。為了提高插值結果的準確性和穩定性,提出了多重插值的方法。選取9×9的正方形窗口,首先,對梯度方向兩端的4個點分別分點進行牛頓多項式插值,然后,分別計算插值點中點的像素值,并將計算結果作為新的插值節點。最后,用兩個計算得到的兩點和剩下的一點進行3次Herminte插值。但是,想要是Herminte插值的結果是3次多項式,必須有4個插值條件。此處,只有3個插值點,故缺少一個插值條件。因此,增加像素級邊緣點的一階導數為插值條件。一階導數可以用數值微分中的二階中心差商求得。
牛頓多項式插值:若已知4個插值點(x0,y0),(x1,y1),(x2,y2),(x3,y3)。 則牛頓多項式的插值結果為 3次多項式,即:

Herminte插值:已知3個插值節點(x0,y0),(x1,y1),(x2,y2)且m=f′(x1)。則:

最后,計算3次Herminte插值函數的二階導數,求出其二階導數為零的點。所得的點即為圖像的亞像素邊緣點。對所有粗邊緣檢測得到邊緣點進行精邊緣檢測就可以得到圖像所有的亞像素邊緣。亞像素邊緣檢測的流程如圖3。

圖3 亞像素邊緣檢測流圖
基于VC6.0平臺對文中算法進行編程實驗。實驗中采用德國AVT相機,其分辨率為640×480。對邊長分別是10mm,11mm,12mm,13mm,14mm的標準正方形塊進行多次檢測。表1是實驗的軟硬件環境,表2是實驗結果。

表1 實驗的軟硬件環境
從表中可以看出,對于不同尺寸的標準正方形塊的不同次測量。其檢測的最大誤差僅為0.109pixel。精邊緣檢測耗時也較少。
本文對基于插值法的邊緣檢測進行了改進,通過粗邊緣檢測縮小了精邊緣檢測的范圍,減少了計算量。通過多重插值,提高了圖像邊緣檢測的精度和穩定性。從實驗結果來看,該算法的重復檢測精度為0.109pixel,耗時也較短。能應用于實時檢測系統。

表2 實驗結果
[1]王耀南,李樹濤,毛建旭.計算機圖像處理與識別技術[M].北京:高等教育出版社,2001:143-145.
[2]徐中宇,寧闖,周亞洲.一種快速亞像素邊緣檢測算法[J].吉林大學學報(理學版),2014,02:308-312.
[3]Tabatabai A J,Mitchell O R.Edge Location to Subpixel Values in Digital Imagery[J].IEEE Trans on Pattern Analysis and Machine
Intelligence,1984,6(2):188-201
[4]Jensen K,Anastassiuo D.Subpixel Edge Localization and the Interpolation of Still Images[J].IEEE Trans on Image Processing,1995,4(3):285-295.
[5]Hueckel M F.An Operatorwhich Locates Edges in Digitized Pictures[J].Journal of the Association for Computing Machinery,1971,18(1):113-125.
[6]孫秋成,譚慶昌,安剛,侯躍謙.一種亞像素精度的邊緣檢測方法[J].北京工業大學學報,2009,10:1332-1337.
[7]高朝陽,張太發,曲亞男.圖像邊緣檢測研究進展[J].科技導報,2010,20:112-117.
[8]段瑞玲,李慶祥,李玉和.圖像邊緣檢測方法研究綜述[J].光學技術,2005,03:415-419.
[9]孫少紅,袁華,張彤.常用的亞像素邊緣檢測方法的對比研究[J].大眾科技,2014,04:27-29.
[10]尚雅層,陳靜,田軍委.亞像素邊緣檢測算法在刀具參數檢測中的應用[J].計算機工程與科學,2011,04:107-109.
The Detection of Subpixel Edge Based on Multiple Interpolating
TIAN Yong,HANG Zheng-yu,ZHOU Yong-hong
(College of Manufacturing Science and Engineering,Sichuan University,Chengdu 610065)
The subpixel edge detection is an important content of image processing,and the precision of edge detection influences the precision of image processing directly.Analyzes the advantages and disadvantages of some subpixel edge detection algorithm and improves the subpixel edge detection of images based on interpolation,reduces the range of detection and the amount of calculation by the thick edge detection.Proposes multiple interpolation method,first,calculates part of the interpolation points,then the results of interpolation points in as new interpolation points.Through the two times interpolation,the precision of edge detection and anti-jamming ability are enhanced. From the results of experimental,the maximum error of subpixel edge detection algorithm is 0.109 pixel.Time-consuming of the algorithm is short,so the algorithm can be applied to a real-time detection system.
Machine Vision;Image Processing;Subpixel;Herminte Interpolation;Edge Detection;Multiple Interpolation
1007-1423(2017)09-0115-05
10.3969/j.issn.1007-1423.2017.09.026
田庸(1992-),男,四川資陽人,碩士生,研究方向為機器視覺與圖像處理
2017-02-28
2017-03-20
韓震宇(1963-),男,甘肅蘭州人,博士,研究方向為測量與控制
周永洪(1993-),男,重慶人,碩士生,研究方向為現代計算機控制與應用