完文韜,楊成禹
(長春理工大學(xué) 光電工程學(xué)院,長春 130022)
在進行圖像拼接實驗的過程中,圖像匹配是其中最為關(guān)鍵的一步。在常用的算法中,由于基于特征點的圖像匹配算法具有穩(wěn)定性好而且計算量比較少的特點,所以該算法成為了當前圖像匹配過程中的主流算法[1]。其中使用最為廣泛的是SIFT(尺度不變特征)算法[2],該算法對圖像存在的旋轉(zhuǎn)、仿射變換,光照變化等能夠保持不變性,對噪聲的敏感度也很低,整個算法具有很強的魯棒性[3]。
但是由于SIFT算法主要還是利用了所提取的特征點的局部鄰域梯度信息[4],當待匹配圖像中出現(xiàn)相似的部分,經(jīng)過SIFT算法匹配的目標圖像1中的特征點會匹配到目標圖像2中多個相似的特征點,即出現(xiàn)一對多的現(xiàn)象。此外,還存在著較多的誤匹配的點。所以為了提高匹配結(jié)果的準確度,必須采用合適的方法將錯誤的匹配點剔除。針對SIFT算法的主要缺點,在SIFT算法提取完特征點之后,再通過RANSAC(隨機抽樣一致性)算法對特征點的匹配結(jié)果進行篩選[5],最后通過篩選之后剩余的匹配點進行圖像拼接。
SIFT算法是當前圖像匹配算法中比較流行的算法[6],SIFT算法的圖像特征點匹配大致可以分為以下幾步:
特征檢測是在尺度空間中進行的,所以首先需要生成圖像尺度空間。圖像的尺度空間可以用一個尺度空間的高斯函數(shù)和圖像的卷積來表示
式中,G(x,y,σ)為尺度可變的高斯函數(shù),σ為尺度,(x,y)為空間坐標。
想要確定特征點所在的位置,首先需要建立一個高斯金字塔。方法是:先將原始圖像放大一倍之后得到第一階的第一層,然后將位于同一階上層中的尺度因子設(shè)定為下層中尺度因子的k倍;再通過對第一階的第三層進行采樣,獲得第二階的第一層。然后以此類推,就可以建立高斯金字塔[7]。
得到高斯金字塔后,再通過兩個相鄰的高斯尺度空間作差,得到高斯差分DOG(difference of guassians)金字塔,整個過程的變換函數(shù)表達式為:
高斯差分金字塔建立后,特征點就是DOG尺度空間中的極值點,查找該極值點需要把每個采樣點同26個點相比較,這些點包括在同一尺度上相鄰的8個點,以及相鄰尺度上相鄰的18個點。
為了描述特征點,只依靠坐標是不可靠的,此外還必須增加方向尺度等信息[8]。采用有限差分的辦法,求出在以特征點為圓心,以3σ為半徑范圍內(nèi)的圖像梯度的幅角及幅值。利用直方圖統(tǒng)計的方法,求出鄰域內(nèi)所有像素點的梯度方向及幅值。特征點的主方向就是直方圖的峰值所代表的方向,確定了主方向就可以使SIFT算法具備旋轉(zhuǎn)不變性,主方向的計算公式為
式中,L表示特征點的尺度。
特征向量最終是通過求得的特征點的鄰域梯度信息來計算的。先把坐標軸位置旋轉(zhuǎn)到特征點所在的主方向上,接著以特征點為圓心,選擇特征點附近的16個點作為種子點,分別求出8個方向上的梯度大小,最后得到的128維向量就是所求的特征向量。
經(jīng)過上述步驟得到特征向量之后,求出兩幅圖像中所有SIFT特征點的特征向量間的歐氏距離。具體來說就是:對目標圖像1中的某個特征點,求出該點與目標圖像2中的所有特征點的特征向量間的歐氏距離,并對所求得的歐氏距離值的大小進行排序。找出最小的和次小的歐式距離值對應(yīng)的目標圖像2中的特征點,并對這兩個距離的比值進行計算,假如該值小于某個閾值,說明這兩個點為匹配點,否則不匹配。該閾值是一個經(jīng)驗閾值,實驗中選取的閾值大小是0.6。
通過SIFT算法完成特征點匹配之后,仍然可能存在著大量錯配點。在SIFT算法匹配完成之后的基礎(chǔ)上,再引入RANSAC算法,篩選出匹配結(jié)果中的誤匹配點,提高最終匹配結(jié)果的準確率。
RANSAC算法通過迭代方式估計數(shù)學(xué)模型的參數(shù)[9],它的基本假設(shè)是:
(1)所有數(shù)據(jù)由能夠很好地適應(yīng)數(shù)學(xué)模型的“局內(nèi)點”所構(gòu)成。
(2)“局外點”是不能適應(yīng)該模型的數(shù)據(jù)。
(3)除此之外的數(shù)據(jù)屬于噪聲。
經(jīng)過SIFT算法匹配之后的結(jié)果,除了那些準確的匹配點外,還存在著一些誤匹配點和誤差較大的匹配點。所以可以將經(jīng)過SIFT算法匹配之后的點分為3類:誤匹配點、精確匹配點及噪聲匹配點,分別對應(yīng)于RANSAC算法基本假設(shè)中的局內(nèi)點”、局外點”和噪聲點。
RANSAC算法進行數(shù)學(xué)模型擬合之后,再利用設(shè)定的閾值,可以準確地將整個樣本當中的“局外點”和噪聲剔除,該算法先隨機地從整個數(shù)據(jù)集當中選取一個最小抽樣集,并通過這些抽樣集計算出相關(guān)模型參數(shù)的初始值,再通過計算出來的模型來尋找數(shù)據(jù)集中的其他“局內(nèi)點”,并將“局外點”和噪聲剔除,以此來最大程度的消除“局外點”和噪聲對整體估計的影響。RANSAC算法的優(yōu)點是可靠性強、精度高、魯棒性強。
RANSAC算法能夠保證在一定置信度下,基本子集最小抽樣數(shù)N和至少取得一個良好抽樣子集的概率P滿足式(4)。
式中,ε為局內(nèi)點和數(shù)據(jù)點集的比值,k表示求出模型參數(shù)時所需的最小數(shù)據(jù)量,一般取4。P一般取0.9~0.99,實驗中取一個中間值,P=0.95。
對式(4)兩邊取對數(shù)得
式中,N表示計算過程中進行迭代的次數(shù)。
算法的基本步驟如下:
(1)隨機選出4個樣本數(shù)據(jù)(樣本數(shù)據(jù)彼此間不能共線),求出變換矩陣H,記作模型M。
(2)求出數(shù)據(jù)集中的所有數(shù)據(jù)和模型M之間的投影誤差,如果該誤差值未超過閾值,就把該數(shù)據(jù)加入內(nèi)點集I。
(3)假如當前內(nèi)點集I中的元素個數(shù)超過最優(yōu)內(nèi)點集I_best,則令I(lǐng)_best=I,同時更新迭代次數(shù)N。
(4)假如迭代總次數(shù)超過N次,則退出迭代過程;反之,迭代次數(shù)加1,并重復(fù)以上步驟(1)到(3)。
運算過程中,在迭代次數(shù)N不超過最大迭代次數(shù)的情況下,N不固定而且是在不斷更新的。實際運算過程中,假如迭代次數(shù)太少,得到的篩選結(jié)果不精確,但是迭代次數(shù)取太多,雖然能夠得到很好的篩選結(jié)果,耗費的時間卻太長,算法效率太低。所以在實驗中,將最大迭代次數(shù)設(shè)置成800,這是因為經(jīng)過SIFT算法匹配之后的特征點,其中誤匹配點所占的比例還是比較小的,即樣本集內(nèi)部的“局外點”和噪聲點比例比較小。這就可以使RANSAC算法在循環(huán)迭代了800次之后,一定能夠得到穩(wěn)定的模型參數(shù),剔除掉錯誤的匹配點。
為了驗證提出的算法,選取了一組圖片進行拼接實驗,觀察該算法的效果,待拼接的兩張圖片如圖1所示。利用Matlab軟件,分別運用常規(guī)的SIFT算法和改進的算法對兩幅圖像提取的特征點進行匹配,觀察最終效果。實驗中引入RANSAC算法進行篩選時,局內(nèi)點閾值使用的是Matlab函數(shù)提供的默認閾值,從最終效果來看,選取默認閾值就可以達到理想的篩選效果。在實驗中使用同一臺電腦上的Matlab軟件來運行。
圖1 待拼接圖片
當使用常規(guī)的SIFT算法對圖像進行特征點匹配之后的圖片如圖2所示,圖中線段連接的就是匹配的特征點。可以很明顯地從圖像中看到,匹配結(jié)果中出現(xiàn)了一對多匹配以及誤匹配的情況,最終效果并不理想。
圖2 SIFT算法匹配的特征點
在SIFT算法匹配的基礎(chǔ)上,再引入RANSAC算法對已經(jīng)匹配的特征點進行篩選,最終匹配的特征點如圖3所示,顯然圖2中的一些明顯錯誤的匹配點已經(jīng)被剔除了。
圖3 引入RANSAC算法之后得到的匹配點
兩種匹配算法利用Matlab運行之后的比較如表1所示。
表1 兩種算法比較
從上表可知,RANSAC算法對SIFT算法匹配之后的特征點進行篩選之后,程序運行的時間大約增加了10%,剔除了大約9%的匹配點,從圖中3觀察,已經(jīng)找不到明顯的錯誤匹配點,大大提高了匹配的準確率。
在圖3的基礎(chǔ)上,再進行圖像拼接,最后得到的結(jié)果如圖4所示。
從圖4可以看出,圖像拼接很自然,效果很好。
接下來,在圖片存在噪聲、旋轉(zhuǎn)、以及光線差異的情況下,利用提出的算法進行拼接,觀察實驗效果。
圖4 拼接完成后的效果圖
給待拼接圖片1加入椒鹽噪聲之后,匹配的特征點如圖5所示。
圖5 加入噪聲后匹配的特征點
最后拼接完成的效果圖如圖6所示。
圖6 拼接效果圖
將待拼接圖片1旋轉(zhuǎn)一定角度后,利用該算法匹配的特征點如圖7所示。
圖7 旋轉(zhuǎn)變換后匹配的特征點
最終的拼接效果如圖8所示。
圖8 拼接效果圖
將待拼接圖片1進行處理,使其與待拼接圖片2的亮度不一致,得到的特征點匹配結(jié)果如圖9所示。
圖9 存在光線差異時匹配的特征點
最終的拼接效果如圖10所示。
圖10 拼接效果圖
通過以上拼接實驗結(jié)果可以看出,該算法在圖片存在噪聲、旋轉(zhuǎn)、以及光線差異的情況下仍然具有很好的拼接效果,具有普適性。
SIFT算法是當前進行特征點檢測和匹配的所有算法中比較有效的算法,為了完成后續(xù)的圖像拼接,需要提高特征點匹配的準確率。針對SIFT算法在圖像的特征點匹配過程中容易產(chǎn)生誤匹配的缺點,通過在SIFT算法的基礎(chǔ)上引入RANSAC算法,構(gòu)建了一種基于SIFT特征點匹配算法的優(yōu)化算法。該算法在匹配準確率上明顯超過SIFT算法,具有應(yīng)用價值。但是該算法在實際應(yīng)用中仍存在很多待改進之處,如何進一步減少算法的運算時間是下一步待研究的問題。
[1]趙燁,蔣建國,洪日昌.基于RANSAC的SIFT匹配優(yōu)化[J].光電工程,2014,41(8):58-64.
[2]姜文聰,張繼賢,程春泉,等.SIFT與粗差剔除算法相結(jié)合的機載SAR影像匹配研究[J].地球信息科學(xué)學(xué)報,2013,15(2):440-445.
[3]陳華,鄧喀中,張以文,等.結(jié)合SIFT和RANSAC算法的InSAR影像配準[J].測繪通報,2015,61(12):30-33.
[4]張謙,賈永紅,胡忠文.多源遙感影像配準中的SIFT特征匹配改進[J].武漢大學(xué)學(xué)報:信息科學(xué)版,2013,38(4):455-459.
[5]陳藝蝦,孫權(quán)森,徐煥宇,等.SURF算法和RANSAC算法相結(jié)合的遙感圖像匹配方法[J].計算機科學(xué)與探索,2012,6(9):822-828.
[6]張靜,袁振文,張曉春,等.基于SIFT特征和誤匹配逐次去除的圖像拼接[J].光電技術(shù)應(yīng)用2016,37(1):136-140.
[7]林婧,郝永平,華宇寧.SIFT特征在圖像配準過程中的應(yīng)用研究[J].沈陽理工大學(xué)學(xué)報,2009,28(5):26-29.
[8]宋巨艷.RANSAC算法及其在遙感圖像處理中的應(yīng)用[D].北京:華北電力大學(xué),2011.
[9]孫艷麗,李建海,周偉,等.SIFT在高分辨率SAR圖像自動配準中的性能分析[J].電子設(shè)計工程,2011,19(7):180-183.