常見的 特徵點 提取 概念等內容

sift  surf 

轉自:http://blog.csdn.net/songzitea/article/details/18271091 

引言

本節主要是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一致。
其次,描述子的建立
  • 爲保證特徵點描述子的旋轉不變性,需對每個特徵點計算主方向。計算主方向的過程如下:
    1. 統計以特徵點爲中心,正比於特徵點尺度的某個數位半徑,張角爲60°的扇形區域內所有像素點的 sumX=(y方向小波變換響應)*(高斯函數),sumY=(x方向小波變換響應)*(高斯函數), 計算合成向量角度θ=arctan(sumY/sumX),模長sqrt(sumy*sumy+sumx*sumx)。
    2. 將扇形沿逆時針旋轉(一般取步長爲0.1個弧度),以同樣方法計算合成向量。
    3. 求出各方向扇形的合成向量模長最大值,其對應的角度即特徵點主方向。
  • 描述子的建立過程如下:
    1. 選定以特徵點爲中心的一塊正方形區域,將其旋轉與主方向對齊。
    2. 將正方形分爲4x4的16個子區域,對每個區域進行Haar 小波變換(同樣用積分圖像加速),得到4個係數。
    3. 由上述兩步,生成4x4x4=64維向量,即描述子,用它可以進行匹配等工作。

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章