SIFT and SURF

來源:互聯網
上載者:User

Original url:

http://www.tuicool.com/articles/NbIJ73

http://blog.csdn.net/songzitea/article/details/16986423

引言 

本節主要是David Lowe對於SIFT演算法的闡述Distinctive Image Features from Scale-Invariant Keypoints和 Herbert Bay, Andreas Ess, Tinne Tuytelaars, Luc Van Gool, 對於SURF演算法的 闡述 以及小結。

SIFT特徵提取小結 

根據LOWE的文章(更為SIFT特徵提取分析,請見詳參考博文 尺度不變特徵變換(SIFT)特徵提取分析 ) 。

首先, 先對SIFT演算法的主要原理、流程做一個簡要闡述。由於 該演算法的核心是“尺度不變”特徵點的提取 ,所以特徵點得篩選資源從 高斯金字塔產生的差分高斯空間中的局部極值點獲得 。 第一、個人認為關於高斯金字塔以及拉普拉斯運算元的原理可以作以下直觀理解:SIFT演算法的尺度不變特徵點大多是邊緣上的點(更進一步是邊緣上的角點(如矩形的四個頂點),關於邊緣上非角點得去除會在下文提到),而邊緣上的點即是高頻(亮度與鄰接點相差大)的點,它的亮度變動率取到一個極大值,即亮度變動率的變動率(亮度的二階導數)等於0,即拉普拉斯運算元△I=0。 第二、由於當映像與高斯核卷積後,I(x,y)變為G(X,Y,σ),求二階偏導數可以轉化為求關於尺度σ的一階偏導數(高斯核即二維常態分佈是熱傳導方程的一個解),且求這個偏導數更易實現,所以引入以σ為變數的高斯差分空間。對高斯差分空間可作如下直觀理解:當人眼由遠及近地觀察一個物體,物體的細節會變化,但大體輪廓不會變化,由此可以通過比較站在遠處和近處的兩個畫面來確定輪廓。事實上高斯差分空間中的映像看起來像浮雕,輪廓非常明顯,所以求出高斯差分空間鄰接映像的極值點即可。】

其次,進行初步取得的極值點得篩選工作,分兩步,篩出特徵點。 用二次曲面來類比每個極值點附近的映像亮度函數,求出理論上極值點,設定一個界限,捨去實際點與理論點偏差大於界限的點。 去除僅落在邊緣上而非角點的點。這類應被捨去的點有一個特徵:沿著邊緣切線方向的映像函數平緩(曲率小),垂直邊緣方向陡峭(曲率大)。由於Hessian矩陣的兩個特徵值是X,Y方向的曲率,所以求出每個極值點兩個特徵值的比值,設定一個界限,捨去不合格的點即可。 

