文/張瑞麟 李佳蔚 甘雨
角點是圖像的一種重要的特征點,是圖像的特征,有很多對圖像的操作都是針對角點進行的。目前角點檢測算法廣泛應用在圖像配準、圖像拼接和圖像識別等方面,所以對角點檢測算法的完善在現階段的研究中有十分重要的意義。FAST角點檢測算法是一種關于角點檢測的經典算法。相比于其他的角點檢測算法,其最大的優勢就是在運行速度和角點檢測結果上都具有一定的優勢。本文兩種算法的提出是基于FAST角點檢測算法的基礎上對其檢測結果的補充。所以繼承了其速度上的優勢,也可使檢測的結果更加的準確。
傳統的FAST角點檢測算法定義為16個點的圓形窗口上,如圖1所示,以P為像素中心,周圍的16個點為我們需要考慮的點。這個圓稱為Bresenham圓。
在設定好合適的閾值t之后,可以得到如下式子。

其中,第一個范圍是相較于其他的點比較暗的點,我們稱之為darker;第二個范圍是比較大眾化的點,我們稱之為similar;第三種是相對于其他的點以較亮的點,我們稱之為brighter。我們在進FAST行角點檢測之前,要先將圖片中的點先按照上述的公式進行分類,分類之后按照圖1所示的點那樣開始進行對比,若有連續12個點同時比中心點更亮(brighter)或更暗(darker),即可認為該點是角點。
在傳統的FAST角點檢測算法的基礎上,構造出一個變形的FAST角點檢測算法,將用于角點檢測候選點周圍的16個點縮減為8個點,如圖2所示。
也就是說要使用圓周上的8個點與圓周進行比較,比較的方式也與傳統的FAST角點檢測相同:分別將周圍的一周像素點分別運用公式1與P進行比較,如果得到連續6個點相比于圓心P在同一個范圍內(darker或brighter),即可認定該點為角點。但是其也繼承了FAST角點檢測的缺點:沒有被檢測出來的并不一定就不是角點。本文提出下面兩個算法。
Y型角點是一種FAST角點檢測算法無法探測出的角點,因為它并不是圓周上有連續一定數目的角點而是由一定的點構成的特定的形狀,Y型角點的模板如圖3所示。
當然,這不難看出,傳統的FAST角點檢測的方法中的16個點的檢測很難表達出角點檢測的具體公式。所以,我將16個周圍點簡化為8個點,如圖3所示中發白區域所示。
圖3中內部顯示的白框區域即為角點檢測區域,對于檢測區域中,有一個近似于字母Y型的灰度值區域,可以較為簡單的進行分辨。所以在這里近似的將角點以圓周為8時的檢測結果為準。檢測得標準為:遍歷圓周一周,當周圍點的灰度值范圍在darker或brighter中的點有三個時,進入篩選的范圍;然后相同灰度值范圍的(darker或brighter)不能相鄰,且以圓心為對稱點的兩個點灰度值范圍不同。滿足以上的條件的點,可以認為其是一個Y型角點。該算法的步驟:
第一步:首先把原圖像轉換為灰度圖像,將候選點P的灰度值設置為Ip。
第二步:根據經驗設置一個閾值t。
第三步:計算候選點P與周圍8個點的灰度值之差,將其按照上述規則進行篩選,則可認為候選點p是一個Y型角點。
同FAST檢測一樣,這個檢測的最后需要進行非極大值抑制。
X型角點也是一種傳統的FAST角點檢測無法檢測出的角點,其模板如圖4。
同樣,在16個點時,雖然可以將X型角點用某些特定的公式表示出來,但是在過程中會略顯麻煩。所以,同樣將FAST角點的模板變為8個,可得圖4中的發白區域。
單單這么看看不出什么規律,經過查閱資料可知X角點有以下特點(如圖5):
特點一:AC與BD為相互垂直的兩條直線。
特點二:AP=PC;BP=PD。
特點三:對稱區域的灰度相等,即區域a與區域b相等,區域c與區域d相等。
由以上三條特點可知:在X型角點中,只能有兩種灰度,即為darker和similar或bighter和similar;對角線上的兩點灰度相等,相同一邊上灰度不同。對于X型角點的檢測的標準為:先對圓周進行遍歷,如果只有兩種灰度值的點,且個數都為偶數,即為篩選后得到的點;我們將整個圖形中十字狀的點集作為分割線,在進行位置上的檢測,如果對角線上的點灰度相等,且同一條邊上的兩個點灰度值不同。X型角點檢測算法的步驟:
第一步:首先把原圖像轉換為灰度圖像,將候選點P的灰度值設置為Ip。

圖1:FAST角點檢測

圖3:正常Y型角點模板以及8點X型角點的模板
第二步:根據經驗設置一個閾值t。
第三步:計算候選點P與周圍8個點的灰度值之差,將其按照上述規則進行篩選,則可認為候選點p是一個X型角點。
同樣,這種角點檢測需要進行極大值抑制。
本文首先對FAST角點進行介紹,利用相同的原理,提出了一種8點模板進行Y型角點和X型角點的方法,對只能檢測出L型角點的進行了補充。

圖2:變形后的FAST角點檢測

圖4:正常X型角點模板以及8點X型角點的模板

圖5:理想中X型角點的模板