(二十一)sift 特征点检测
sift(尺度不變特征變換)
參考
一、sift 算法的目標
sift 的目標是: 找到一幅圖像中的一些穩定的保持不變性的局部特征點,該特征點被一個特殊向量描述。該特征點的特征叫做sift特征
1999年British Co1umbia大學大衛.勞伊( David G.Lowe)教授總結了現有的基于不變量技術的特征檢測方法,并正式提出了一種基于尺度空間的、對圖像縮放、旋轉甚至仿射變換保持不變性的圖像局部特征描述算子-SIFT(尺度不變特征變換),這種算法在2004年被加以完善。
1.哪些點是SIFT中要查找的關鍵點(特征點)?
這些點是一些十分突出的點不會因光照條件的改變而消失,比如角點、邊緣點、暗區域的亮點以及亮區域的暗點,既然兩幅圖像中有相同的景物,那么使用某種方法分別提取各自的穩定點,這些點之間會有相互對應的匹配點。
所謂關鍵點,就是在不同尺度空間的圖像下檢測出的具有方向信息的局部極值點。
根據歸納,我們可以看出特征點具有的三個特征:
尺度 方向 大小
二、sift特征的特點
三、sift特征的匹配
Sfit算法的實質是在不同的尺度空間上查找關鍵點(特征點),計算關鍵點的大小、方向、尺度信息,利
用這些信息組成關鍵點對特征點進行描述的問題。Sift所查找的關鍵點都是一些十分突出,不會因光照,
仿射變換和噪聲等因素而變換的“穩定”特征點,如角點、邊緣點、暗區的亮點以及亮區的暗點等。
匹配的過程就是對比這些特征點的過程:
四、sift特征提取和匹配具體步驟
1. 生成高斯金字塔
2.什么是尺度空間( scale space ) ?
我們要精確表示的物體都是通過一定的尺度來反映的。現實世界的物體也總是通過不同尺度的觀察而得到不同的變化。
尺度空間理論最早在1962年提出,其主要思想是通過對原始圖像進行尺度變換,獲得圖像多尺度下的尺度空間表示序列,對這些序列進行尺度空間主輪廓的提取,并以該主輪廓作為-種特征向量,實現邊緣、角點檢測和不同分辨率.上的特征提取等。尺度空間中各尺度圖像的模糊程度逐漸變大,能夠模擬人在距離目標由近到遠時目標在視網膜.上的形成過程。尺度越大圖像越模糊。(同一個物體近大遠小,近清楚遠模糊)尺度空間就是圖片的大小
3.為什么選擇高斯核來生成尺度空間 ?
根據文獻《Scale-space theory: A basic tool for analys ingstructures at different scales》 我們可知,高斯核是唯一可以產生多尺度空間的核,一個圖像的尺度空間L (x,y, σ) ,定義為原始圖像I(x,y)與一個可變尺度的2維高斯函數G(x,y, σ)卷積運算。
其中xi,yi是中心點坐標,σx=σy=σ是方差
高斯模糊的性質
●
高斯模糊具有圓對稱性。
高斯模糊具有線性可分的性質,也可以在二維圖像.上對兩個獨立的一維空間分別進行計算。這樣可以大大減少了運算的次數。對一幅圖像進行多次連續高斯模糊的效果與一次更大的高斯模糊可以產生同樣的效果,大的高斯模糊的半徑是所用多個高斯模糊半徑平方和的平方根。例如,使用半徑分別為6和8的兩次高斯模糊變換得到的效果等同于一次半徑為10的高斯模糊效果,62+82=102
根據這個關系,使用多個連續較小的高斯模糊處理不會比單個高斯較大處理時間要少。
圖像高斯金字塔(Gaussian Pyramid)是采用高斯函數對圖像進行模糊以及降采樣處理得到。其形成過程可如下圖所示:
圖像金字塔是由大小不用的圖像組構成。每組中的圖片稱為層,每一層圖片都是由高斯卷積得到,不同層使用的高斯核的方差(σ值)不同。
高斯金字塔構建過程:
是高斯平滑或稱高斯濾波)之后作為第1組金字塔的第2層。
為第3層。
一樣。它們對應的平滑系數分別為:0,σ,kσ,k2σ,k3σ……k^(L-2)σ。
然后對第2組的第1層圖像做平滑因子為σ的高斯平滑,得到第2組的第2層,就像步驟2中一樣,如
此得到第2組的L層圖像,同組內它們的尺寸是一樣的,對應的平滑系數分別為:0,σ,kσ,
k2σ,k3σ……k^(L-2)σ。但是在尺寸方面第2組是第1組圖像的一半。
反復執行,就可以得到一共O組,每組L層,共計O*L個圖像,這些圖像一起就構成了高斯金字塔
金字塔的分組數O是由輸入圖像的大小來確定的。公式如下:
高斯金字塔的組數:
其中:M、N分別為圖像的行數和列數,O為金字塔的分組數
每一組的分層數S:
其中 S是每一組的分層數,n為對每個組提取特征的層數。
第一組的第一層的高斯半徑如何確定。假定世界中的景物是絕對清晰的,照相機對其拍照取得的圖像相當于對自然界的景物進行了一次高斯模糊,根據經驗,可以假定這次高斯模糊的σ0 = 0.5,而我們想讓第一組的第一層圖像的為高斯模糊處于σ = 1.6 一次需要在σ0 = 0.5的基礎上在進行σ = 1.52的高斯模糊,因此一組的第一層的高斯半徑σ = 1.52
2. 生成高斯差分金字塔
使用高斯金字塔每組中相鄰上下兩層圖像相減,就得到下圖的高斯差分金字塔,相減后會出現負數,要做歸一化。
3. 空間極值點檢測(關鍵點的初步查探)
特征點是由DOG空間的局部極值點組成的。為了尋找DoG的極值點,每一個像素點要和它所有的相鄰
點比較,看其是否比它的圖像域和尺度域的相鄰點大或者小。
如下圖,中間的檢測點和它同尺度的8個相鄰點和上下相鄰尺度對應的9×2個點共26個點比較,以確保
在尺度空間和二維圖像空間都檢測到極值點。
注意,局部極值點都是在同一個組當中進行的,所以肯定有這樣的問題,某一組當中的第一個圖和
最后一個圖層沒有前一張圖和下一張圖,那該怎么計算? 解決辦法是,再用高斯模糊,在高斯金字
塔多“模糊”出三張來湊數,所以在DOG中多出兩張。(同一組中第一層和最后一層不做極值點檢測)
4. 穩定關鍵點的精確定位
1 簡單處理:
DOG值對噪聲和邊緣比較敏感,所以在第3步的尺度空間中檢測到的局部極值點還要經過進一步的篩
選,去除不穩定和錯誤檢測出的極值點。(把較小或者較大的極值點去掉)
利用閾值的方法來限制,在opencv中為contrastThreshold。
2 復雜處理:
求泰勒展開式的極值
此時得到了精確的極值點坐標了(坐標是相對于原圖的,如果是在縮小圖上(金字塔上層)的到的坐標,則改坐標需要放大到和原圖一致)
海森矩陣H(x,y) 可以描述曲率。如果圖像的某一點在x,y方向曲率相差太大 則該處很大程度上是邊緣。根據數學結論,海森矩陣的特征值是根曲率成正比的,因此我們可以用海森矩陣的特征值來近似代替曲率,又因為特征值很難算,我們用海森矩陣的跡和行列式值來代替海森矩陣的特征值。設其一個特征值為α,一個為β,且α>β,α=γβ,則,海森矩陣的跡為α+β,行列式為αβ,行列式小于0則αβ<0,曲率異號,是邊緣,應去除。同號的話,用跡的平方比上行列式的值,該值在γ>1上單調遞增,又因為我們希望兩個方向的曲率相近這樣才不會有邊緣效應,因此我們該值應小于γ=10時的值,若結果不滿足該條件則也舍去
3 求導方法
5. 為穩定關鍵點賦予方向信息
穩定的極值點是在不同尺度空間下提取的,這保證了關鍵點的尺度不變性。
為關鍵點賦予方向信息所要解決的問題是使得關鍵點對圖像角度和旋轉具有不變性。
假設特征點坐標為(x0,y0,σ0),找到與σ0最接近的高斯模糊圖像(高斯金字塔中的高斯模糊圖像而非高斯查分金字塔),假設是尺度為σ的高斯模糊圖像。
統計以特征點(x0,y0,σ0)為圓心,在該特征點所在的高斯模糊圖像的尺度的1.5倍為半徑的圓內(即半徑為1.5σ),計算所有的像素的梯度方向及其梯度幅值,并做1.5σ的高斯加權,即距離特征點越近的梯度越重要。接著對高斯加權后的梯度結果創建梯度直方圖。梯度直方圖方法如下:
將梯度方向分類,可分為4類,8類,36類等的都可以,如果分類8類則將角度分為0°-45°,45°-90°,…,315°-360°等8個區間,每45°算一個區間,實際在使用的時候是分36類,每10°算一個區間。統計落到每個區間中的梯度幅值之和,從而生成梯度直方圖。直方圖的峰值為特征點主方向的參數(對應梯度方向區間),其他高于主方向百分之80的方向被判定為特征點輔助方向。
對于任一關鍵點(x,y),其梯度幅值表述為:(確定了特征點在確定的高斯模糊圖像上時 尺度信息就沒有了)梯度方向為:
6. 構建關鍵點描述符
對于每一個關鍵點,都擁有位置、尺度以及方向三個信息。所以具備平移、縮放、和旋轉不變性。
為了將兩張圖片的關鍵點相互匹配起來,我們就要對關鍵點構建出一種描述符號,來表示該關鍵點。
對每個關鍵點建立一個描述符,用一組向量將這個關鍵點描述出來(在sift中是一個128維的向量),使其不隨各種變化而改變,比如光照變化、視角變化等等描述子不但包含關鍵點,也包括關鍵點周圍對其有貢獻的鄰域點。描述的思路是:對關鍵點周圍像素區域分塊,計算塊內梯度直方圖,生成具有獨特性的向量,這個向量是該區域圖像信息的一種抽象表述。
對每個關鍵點,讓該關鍵點周圍區域旋轉到主方向上,然后我們取以關鍵點為圓心半徑為r的圓的外接正方形區域,將其分成4×4個子區域,其中子區域以像素為單位。在每個子區域內進行統計每個像素點在8個方向上的梯度幅值(梯度長度),(8個方向為東,西,南,北,東南,東北,西南,西北)梯度幅值是經過高斯加權的(也可以不加權)。每個區域用長度為8的向量表示,16個這樣的子區域的向量寫在一起構成的長度128一維的向量就是該關鍵點的描述符。
對于區域半徑的選擇如下圖。其中m取3,σ是關鍵點的尺度坐標,mσ為每個子區域的寬度。d是子區域的個數。
7. 特征點匹配
對于使用sift關鍵點做兩幅圖的對應,我們只需要使用關鍵點描述符,即計算兩幅圖像的關鍵點描述符的相似度,如果相似度在給定范圍內則,該點是對應的。
相似度計算可以使用歐式距離或者knn。
總結
以上是生活随笔為你收集整理的(二十一)sift 特征点检测的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 软件测试的八大原则
- 下一篇: linux看内存插槽,Linux查看内存