最後,選定特徵點後,就對每個特徵點進行描述子(類比人眼視網膜)的製作(因為特徵點對映像的變化過于敏感,而描述子不敏感)。 由於SIFT對旋轉有不變性,所以為每個特徵點計算一個方向,這是製作描述子的預備工作。(具體實現是選定一個特徵點附近的地區,算出地區中所有點的梯度大小以及方向,然後將這些方向分為36組,按梯度大小和常態分佈函數加權,繪製0~360°的長條圖,再用二次函數擬合求長條圖的最大值點,得到一個特徵點的總方向(若有次最大值點接近極大值點,則將這一特徵點分為二個在同一座標的點,但分別使用兩個不同方向)。 確定方向後將地區內所有點的梯度方向轉過一個上述確定的主方向的角度。然後將地區分為4*4=16個正方形子領域,每個地區中的點按梯度大小和常態分佈加權,繪製出8個方向的長條圖,所以每個特徵點可得到一個128維的描述子向量(因為要使特徵點對對比變化不敏感,還需對向量歸一化處理)。這些描述子即可用於匹配,即尋找另一幅映像中與該特徵點128維向量幾何距離最短的點。LOWE提到的方法是用K-D樹搜尋,但由於高維情形耗時較長,需加一個近似最優的貪進法剪枝和一個卡時出解的策略求得近似解。至此,SIFT演算法完成。 
除上述對SIFT演算法的理論可行性討論外,在SIFT實現的過程中還有一個重要的方面是一些參數的選擇,例如一個OCTAVE幾個圖,一個描述子幾個子領域,以及捨棄極值點時界限閾值(threshold)的選擇,這些都關係到識別的精確度和演算法的效率。Lowe在文章中給出了推薦資料,但在具體情況下可能可以再作微調(如識別的情境不同)。 

SIFT演算法時間複雜度的瓶頸在於描述子的建立和匹配 ,如何最佳化對特徵點的描述方法是提升SIFT效率的關鍵,PCA-SIFT等演算法在這裡做了最佳化。

SURT特徵提取小結 

SURF演算法 (更為SURF特徵提取分析,請見詳參考博文 SURF特徵提取分析 ) 是對SIFT演算法的改進,其基本結構、步驟與SIFT相近,但具體實現的過程有所不同。SURF演算法的優點是速度遠快於SIFT且穩定性好。 

首先, 先對SURF演算法的中 特徵點的提取 在SURF演算法中,特徵點的判據為某像素亮度的Hessian矩陣的行列式(Dxx*Dyy-Dxy*Dxy)為一個極值。由於Hessian矩陣的計算需要用到偏導數的計算,這一般通過像素點亮度值與高斯核的某一方向偏導數卷積而成;在SURF演算法裡,為提高演算法運行速度,在精度影響很小的情況下,用近似的盒狀濾波器(0,1,1組成的box filter)代替高斯核。因為濾波器僅有0,-1,1,因此卷積的計算可以用積分映像(Integral image)來最佳化(O(1)的時間複雜度),大大提高了效率。每個點需計算Dxx,Dyy,Dxy三個值,故需要三個濾波器;用它們濾波後,得到一幅映像的響應圖(Response image,其中每個像素的值為原映像素的Dxx*Dyy-Dxy*Dxy)。對映像用不同尺寸的濾波器進行濾波,得到同一映像在不同尺度的一系列響應圖,構成一個金字塔(該金字塔無需像SIFT中的高斯一樣進行降採樣,即金字塔每組中的每層映像解析度相同)。 特徵點的檢測與SIFT一致,即若某點的Dxx*Dyy-Dxy*Dxy大於其鄰域的26個點(與SIFT一致)的Dxx*Dyy-Dxy*Dxy,則該點為特徵點。特徵點的亞像素精確定位與SIFT一致。 其次,描述子的建立 為保證特徵點描述子的旋轉不變性,需對每個特徵點計算主方向。計算主方向的過程如下: 統計以特徵點為中心,正比於特徵點尺度的某個數位半徑,張角為60°的扇形地區內所有像素點的 sumX=(y方向小波變換響應)*(高斯函數),sumY=(x方向小波變換響應)*(高斯函數), 計算合成向量角度θ=arctan(sumY/sumX),模長sqrt(sumy*sumy+sumx*sumx)。 將扇形沿逆時針旋轉(一般取步長為0.1個弧度),以同樣方法計算合成向量。 求出各方向扇形的合成向量模長最大值,其對應的角度即特徵點主方向。 描述子的建立過程如下: 選定以特徵點為中心的一塊正方形地區,將其旋轉與主方向對齊。 將正方形分為4x4的16個子領域,對每個地區進行Haar 小波變換(同樣用積分映像加速),得到4個係數。 由上述兩步,產生4x4x4=64維向量,即描述子,用它可以進行匹配等工作。

此演算法的優點 在於大量合理使用積分映像降低運輸量,而且在運用的過程中並未降低精度(小波變換,Hessian矩陣行列式檢測都是成熟有效手段) 。在時間上,SURF運行速度大約為SIFT的3倍;在品質上,SURF的魯棒性很好,特徵點識別率較SIFT高,在視角、光照、尺度變化等情形下,大體上都優於SIFT。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.