一、Sift算法簡介
Sift算法是David Lowe于1999年提出的局部特征描述子,并于2004年進(jìn)行了更深入的發(fā)展和完善。Sift特征匹配算法可以處理兩幅圖像之間發(fā)生平移、旋轉(zhuǎn)、仿射變換情況下的匹配問題,具有很強(qiáng)的匹配能力。總體來說,Sift算子具有以下特性:
(1)Sift特征是圖像的局部特征,對平移、旋轉(zhuǎn)、尺度縮放、亮度變化、遮擋和噪聲等具有良好的不變性,對視覺變化、仿射變換也保持一定程度的穩(wěn)定性。
(2)獨(dú)特性好,信息量豐富,適用于在海量特征數(shù)據(jù)庫中進(jìn)行快速、準(zhǔn)確的匹配。
(3)多量性,即使少數(shù)的幾個(gè)物體也可以產(chǎn)生大量Sift特征向量。
(4)速度相對較快,經(jīng)優(yōu)化的Sift匹配算法甚至可以達(dá)到實(shí)時(shí)的要求。
(5)可擴(kuò)展性強(qiáng),可以很方便的與其他形式的特征向量進(jìn)行聯(lián)合。
其Sift算法的三大工序?yàn)椋?/strong>
(1)提取關(guān)鍵點(diǎn);
(2)對關(guān)鍵點(diǎn)附加詳細(xì)的信息(局部特征)也就是所謂的描述器;
(3)通過兩方特征點(diǎn)(附帶上特征向量的關(guān)鍵點(diǎn))的兩兩比較找出相互匹配的若干對特征點(diǎn),也就建立了景物間的對應(yīng)關(guān)系。提取關(guān)鍵點(diǎn)和對關(guān)鍵點(diǎn)附加詳細(xì)的信息(局部特征)也就是所謂的描述器可以稱做是Sift特征的生成,即從多幅圖像中提取對尺度縮放、旋轉(zhuǎn)、亮度變化無關(guān)的特征向量。
Sift特征的生成一般包括以下幾個(gè)步驟:
(1)構(gòu)建尺度空間,檢測極值點(diǎn),獲得尺度不變性;
(2)特征點(diǎn)過濾并進(jìn)行精確定位;
(3)為特征點(diǎn)分配方向值;
(4)計(jì)算變換參數(shù)
當(dāng)兩幅圖像的Sift特征向量生成以后,下一步就可以采用關(guān)鍵點(diǎn)特征向量的歐式距離來作為兩幅圖像中關(guān)鍵點(diǎn)的相似性判定度量。取圖1的某個(gè)關(guān)鍵點(diǎn),通過遍 歷找到圖像2中的距離最近的兩個(gè)關(guān)鍵點(diǎn)。在這兩個(gè)關(guān)鍵點(diǎn)中,如果次近距離除以最近距離小于某個(gè)闕值,則判定為一對匹配點(diǎn)。
二、Surf算法原理
(1)構(gòu)建Hessian矩陣
Hessian矩陣是Surf算法的核心,為了方便運(yùn)算,假設(shè)函數(shù)f(z,y),Hessian矩陣H是由函數(shù),偏導(dǎo)數(shù)組成:
H矩陣判別式為:
判別式的值是H矩陣的特征值,可以利用判定結(jié)果的符號將所有點(diǎn)分類,根據(jù)判別式取值正負(fù),來判別該點(diǎn)是或不是極值點(diǎn)。在SURF算法中,用圖像像素l(x,y)代替函數(shù)值f(x,y),選用二階標(biāo)準(zhǔn)高斯函數(shù)作為濾波器,通過特定核間的卷積計(jì)算二階偏導(dǎo)數(shù),這樣便能計(jì)算出H矩陣的三個(gè)矩陣元素L。、L。、k,從而計(jì)算出H矩陣:
L。(X,£)是一幅圖像在不同解析度下的表示,可以利用高斯核G(£)與圖像函數(shù),(X)在點(diǎn)X一(z,y)的卷積來實(shí)現(xiàn),核函數(shù)G(£)具體表示如式(5),g(£)為高斯函數(shù),t為高斯方差,L。與L。同理。通過這種方法可以為圖像中每個(gè)像素計(jì)算出其H行列式的決定值,并用這個(gè)值來判別特征點(diǎn)。為方便應(yīng)用,Herbert Bay提出用近似值現(xiàn)代替L。為平衡準(zhǔn)確值與近似值間的誤差引入權(quán)值叫,權(quán)值硼隨尺度變化,則H矩陣判別式可表示為:
(2)構(gòu)建尺度空間
圖像的尺度空間是這幅圖像在不同解析度下的表示,由式(4)知,一幅圖像j(X)在不同解析度下的表示可以利用高斯核G(£)的卷積來實(shí)現(xiàn),圖像的尺度大小一般用高斯標(biāo)準(zhǔn)差來表示[6]。在計(jì)算視覺領(lǐng)域,尺度空間被象征性的表述為一個(gè)圖像金字塔,其中,輸入圖像函數(shù)反復(fù)與高斯函數(shù)的核卷積并反復(fù)對其進(jìn)行二次抽樣,這種方法主要用于Sift算法的實(shí)現(xiàn),但每層圖像依賴于前一層圖像,并且圖像需要重設(shè)尺寸,因此,這種計(jì)算方法運(yùn)算量較大,而SURF算法申請?jiān)黾訄D像核的尺寸,這也是SIFT算法與SURF算法在使用金字塔原理方面的不同。算法允許尺度空間多層圖像同時(shí)被處理,不需對圖像進(jìn)行二次抽樣,從而提高算法性能。圖1(a)是傳統(tǒng)方式建立一個(gè)如圖所示的金字塔結(jié)構(gòu),圖像的寸是變化的,并且運(yùn)(1) 算會反復(fù)使用高斯函數(shù)對子層進(jìn)行平滑處理,圖1(b)說明Surf算法使原始圖像保持不變而只改變?yōu)V波器大小。
(3)精確定位特征點(diǎn)
所有小于預(yù)設(shè)極值的取值都被丟棄,增加極值使檢測到的特征點(diǎn)數(shù)量減少,最終只有幾個(gè)特征最強(qiáng)點(diǎn)會被檢測出來。檢測過程中使用與該尺度層圖像解析度相對應(yīng)大小的濾波器進(jìn)行檢測,以3×3的濾波器為例,該尺度層圖像中9個(gè)像素點(diǎn)之一圖2檢測特征點(diǎn)與自身尺度層中其余8個(gè)點(diǎn)和在其之上及之下的兩個(gè)尺度層9個(gè)點(diǎn)進(jìn)行比較,共26個(gè)點(diǎn),圖2中標(biāo)記‘x’的像素點(diǎn)的特征值若大于周圍像素則可確定該點(diǎn)為該區(qū)域的特征點(diǎn)。
(4)主方向確定
為保證旋轉(zhuǎn)不變性[8I,首先以特征點(diǎn)為中心,計(jì)算半徑為6s(S為特征點(diǎn)所在的尺度值)的鄰域內(nèi)的點(diǎn)在z、y方向的Haar小波(Haar小波邊長取4s)響應(yīng),并給這些響應(yīng)值賦高斯權(quán)重系數(shù),使得靠近特征點(diǎn)的響應(yīng)貢獻(xiàn)大,而遠(yuǎn)離特征點(diǎn)的響應(yīng)貢獻(xiàn)小,其次將60。范圍內(nèi)的響應(yīng)相加以形成新的矢量,遍歷整個(gè)圓形區(qū)域,選擇最長矢量的方向?yàn)樵撎卣鼽c(diǎn)的主方向。這樣,通過特征點(diǎn)逐個(gè)進(jìn)行計(jì)算,得到每一個(gè)特征點(diǎn)的主方向。
(5)特征點(diǎn)描述子生成
首先將坐標(biāo)軸旋轉(zhuǎn)為關(guān)鍵點(diǎn)的方向,以確保旋轉(zhuǎn)不變性。
接下來以關(guān)鍵點(diǎn)為中心取8×8的窗口。圖左部分的中央黑點(diǎn)為當(dāng)前關(guān)鍵點(diǎn)的位置,每個(gè)小格代表關(guān)鍵點(diǎn)鄰域所在尺度空間的一個(gè)像素,利用公式求得每個(gè)像素的梯度幅值與梯度方向,箭頭方向代表該像素的梯度方向,箭頭長度代表梯度模值,然后用高斯窗口對其進(jìn)行加權(quán)運(yùn)算,每個(gè)像素對應(yīng)一個(gè)向量,長度為,為該像素點(diǎn)的高斯權(quán)值,方向?yàn)椋?圖中藍(lán)色的圈代表高斯加權(quán)的范圍(越靠近關(guān)鍵點(diǎn)的像素梯度方向信息貢獻(xiàn)越大)。然后在每4×4的小塊上計(jì)算8個(gè)方向的梯度方向直方圖,繪制每個(gè)梯度方向的累加值,即可形成一個(gè)種子點(diǎn),如圖右部分示。此圖中一個(gè)關(guān)鍵點(diǎn)由2×2共4個(gè)種子點(diǎn)組成,每個(gè)種子點(diǎn)有8個(gè)方向向量信息。這種鄰域方向性信息聯(lián)合的思想增強(qiáng)了算法抗噪聲的能力,同時(shí)對于含有定位誤差的特征匹配也提供了較好的容錯(cuò)性。
3、原理結(jié)束語
Sift/Surf采用Henssian矩陣獲取圖像局部最值還是十分穩(wěn)定的,但是在求主方向階段太過于依賴局部區(qū)域像素的梯度方向,有可能使得找到的主 方向不準(zhǔn)確,后面的特征向量提取以及匹配都嚴(yán)重依賴于主方向,即使不大偏差角度也可以造成后面特征匹配的放大誤差,從而匹配不成功;另外圖像金字塔的層取 得不足夠緊密也會使得尺度有誤差,后面的特征向量提取同樣依賴相應(yīng)的尺度,發(fā)明者在這個(gè)問題上的折中解決方法是取適量的層然后進(jìn)行插值。Sift是一種只 利用到灰度性質(zhì)的算法,忽略了色彩信息,后面又出現(xiàn)了幾種據(jù)說比Surf更穩(wěn)定的描述器其中一些利用到了色彩信息,讓我們拭目以待吧。
三、sift算法的應(yīng)用
SIFT算法目前在軍事、工業(yè)和民用方面都得到了不同程度的應(yīng)用,其應(yīng)用已經(jīng)滲透了很多領(lǐng)域,典型的應(yīng)用如下:
1、物體識別
2、機(jī)器人定位與導(dǎo)航
3、圖像拼接
4、三維建模
5、手勢識別
6、視頻跟蹤
7、筆記鑒定
8、指紋與人臉識別
9、犯罪現(xiàn)場特征提取
評論