楊佳豪,董靜靜,袁 彤,何雨恒,楊 丹,石美紅
(西安工程大學 計算機科學學院,陜西 西安 710600)
角點包含圖像中的重要結構信息,且信息的數(shù)據量少,是數(shù)字圖像范疇中極為重要的特征點。因其具有旋轉不變性、尺度不變性,同時對光照變化、仿射及投影變換也有一定不變性等特點[1-4],在相機標定[5]、圖像拼接[6]、三維建模[7]、目標跟蹤[8]等機器視覺領域有很高的應用價值。
角點檢測方法可分為基于邊緣輪廓、基于模型和基于灰度變化3類角點檢測[9].基于邊緣輪廓的角點檢測嚴重依賴圖像的邊緣檢測性能,一旦圖像邊緣出現(xiàn)中斷,直接影響角點提取的質量。基于模型的角點檢測是采用定義的模板,以待測像素為中心,通過比較周圍像素和中心像素的灰度強度來尋找角點,諸如經典的SUSAN算法[10],其優(yōu)點是對噪聲不敏感,但邊緣點和角點區(qū)分不明顯,運算速度比較慢。為此,邵澤明等[11]提出了一種基于SUSAN算法的分層快速角點檢測算法,可較大幅度地提高運算速度,節(jié)省運算時間;文獻[12]提出了一種基于灰色絕對關聯(lián)度分析的角點檢測算法,該算法的綜合檢測性能較好,且算法簡單、易于實現(xiàn);陳洪等[13]通過改進SUSAN算法中灰度差閾值的獲取方法,提出一種自適應的角點特征提取方法,提高了角點檢測的精度,縮短了角點特征提取時間,具有較好的魯棒性。基于灰度變化的角點檢測是根據圖像像素點的灰度值變化提取角點,諸如經典的Harris算法[14],其優(yōu)點是計算量小、魯棒性好,但角點檢測的性能依賴于所選取的高斯窗口大小和閾值,且易受到噪聲影響。針對Harris算法存在的缺陷,文獻[15]提出了一種基于變分B樣條濾波與快速局部窗口搜索相結合的Harris特征點檢測算法,角點檢測定位準確、抑噪性好;文獻[16]提出了一種快速預篩選方法,并結合多閾值角點提取及鄰近角點剔除策略,有效避免了角點簇擁現(xiàn)象,提高了角點檢測效率;文獻[17]通過在Harris算法中采用一種加權系數(shù)濾波窗口,有效地降低了噪點對角點檢測的干擾,提高了角點檢測的精準度。基于Harris和SUSAN 2種算法的優(yōu)勢互補,文獻[18]提出了一種 Harris 鄰域像素取差法與SUSAN相結合的改進算法,改善了角點檢測的準確性;文獻[19]提出了一種基于灰度差分與模板的Harris角點檢測快速算法,能準確地提取圖像中的角點,并去除了大量的偽角點。
受文獻[19]的啟示,文中提出了一種基于圖像鄰域灰度變化的角點檢測改進方法。根據常見的X型、T型和Y型3類角點的空間分布特點,借鑒Harris角點檢測算法思想,對圖像進行第1次角點集篩選,然后基于USAN模板內的分布離散度對初始角點集進行第2次角點集篩選,最后采用非極大值抑制函數(shù),從第二次篩選的角點集中提取角點。將本文改進方法分別與 Harris 算法、SUSAN算法和文獻[19]算法的角點檢測結果進行對比,說明了文中改進方法的有效性。
Harris算法[14]是基于窗口的圖像灰度變化自相關性來檢測角點。在圖像上無論怎樣滑動窗口,如果圖像的灰度值均變化較大,則認為窗口區(qū)域存在角點。窗口誤差函數(shù)計算式為
(1)
對I(x+u,y+v)進行二元泰勒級數(shù)展開得到
(2)
式中:I(x,y)和I(x+u,y+v)分別表示位于(x,y)和(x+u,y+v)的像素灰度值;w(x,y)為高斯函數(shù);Ix表示在x方向的偏導數(shù);Iy表示像素在y方向上的偏導數(shù)。令
設M的特征值是λ1和λ2,分別反映了x方向和y方向的極值曲率。當這2個正交方向上的極值曲率均較大時,疑似為角點。位于(x,y)像素的角點響應函數(shù)為
CRF(x,y)=detM-k(traceM)2
(3)
式中:detM=λ1λ2;traceM=λ1+λ2;k是經驗值,通常取0.04~0.06。如果CRF(x,y)的值大于預先設定的閾值T,那么位于(x,y)像素的疑似角點才為真正角點[19]。由于Harris算法是利用圖像一階或二階偏導數(shù)來檢測角點,若不存在大尺度變化,提取的角點穩(wěn)定可靠,但對噪聲敏感,對于T型角點的定位精度低[20]。
SUSAN算法選用由37個像素點組成的環(huán)形窗口模板(如圖1所示)檢測角點。
圖 1 7×7環(huán)形窗口模板
其中心為被檢測點,也稱為核心點。根據模板內被檢測點的周圍鄰域像素灰度強度與核心點像素灰度強度差的不同,被劃分強度不相似區(qū)域和強度相似區(qū)域(即核值相似區(qū)USAN),其計算模型為
(4)
(5)
式中:I(r)表示周圍鄰域像素r的灰度強度值;I(r0)表示核心像元r0的灰度強度值;t為相似度閾值;CRF(r)為角點檢測值,非零為疑似角點;n(r)=∑f(r)為f(r)的累加和,表示USAN面積;g為角點響應幾何閾值,取環(huán)形窗口模板面積的1/2[10]。然后,利用USAN的重心遠離圓形模板核心位置來去除偽角點。由于SUSAN算法是利用USAN的面積大小來檢測角點,所以抗噪能力強、角點檢測效率高,但是因沒有考慮USAN的形狀分布,致使角點的定位準確性較低,難以區(qū)分諸如X型角點與邊緣點。
在圖像中,角點往往位于兩直線的交點,即至少有2個或2個以上灰度變化較明顯的區(qū)域相交的匯聚點。因此,角點至少在2個方向上都有較大的灰度變化。常見角點有X型、T型、Y型。圖2是基于7×7窗口的不同角點分布的部分示意圖,其中,USAN面積的相似區(qū)域面積均為18。
(a) X型角點 (b) T型角點
(c) Y型角點 (d) 邊緣圖 2 基于7×7窗口的不同角點分布示意圖Fig.2 Diagram of distribution of different corner based on 7×7 window
首先,利用像素灰度變化的空間自相關和角點的形狀分布特征,基于3×3鄰域環(huán)形模板,依次掃描圖像,進行第一次角點初篩,得到初始角點集,再根據USAN分布的離散度,對初始角點集進行第2次角點定位,得到準角點集,然后,采用非極大值抑制法,從準角點集中得到最終角點集。
為了降低遍歷檢測角點的時間開銷,選用一個3×3鄰域環(huán)形模板(如圖3所示)。
圖 3 3×3環(huán)形窗口模板
對像素進行初始角點篩選。首先,計算中心像素c與周圍相鄰像素的灰度差值
σ(i)=|I(i)-I(c)|
(6)
式中:i=0,1,2,…,7;I(c)和I(i)分別表示位于(c)和(i)的像素灰度值。然后,利用圖像灰度變化的空間自相關性,分別計算沿中心像素c的x方向I(3)、I(7),y方向I(1)、I(5),45°方向I(2)、I(6)和135°方向I(0)、I(4)與中心像素I(c)的灰度差值σ(i),按式(7),判斷其是否均小于等于閾值T(閾值T根據經驗值設置)。
(7)
如果是或者僅在一個方向上存在大于T,則移動窗口進行下一像素檢測。否則,統(tǒng)計周圍相鄰像素與中心像素的灰度相似的數(shù)目個數(shù)
(8)
根據角點的形狀特征和模板中相鄰像素與中心像素的灰度相似度分布(圖4是部分灰度相似度分布圖),初篩角點如下:當S(c)值在[0,1]范圍時,表明中心像素的灰度與鄰域像素的灰度不相似,則中心像素為噪聲點;當S(c)值在[7,8]范圍時,表明中心像素的灰度與鄰域像素的灰度相似,則中心像素位于平坦區(qū);若S(c)值在[2,3]范圍時,直接將中心像素標記為準角點;當S(c)值在[4,6]范圍時,再進行第2次角點篩選。
圖 4 與中心像素灰度相似的鄰域像素灰度分布示意圖Fig.4 Diagram of distribution of neighborhood pixel gray level similar to central pixel gray level
從圖2可看出,若為角點,其圍繞中心像素點的鄰域像素點的相似區(qū)域分布是離散的,否則,其相似區(qū)域分布是連續(xù)的。針對X型、T型、Y型3類角點,對值在[4,6]范圍的初篩角點進行二次定位。
首先,采用式(4)和(5),計算USAN面積。如果USAN面積值大于g時,則從初篩角點集中剔除。如果USAN面積值小于g時,則定位為準角點,否則,選用圖2的3×3鄰域環(huán)形模板,依次對從編號0到7的8鄰域像素,判斷其相似區(qū)域的空間分布,若相似區(qū)域空間分布的離散度大于2,即由n(i)到n(i+1)的值由1跳變?yōu)?或者由0跳變?yōu)?的次數(shù)之和大于2,其中,i=0,1,2,…,7,i+1=(i+1)mod 8,則可定位為準角點,否則,從初始角點集中剔除。例如,圖2(a)的X型角點的8鄰域相似區(qū)域分布離散度為3;圖2(b)的T型角點的8鄰域的相似區(qū)域分布離散度為4;圖2(c)的Y型角點的8鄰域的相似區(qū)域分布離散度為5;而圖2(d)位于邊緣的中心像素,其8鄰域的相似區(qū)域分布離散度小于等于2。
首先計算待測準角點在x,y,xy方向的灰度變化梯度值,然后根據其角點響應值,采用局部非極大抑制法,精準定位角點。具體步驟如下:
第1步 采用3×3窗口的Sx(i)和Sy(i)(如式(9)所示)模板,以準角點i為中心,分別計算它與鄰域像素在x和y方向上的灰度變化梯度;
(9)
第2步 根據x和y方向的灰度變化梯度,計算準角點i在x,y,xy方向的梯度值,即
τx(i)=Sx(i)2,τy(i)=Sy(i)2
τxy(i)=Sx(i)Sy(i)
(10)
第3步 計算準角點及其鄰域像素的響應值
R(i)=τx(i)×τy(i)-τxy(i)2-t×
(τx(i)+τy(i))2
(11)
其中t∈[0.04,0.06]。
第4步 在3×3窗口內,若Ri為局部極大值,則定位為角點,否則,從準角點集中剔除。
圖5是利用改進算法對三角形圖進行角點檢測的實驗結果圖。
圖 5 改進算法的實驗結果圖Fig.5 Experimental result diagram of improved algorithm
改進算法在處理器為Inter(R) Core i5-7300HQ 2.50 GHz、內存8 GB的計算機上運行。實驗數(shù)據分別采用模擬幾何圖像和真實圖像進行實驗,并與Harris算法、SUSAN算法和文獻[19]算法進行對比。
為了客觀評價角點檢測算法的性能,選擇常用的一致性(CCN,Consistency of Corner Numbers) 和準確性(ACU,Accuracy)評判準則[21]進行性能評價,其計算式為
CCN=100%×1.1-|Nt-No|,
(12)
式中:No表示檢測到原圖像的角點數(shù);Nt表示加噪后檢測到圖像的角點數(shù);Ng表示原圖像的真實角點數(shù);Na表示與真實角點相匹配的實際檢測到的角點數(shù)。
圖6和表1為對2種模擬幾何圖像進行角點檢測的實驗結果。
(a) 模擬幾何圖像1
(b) 模擬幾何圖像2圖 6 不同角點檢測算法對模擬幾何圖像的檢測結果
圖像算法檢測角點數(shù)正確角點數(shù)偽角點數(shù)漏檢角點數(shù)ACU/% 模擬幾何圖像1Harris算法943856465.45 SUSAN算法573918380.64 文獻[19]算法44422097.72 本文算法424200100模擬幾何圖像2Harris算法753144169.10 SUSAN算法503119179.44 文獻[19]算法33321098.48 本文算法323200100
從圖6可看出,Harris算法存在角點簇和角點漏檢的現(xiàn)象;SUSAN算法有所改進,但存在部分偽角點;從放大圖中可看到,文獻[19]算法也存在少量的角點簇,相對其他算法,本文改進算法能檢測到真實角點。從表1可以看出,依據客觀評價指標, Harris算法因存在大量的角點簇和少量的漏檢角點,致使ACU分別為65.45%和69.10%;相對Harris算法和SUSAN算法的角點檢測準確性能有所改善,ACU分別為80.64%和79.44%;文獻[19]算法進一步改善了角點檢測準確性能,ACU分別為97.72%和98.48%。相比而言,本文改進算法很好地剔除了偽角點,角點檢測準確性能均達100%。
圖7和表2是對用于相機標定的棋盤圖進行角點檢測的實驗結果。從圖7可以明顯看到,Harris算法存在角點簇,SUSAN算法有漏檢角點或角點定位偏離;文獻[19]算法能檢測到棋盤格中全部角點,但仍存在少量偽角點或角點定位有點偏差;相對文獻[19]算法,本文改進算法能精準定位棋盤格的全部角點,ACU提升了4.26%。
圖 7 不同角點檢測算法對棋盤格圖的檢測結果Fig.7 Detection results of different corner detection algorithms on checkerboard images
算法檢測角點數(shù)正確角點數(shù)漏檢角點數(shù)偽角點數(shù)ACU/% Harris算法8511602046353.84 SUSAN算法4241651525965.28 文獻[19]算法1881800895.74 本文算法18018000100.00
為了進一步驗證本文改進算法的有效性,選用真實圖像進行實驗驗證。圖8和表3為部分真實圖像的角點檢測結果??梢钥闯?所有算法都存在漏檢角點(見紅色標記)和偽角點問題,但是,Harris算法和SUSAN算法存在著明顯的角點簇,諸如房檐。文獻[19]算法和本文改進算法有了較大改善,本文改進算法的角點定位更精確(見放大圖)。
(a) 真實圖像1
(b) 真實圖像2
圖8不同角點檢測算法對真實圖像的檢測結果
Fig.8 Detection results of different corner deterction algorithms on real images
為了測試本文改進算法的抗噪性,對圖6(b)的模擬幾何圖像和圖8(b)的真實圖像分別加入不同密度的椒鹽噪聲和不同方差的高斯噪聲,對比其一致性指標CCN,結果如圖9所示。隨著噪聲密度的增加,各算法的CCN下降,Harris算法最明顯,其次是SUSAN算法,文獻[19]算法和本文改進算法的CCN性能明顯好于Harris算法和SUSAN算法。但是,隨著椒鹽和高斯的噪聲密度加大,本文改進算法的CCN性能優(yōu)于文獻[19]算法。對于模擬幾何圖像,當高斯噪聲的方差值大于0.6時,文獻[19]算法的CCN值低于本文改進算法;對于真實圖像,當高斯噪聲的方差值大于0.4時,文獻[19]算法的CCN值下降速度明顯比本文改進算法快。
(a) 模擬幾何圖像抗椒鹽噪聲的CCN變化曲線
(b) 真實圖像抗椒鹽噪聲的CCN變化曲線
(c) 模擬幾何圖像抗高斯噪聲的CCN變化曲線
(d) 真實圖像抗高斯噪聲的CCN變化曲線圖 9 不同算法的角點檢測一致性CCN變化曲線Fig.9 Change curves of CCN of corner detection from different algorithms on images
為了提高角點檢測的準確性,增強角點檢測的抗噪性,借鑒Harris算法和SUSAN算法的思想,提出了一種基于圖像鄰域灰度變化的角點檢測改進算法。改進算法中可以檢測X型、T型、Y型3類角點,通過角點初篩,可有效地降低角點檢測的時間開銷?;赨SAN模板內的分布離散度和非極大值抑制法,定位角點,在有效消除偽角點的同時,避免角點漏檢。這為目標的重建、跟蹤、識別等處理奠定了基礎。后續(xù)將對本文改進算法做進一步優(yōu)化,提升角點檢測的自適應性和實時性。