葉增爐
(銅陵學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系,安徽 銅陵 244000)
Harris角點(diǎn)檢測算法的實(shí)現(xiàn)及應(yīng)用效果分析
葉增爐
(銅陵學(xué)院 數(shù)學(xué)與計算機(jī)科學(xué)系,安徽 銅陵 244000)
Harris角點(diǎn)檢測算法是一種非常有效的圖像角點(diǎn)提取算法,提取的角點(diǎn)穩(wěn)定可靠、均勻而且合理。用C#語言實(shí)現(xiàn)了Harris角點(diǎn)檢測算法實(shí)現(xiàn)程序,并結(jié)合圖例分析了該算法各種參數(shù)的設(shè)置。
角點(diǎn)檢測;harris角點(diǎn)檢測;C#語言
角點(diǎn)特征具有計算量少,匹配簡單以及旋轉(zhuǎn)、平移、放縮不變的性質(zhì),因此角點(diǎn)在圖像配準(zhǔn)與匹配、目標(biāo)識別、運(yùn)動分析、目標(biāo)跟蹤等應(yīng)用領(lǐng)域都起著非常重要的作用。Harris角點(diǎn)檢測算法是Harris和Stephens[1]在1988年提出的角點(diǎn)特征提取算子。這種算子受信號處理中自相關(guān)函數(shù)的啟發(fā),給出與自相關(guān)函數(shù)相聯(lián)系的矩陣M。M陣的特征值是自相關(guān)函數(shù)的一階曲率,如果兩個曲率值都高,那么就認(rèn)為該點(diǎn)是角點(diǎn)特征。
Harris算子是一種有效的點(diǎn)特征提取算子,其優(yōu)點(diǎn)總結(jié)起來有幾個方面[2]:(1)計算簡單:Haris算子中只用到灰度的一階差分以及濾波,操作簡單;(2)提取的點(diǎn)特征均勻而且合理,Haris算子對圖像中的每個點(diǎn)都計算其興趣值,然后在鄰域中選擇最優(yōu)點(diǎn)。Harris角點(diǎn)提取方法是目前效果最好的,它不受攝像機(jī)姿態(tài)及光照的影響[3]。
Harris角點(diǎn)檢測算法基本原理描述如下:建立下面矩陣M:
其中 I(x,y)是亮度值,這里用灰度表示;Ix為圖像I的x方向的梯度;Iy為y方向的梯度。通過分析上面矩陣可以看出如果在一點(diǎn)上矩陣M的兩個特征值很大,則在該點(diǎn)向任意方向上的一個很小的移動都會引起灰度值的較大變化。這也就說明該點(diǎn)是一個角點(diǎn)。
在矩陣M基礎(chǔ)上,角點(diǎn)響應(yīng)函數(shù)CRF定義為:
其中det為矩陣M的行列式;trace為矩陣M的跡(矩陣對角線元素的和);k為常數(shù),一般取0.04[1]。CRF的局部極大值所在的點(diǎn)即為角點(diǎn)。
該算法易受噪聲的影響。為了減小噪聲的干擾,在對圖像進(jìn)行偏導(dǎo)計算以后用高斯濾波器對數(shù)據(jù)進(jìn)行平滑。于是(1)式矩陣M重新定義為如下(3)式:
按此方法求出的角點(diǎn)數(shù)量很多。為了減少匹配計算量,可以對想要獲得的角點(diǎn)數(shù)量進(jìn)行限制。限制方法是確定一個閾值,僅僅選取CRF值大于這個閾值的點(diǎn)作為角點(diǎn)。這個閾值根據(jù)需要的檢點(diǎn)數(shù)量來確定。
harris角點(diǎn)檢測算法的具體編程步驟:
(1)對灰度圖像I的每一點(diǎn),計算其在x和y方向上的一階導(dǎo)數(shù),以及二者的乘積。具體操作時,采取類似卷積的方式,分別使用(5)式中的模板wx(x方向)和模板wy(y方向)在圖像上移動,并在每個位置計算對應(yīng)中心像素的梯度值,得到x方向和y方向的兩幅梯度圖像。計算每個像素位置對應(yīng)的x方向和y方向梯度的乘積,得到1幅新的圖像。3幅圖像中的每個像素對應(yīng)的屬性值分別代表Ix,Iy和IxIy。
(2)對步驟1所得到的3幅圖像分別進(jìn)行高斯濾波(標(biāo)準(zhǔn)差為σ)。即采用高斯模板分別與這3幅圖像進(jìn)行卷積,得到(3)式矩陣M。
(3)計算原圖像上對應(yīng)每個像素的角點(diǎn)響應(yīng)函數(shù)值。角點(diǎn)對應(yīng)于CRF的局部極大值點(diǎn)。在這里使用了一種改進(jìn)的計算cim(R)的方法。該方法由Nobel提出[4],即:
(4)設(shè)置CRF的門限,對提取的角點(diǎn)個數(shù)進(jìn)行限制。局部極值點(diǎn)的數(shù)目往往很多,通過設(shè)置CRF的門限,根據(jù)實(shí)際需要提取一定數(shù)量的最優(yōu)點(diǎn)作為最后的結(jié)果。在矩陣cim中,同時滿足“cim大于閾值thresh和cim是某鄰域內(nèi)的局部極大值”這兩個條件的點(diǎn)被認(rèn)為是角點(diǎn)。
在VS2005中建立Windows組件解決方案,在軟件開發(fā)中,充分考慮到影響Harris角點(diǎn)檢測算法的各種參數(shù),程序運(yùn)行界面如圖1所示。圖2顯示不同閾值角點(diǎn)提取效果圖,可以看出角點(diǎn)提取的效果依賴于閾值的設(shè)定,提高閾值,則提取的角點(diǎn)數(shù)目變少;降低閾值,則提取的角點(diǎn)數(shù)目變多。
圖1 程序運(yùn)行界面圖
圖2 不同閾值角點(diǎn)提取效果圖 (a)閾值4500(b)閾值2000
(1)Haris算子中只用到灰度的一階差分以及濾波,操作簡單。
(2)Harris角點(diǎn)檢測,可以通過設(shè)置高斯窗口寬度、高斯函數(shù)方差、非極大抑制領(lǐng)域和閥值,來改變提取點(diǎn)角點(diǎn)的范圍和數(shù)目。閾值大會丟失角點(diǎn)信息,閾值小又會提取出偽角點(diǎn)。另外,求局部極大值的鄰域大小也將會影響提取角點(diǎn)的數(shù)目和容忍度。
(3)Harris角點(diǎn)檢測雖然采用了可調(diào)的高斯平滑窗口,但實(shí)際運(yùn)用中高斯窗口的大小不易控制。若選用較小的高斯平滑窗口,則會因?yàn)檫吘壖?xì)節(jié)的影響導(dǎo)致眾多偽角點(diǎn)的出現(xiàn);若用較大的高斯平滑窗口,則會因?yàn)榫矸e的圓角效應(yīng)使得角點(diǎn)的位置產(chǎn)生較大的偏移,而且增加了算法的計算量。
[1]C.G.Harris,M.J.Stephens.A combined corner and edge detector[A].In:Proceedings Fourth Alvey Vision Conference[C].Manchester,U.K.,1988:147-151
[2]劉玉斌.一種分階段的高精度亞像素特征點(diǎn)提取方法[J].南華大學(xué)學(xué)報(自然科學(xué)版),2006,20(2):54-57
[3]Schmid C,Mohr R,Bauckhage C.Evaluation of Interest Point Detectors[J].International Journal of Computer Vision, 2000,37(2):151-172
[4]J.A.Noble.Finding corners[J].Image and Vision Computing,1988,6(2):121-128
Implementation of Harris corner detection algorithm and analysis of its applied results
YE Zeng-lu
Harris corner detection algorithm is a very effective image corner extraction algorithm,extraction of the corner steady, reliable, uniform and reasonable.In this paper, C#language to implement the Harris corner detection algorithm program,And analysis of various parameters of the algorithm set.
corner detection;Harris corner detection;C#language
TP391 < class="emphasis_bold">[文獻(xiàn)標(biāo)識碼]A
A
1009-9530(2011)05-0025-02
2011-06-23
銅陵學(xué)院自然科學(xué)研究項目(2007tlxykj001);高校省級自然科學(xué)研究項目(KJ2009B105Z2009)
葉增爐(1972-),男,安徽太湖人,銅陵學(xué)院數(shù)學(xué)與計算機(jī)科學(xué)系講師,碩士研究生。