許 睿,謝志文,黃小雪,龔 瓊,萬 航
(1. 桂林電子科技大學(xué), 廣西 桂林 541004;2. 桂林市環(huán)保局,廣西 桂林 541002)
基于SIFT的圖像匹配算法的研究
許 睿1,謝志文1,黃小雪2,龔 瓊1,萬 航1
(1. 桂林電子科技大學(xué), 廣西 桂林 541004;2. 桂林市環(huán)保局,廣西 桂林 541002)
SIFT特征匹配算法具有很強(qiáng)的匹配優(yōu)勢,當(dāng)圖像發(fā)生角度改變、位置改變、視覺角度變換、光照強(qiáng)度變化、仿射演變情況下,仍能正確匹配。通過實(shí)驗(yàn)驗(yàn)證了算法的匹配優(yōu)勢。
圖像匹配; 特征提取;SIFT算法
圖像匹配是視覺技術(shù)的基礎(chǔ),許多學(xué)者對圖像之間的匹配技術(shù)進(jìn)行了大量研究和改進(jìn),提出了多種算法,SIFT特征匹配算法是比較成功的算法之一[1]。
SIFT算法是特征提取和圖像識別技術(shù)[2,3],主要包括兩個(gè)過程,一是特征生成,一是特征向量匹配。
1.1 尺度空間上的極值檢測
將圖像I(x,y)的尺度假設(shè)為L(x,y,σ),由高斯函數(shù)G(x,y,σ)和圖像I(x,y)卷積生成:
想要在尺度空間找到固定的關(guān)鍵點(diǎn)坐標(biāo),應(yīng)在高斯差分函數(shù)與圖像卷積生成的空間D(x,y,σ)中檢測極值點(diǎn):
其中相鄰兩個(gè)尺度由一個(gè)常數(shù)k分開。有兩個(gè)理由:一是節(jié)約計(jì)算時(shí)間,計(jì)算D時(shí)只要計(jì)算相鄰尺度函數(shù)的差值。二是D的屬性與尺度歸一化的拉普拉斯高斯函數(shù)σ2?2G 很相似[4]。
因?yàn)槔绽购瘮?shù)與尺度不相關(guān),所以高斯差分函數(shù)也與尺度不相關(guān)。對于所有尺度而言,k是一個(gè)常量,所以使用D不會影響極值的選擇。當(dāng)k 遠(yuǎn)離1 時(shí),誤差會越來越大。但實(shí)際上,k跟極值的選取無關(guān)。利用金字塔得到高斯差分圖像,如圖1。
金子塔被分為多層。從第一層開始,對第一幅圖像連續(xù)用高斯函數(shù)卷積,生成許多逐漸平滑的圖像。在這一層中,相近的高斯圖像差分得到高斯差分圖像。等這組結(jié)束后,從中抽取一幅圖像a進(jìn)行降采樣,獲得圖像b,面積變是a的1/4,并讓b作為下一層的初始圖像,重復(fù)第一層的過程。選擇a的原則是獲得a所要的尺度空間S的參數(shù)σ是原始S的2 倍。假設(shè)k = 21/t,在t個(gè)尺度中找尋極大值或極小值,平均每層要有t+3 幅圖像,得到t+2 幅高斯差分圖像。經(jīng)驗(yàn)值為1.6×21/3和3,說明k取值21/3。
圖1 金字塔
1.2 關(guān)鍵點(diǎn)的定位
對上面得到的極值點(diǎn)進(jìn)行挑選,除掉不穩(wěn)定的點(diǎn)。不穩(wěn)定點(diǎn)包括邊緣點(diǎn)和低對比度的點(diǎn)。對于某一個(gè)尺度上求取的極值點(diǎn),采用一個(gè)3維的2次函數(shù)求其在原圖像上的位置,并去除低對比度的點(diǎn)。首先在某極值點(diǎn)A對D(x,y,σ)進(jìn)行泰勒展開:
其中,X(x,y,σ)T是到點(diǎn)A 的偏移量。對式(4)求X 的偏導(dǎo)數(shù)并令偏導(dǎo)為零,得:
如果x大于0.5,說明這個(gè)極值點(diǎn)和另一個(gè)采樣點(diǎn)離得更近,采用插值法求得極值點(diǎn)位置的估計(jì)值。同時(shí),可以利用D(x^) 去除低對比度的點(diǎn)。將式(5)代入式(4)得:
設(shè)α是較大的特征值,β是較小的特征值,由矩陣性質(zhì)知:
一般情況下這里的行列式不會是負(fù)值,如果出現(xiàn)負(fù)值,即兩個(gè)主曲率不同號,不將其視為極值點(diǎn)。設(shè)r=α/β,得:
(r +1)2 / r 是遞增函數(shù)。要得到主曲率的比值r,判斷上式左邊是否在開關(guān)值以下即可。開關(guān)值一般取值r=10。
1.3 為關(guān)鍵點(diǎn)標(biāo)定方向
為關(guān)鍵點(diǎn)隨便賦一個(gè)方向,定義的關(guān)鍵點(diǎn)描述子是相對于這個(gè)方向的,因而可以實(shí)現(xiàn)匹配時(shí)圖像的旋轉(zhuǎn)不相關(guān)性[6]。 為了證明跟尺度沒有關(guān)系,篩選與這個(gè)尺度最毗鄰的高斯平滑圖像L,對于L上的每個(gè)點(diǎn)L(x, y),計(jì)算梯度和方向:
劃分一個(gè)相鄰區(qū)域,讓關(guān)鍵點(diǎn)作為中心,使用在這個(gè)范圍內(nèi)的點(diǎn)的梯度得到某個(gè)未知方向直方圖。此圖的X坐標(biāo)表示梯度朝向,共有36 項(xiàng),每一項(xiàng)表示10°;Y軸表示梯度范圍,對于劃歸到X軸的所有點(diǎn),把梯度取值作加法運(yùn)算,其和作為Y軸取值。Y軸取值最大的方向是關(guān)鍵點(diǎn)的主要方向。Y軸的取值大于主要方向Y軸取值的過半以上,也認(rèn)為是關(guān)鍵點(diǎn)方向。特征點(diǎn)有多個(gè)方向,也就是有多個(gè)關(guān)鍵點(diǎn)。為了使穩(wěn)定性更好,可以對關(guān)鍵點(diǎn)鄰域的梯度進(jìn)行高斯加權(quán)[7]。
1.4 提取特征點(diǎn)描述符
為了保證旋轉(zhuǎn)不變,需將坐標(biāo)軸翻轉(zhuǎn)為重要點(diǎn)的方向。以特征點(diǎn)為中心,選取8×8鄰域,把特征點(diǎn)與取樣點(diǎn)相向方向高斯加權(quán),然后劃入包含8個(gè)方向的直方圖,得到2×2×8即32維特征描述子,如圖2。
圖2 32維特征描述子
一個(gè)小正方形表示了特征點(diǎn)附近尺度范圍的某個(gè)像素點(diǎn),箭頭方向表示像素梯度朝向,箭頭長度表示梯度取值。在4×4范圍內(nèi)計(jì)算8個(gè)方向的梯度方向直方圖,如圖3 。描繪每個(gè)梯度方向的累加可形成一個(gè)種子點(diǎn)。每一個(gè)描述符都包含一個(gè)位于關(guān)鍵點(diǎn)鄰域的4個(gè)直方圖數(shù)組,每個(gè)直方圖有8方向的梯度方向。因此SIFT的特征向量有128維。
圖3 梯度方向直方圖
采用VS2010實(shí)現(xiàn)整個(gè)實(shí)驗(yàn)過程。圖4是原始圖像,圖5是圖4旋轉(zhuǎn)90°后所得圖像。用SIFT程序?qū)嶒?yàn),得圖6。從實(shí)驗(yàn)結(jié)果可以看出,SIFT算法對處理圖像旋轉(zhuǎn)具有很好的效果。圖7是圖4放大兩倍的結(jié)果,把圖4和圖7進(jìn)行匹配得到圖8。通過實(shí)驗(yàn)可以看出,圖像大小并不影響匹配的效果。
圖4 原始圖像
圖5 旋轉(zhuǎn)90°后圖像
圖6 SIFT匹配結(jié)果1
圖7 放大2倍后圖像
圖8 SIFT匹配結(jié)果2
[1] Lowe D G. Object Recognition from Local Scale –Invariant Features[C]. 7th Int Conf Computer Vision, 1999
[2] Brown M, Lowe D G. Invariant Features from Interest Point Groups[C]. British Machine Vision Conference,Cardiff,Wales, 2002
[3] Lowe D G. Distinctive Image Features from Scale –Invariant Keypoints[J]. Int J Computer Vision, 2004,60(2):91-110
[4] 吳銳航. 基于SIFT特征的圖像檢索[J].計(jì)算機(jī)應(yīng)用研究,2008(2):478-481
[5] 高成,董長虹,郭磊,等,MATLAB圖像處理與應(yīng)用[M].北京:國防工業(yè)出版社,2007
[6] 張正友,馬頌德.計(jì)算機(jī)視覺——計(jì)算理論與算法基礎(chǔ)[M].北京:科學(xué)出版社,2003
[7] 王永明, 王貴錦. 圖像局部不變性特征與描述[M]. 北京: 國防工業(yè)出版社, 2010
P237.3
B
1672-4623(2014)04-0072-03
10.11709/j.issn.1672-4623.2014.04.025
許睿,副教授,主要從事遙感與圖像識別研究。
2013-08-26。
項(xiàng)目來源:國家自然科學(xué)基金資助項(xiàng)目(31200326);國家科技支撐計(jì)劃資助項(xiàng)目(2011BAK12B04);中國博士后基金資助項(xiàng)目(20110491727);廣西科學(xué)研究和技術(shù)開發(fā)資助項(xiàng)目(GKG 1140002-2-4)。