文/汪海洋 陳德林 帥一師 郭宏宇 吳成 岳林幫
角點(diǎn)是圖像重要的特征信息,角點(diǎn)是圖像中重要的局部特征信息,角點(diǎn)檢測是計算圖像角點(diǎn)的數(shù)學(xué)方法。從圖像分析角度,角點(diǎn)可以有以下兩種定義:
(1)角點(diǎn)可以是兩個邊緣的角點(diǎn);
(2)角點(diǎn)是鄰域內(nèi)具有兩個主方向的特征點(diǎn)。
目前,角點(diǎn)檢測大致分為三大類:
(1)基于灰度圖像的角點(diǎn)檢測;
(2)基于二值圖像的角點(diǎn)檢測;
(3)基于輪廓曲線的角點(diǎn)檢測。
常見的基于灰度的角點(diǎn)檢測算法有Kitchen-Rosenfeld角點(diǎn)檢測算法,Harris角點(diǎn)檢測算法、KLT角點(diǎn)檢測算法及SUSAN角點(diǎn)檢測算法。從角點(diǎn)檢測的快速性、準(zhǔn)確性等角度看,以上算法各有利弊。相比較而言,Harris角點(diǎn)檢測應(yīng)用較為廣泛,且計算結(jié)果穩(wěn)定。但是,其檢測精度、效率仍有較大的提升空間。
Harris角點(diǎn)在Moravec算法基礎(chǔ)上提出的一種基于信號的點(diǎn)特征檢測改進(jìn)算法。人眼對角點(diǎn)的識別通常是在一個局部的小區(qū)域或小窗口完成的。如果在各個方向上移動這個特征的小窗口,窗口內(nèi)區(qū)域的灰度發(fā)生了較大的變化,那么就認(rèn)為在窗口內(nèi)遇到了角點(diǎn)。Harris角點(diǎn)算法與人眼感官一樣,在水平和垂直方向變化較大的點(diǎn)則為角點(diǎn)。算法對窗口定義為一個矩陣函數(shù),窗口可以在任意方向上位移,以像素點(diǎn)為中心發(fā)生x和y的位移,圖像的將會產(chǎn)生u和v的灰度變換。
圖像窗口平移[u,v]產(chǎn)生灰度變化的自相關(guān)函數(shù)如下:
其中,窗函數(shù)(權(quán)重矩陣)可以是平坦的,也可以是高斯函數(shù)。然而將式(1)進(jìn)行泰勒展開如下:
表1:標(biāo)準(zhǔn)Harris和本文改進(jìn)算法對比
圖1
圖2
其中
通過卷積得到MI在領(lǐng)域像素上局部平均,矩陣M稱為Harris矩陣,定義角點(diǎn)響應(yīng)函數(shù)CRF:
CRF可防止水平梯度和垂直梯度離散化,CRF只和M的特征值有關(guān),CRF為大數(shù)值正數(shù)時是角點(diǎn),CRF為大數(shù)值負(fù)數(shù)時是邊緣,CRF為小數(shù)值時則表示平坦區(qū)域。在角點(diǎn)檢測時,對角點(diǎn)響應(yīng)函數(shù)CRF進(jìn)行閾值處理,CRF大于給定閾值,則檢測窗口中心點(diǎn)是角點(diǎn)。閾值高低將直接影響角點(diǎn)檢出數(shù)量,閾值較低時,檢出角點(diǎn)數(shù)量較多,否則角點(diǎn)數(shù)據(jù)就較少。為了減少后續(xù)匹配算法的計算量,需要合理設(shè)定閾值,從而將局部響應(yīng)較高的角點(diǎn)檢出,抑制一些“偽角點(diǎn)”。因此,如何自動設(shè)定閾值成為本領(lǐng)域的研究熱點(diǎn)。
改進(jìn)算法主要為了提高Harris算法檢測速率。在計算自相關(guān)矩陣前,先做預(yù)處理。設(shè)定一個閾值TH1,確定待選點(diǎn)與中心點(diǎn)在垂直或水平方向上的相似性。假設(shè)待選點(diǎn)與中心點(diǎn)的灰度差小于設(shè)定閾值TH1,則認(rèn)為中心點(diǎn)與該點(diǎn)相似,同理可判斷鄰域內(nèi)其他點(diǎn)的相似性。
圖3:Rice圖像檢測結(jié)果
改進(jìn)算法主要采用3×3的矩形窗口,考慮中心點(diǎn)與領(lǐng)域內(nèi)8個像素點(diǎn)的相似性。設(shè)中心點(diǎn)與領(lǐng)域點(diǎn)相似的個數(shù)為L(x,y),則L(x,y)最大值為8,最小值為0,討論各種情況如下:
L(x,y)=0時,表示沒有相似點(diǎn),像素點(diǎn)為孤立像素點(diǎn)或者噪聲點(diǎn),應(yīng)排除像素點(diǎn)。
L(x,y)=8時,表示9個點(diǎn)在灰度值沒有梯度變化,此類情況也應(yīng)排除。
L(x,y)=7時,有兩種情況,圖1和圖2都不是中心點(diǎn)為角點(diǎn),則這種情況也不符合。
用Harris算法對一副圖片進(jìn)行角點(diǎn)提取時,需要通過一個固定閾值進(jìn)行不斷調(diào)試,才會得到比較好的結(jié)果,但是所設(shè)置的閾值并不一定對其他圖片都適用,這需要算法本身有能力計算出合適的閾值。本算法將閾值設(shè)定為角點(diǎn)響應(yīng)函數(shù)最大值的p倍,即:。其中p取經(jīng)驗(yàn)值[0.005,0.015]時,會檢測出較多的角點(diǎn),同時檢測到偽角點(diǎn)的數(shù)目較少。
為了驗(yàn)證實(shí)驗(yàn)算法的預(yù)處理的有效性,使用一副Rice圖片進(jìn)行前后效果比對。
從Rice的角點(diǎn)檢測實(shí)驗(yàn)圖(圖3)可以看出:在標(biāo)準(zhǔn)Harris算法檢測下圖像邊緣的偽角點(diǎn)均被檢測出,而使用本文的檢測算法能有效地過濾邊緣的偽角點(diǎn),提升檢點(diǎn)檢測的準(zhǔn)確性。此外,本算法檢測角點(diǎn)的時間在多次實(shí)驗(yàn)下較原算法大約縮減30%,有效的節(jié)約了時間,增加了算法的時效性。如表1所示。
針對Harris角點(diǎn)檢測算法運(yùn)行時間長和精確度等級不高,本文提出了一種改進(jìn)的Harris角點(diǎn)檢測算法,以提高角點(diǎn)檢測效率。在計算Harris矩陣M矩陣前,利用灰度差對圖像進(jìn)行了預(yù)處理。實(shí)驗(yàn)表明,通過預(yù)處理,確定了候選角點(diǎn),耗時降低了21.92%。改進(jìn)算法在能有效地減少運(yùn)算時間的同時還減少了偽角點(diǎn)數(shù)量。