王玥
(廣西科技大學(xué)鹿山學(xué)院,廣西柳州,545616)
近些年來,圖像匹配技術(shù)已經(jīng)在圖像處理領(lǐng)域占據(jù)了重要的席位,被用在圖像的拼接上、遙感文字的識別上、醫(yī)學(xué)影像的分析上等等。能夠研究出一種可以普遍應(yīng)用的,甚至通用的,而且在匹配上具有速度快、準(zhǔn)確的匹配技術(shù)有很高的現(xiàn)實意義。而在眾多的匹配技術(shù)當(dāng)中,特征匹配技術(shù)因為復(fù)雜度較低而且具有較高的魯棒性得到了業(yè)界的重視和快速發(fā)展。尤其是其中的SIFT算法因為在尺度上、圖像旋轉(zhuǎn)上、圖像亮度上有一成不變的特殊性,而且對于其對視角的不同、聲音的不同等也有很高的魯棒性,所以SIFT算法在特征匹配技術(shù)中也有很高的研究價值。
SIFT特征匹配算法的要實現(xiàn),必須包括兩點:一是提取特征點,二是如何匹配。
其中特征點的提取包括:
為減少算法的實現(xiàn)復(fù)雜度,把彩色圖像通過三通道的RGB空間映射到單通道的灰度空間,通過以下的公式進行:
其中公式右邊的R、G、B就是彩色圖像的一個像素的三個通道的值,而公式左邊的G就是這個像素點的灰度值。
尺度空間這一概念最早出現(xiàn)在計算機視覺領(lǐng)域,為使計算機能模仿人眼的處理過程對場景進行分析,通過對圖像進行多尺度模糊處理,圖像模糊度逐漸變大,從而模仿人眼觀察物體時由近到遠的過程。通過這樣多尺度的處理分析,從而使計算機能夠分析出物體的實際大小。為了使提取出的關(guān)鍵點具有尺度不變性,就需要借助多尺度空間來實現(xiàn)。首先我們設(shè)σ為尺度參數(shù),其次構(gòu)建尺度空間,這時我們利用高斯函數(shù)的σ依照次序分別和原始圖像中的I ( x,y)進行卷積,得到圖像的高斯尺度空間 L ( x,y,σ )。另外公式(3)中的x、y是代表了圖像某個像素點的坐標(biāo),這時σ的值的大或者小就決定了圖像的清晰度,σ的值越是大,圖像中的細(xì)節(jié)越少,那么圖像就越不清晰,反之圖像就越清晰。
其中極值點的提取需要在高斯差分金字塔(簡稱 DoG金字塔)內(nèi)進行,另外需要降采樣和高斯模糊來構(gòu)建高斯金字塔。什么是降采樣呢,就是把圖像的長和寬各降為一半之后再進行采樣。什么是高斯模糊呢,就是對上述的采樣進行模糊。在金字塔中,把長和寬相等的圖像作為一組,組中的每一張圖像作為一層。再有在每組的最下面的一張圖像都是由前面那一組的第三層降采樣形成。另外金字塔中每個相鄰的兩層圖像進行減法,就會得到金字塔的尺度空間。高斯差分金字塔的構(gòu)建,能夠減少亮度差對得到的特征點的影響。之后在其中搜尋極值點。然后把每個像素點與其同層的8個點和相鄰兩層的各9個點進行比較,如果這個點都大于或者小于進行比較的點,我們就認(rèn)為這個點事一個局部的極值點。尺度空間內(nèi)的局部極值點,保證了特征點的尺度不變性。
其實,通過以上的步驟進行操作得到的極值點不一定就是真正的極值點。所以還需要進行檢測,確定是不是真正的極值點(利用三維二次函數(shù)來檢測)。并且為篩選出關(guān)鍵點中不穩(wěn)定的特征點,還需要利用子像素插值法來去除低對比度,利用二乘以二的Hessian矩陣來去除邊緣效應(yīng)。
X(x,y,σ)T是前文提到的極值點,其中的x和y表示的是這個點的位置坐標(biāo),其中的σ代表的是尺度大小。把等式等于零,并對(4)式求導(dǎo),就可以找到真正的極值點的位置。
去除邊緣有較強響應(yīng)力的點。使用α和β分別表示矩陣 H 的特征值,α=λmax為最大特征值,β=λmin為最小特征值,且 α= rβ 。
從公式(8)可以看出,只有在α和β相等的時候得到的結(jié)果是最小的,而且只要α和β的差值增加,那么比值就會增大,這就說明了在某個方向上的梯度值大,相反方向的梯度值就小,這就與邊緣的特征不謀而合。所以我們要設(shè)置一個閾值,當(dāng)大于這個值的時候,就可以將邊緣響應(yīng)點給剔除掉。
為了抵消圖像在旋轉(zhuǎn)時會對特征匹配產(chǎn)生的影響,需要采取為每個特征點設(shè)置一個方向的方法使關(guān)鍵點對圖像的旋轉(zhuǎn)具有不變性。我們可以通過以下兩個公式并且以特征點為圓心,以3 × 1.5σ 為半徑來計算像素點的梯度大小和方向。
通過梯度直方圖來計算鄰域像素的梯度和方向,范圍是零到三百六十度,并且每隔九度一個柱,一共有三十六個柱,這樣就有一個36維的梯度向量。其中的每個維就表示這個方向的大小。梯度直方圖的最高值就表示是這個關(guān)鍵點的鄰域的主方向,也是這個關(guān)鍵點的方向。
得到局部特征點后,關(guān)鍵的步驟就是要利用這個局部特征點將其周圍區(qū)域的信息描述出來,由此可以減少關(guān)鍵點受視角、旋轉(zhuǎn)、光照等影響。通過關(guān)鍵點的方向賦值,我們已經(jīng)能夠得到關(guān)鍵點的主方向。以關(guān)鍵點為圓心,取隨意大小的半徑,并使區(qū)域旋轉(zhuǎn)到主方向,這樣的關(guān)鍵點就有了旋轉(zhuǎn)不變性。另外,我們把區(qū)域分成四乘以四的子區(qū)域,而且在每個子區(qū)域里面進行八個方向的梯度直方圖進行計算統(tǒng)計,這樣就形成了四乘四再乘八等于一百二十八維的SIFT描述子。
在參考圖像和待匹配圖像中都進行 SIFT 特征點提取之后,我們就可以對這些特征點進行匹配了。判斷兩個 SIFT描述子的相似程度的方法我們通常選用描述子間的歐氏距離來表示。我們用歐氏距離來對參考圖像和特征匹配圖像進行SIFT特征點匹配。
Ri= (ri1,ri2,...,ri128)是參考圖中的SIFT描述子向量,Si=(si1,si2,...,si128)是匹配圖中的SIFT描述子向量,d是兩者間的歐氏距離。
利用以上的計算和統(tǒng)計,就可以得到與這個描述子最近的和次近的距離。然后我們就可以用次近距離和最近距離的比的結(jié)果來看是否匹配。如公式(12)。假設(shè)一個閾值TDis,如果比值小于閾值,就匹配成功;若比值大于閾值,就匹配不成功。另外,這個閾值取值范圍是 0. 6<=TDis<=0.75 。Min{Dis}表示描述子的最近距離,SecMin{Dis}表示描述子的次近距離。
盡管SIFT算法具有抗尺度、旋轉(zhuǎn)、亮度變換,具有高魯棒性,但是它抗仿射變換性能不是很理想,有待進一步完善。