SIFT——Scale Invariant Feature Transform (尺度不變特征變換匹配)


本文參考:https://www.zhihu.com/search?type=content&q=%E4%BC%A0%E7%BB%9F%E7%9B%AE%E6%A0%87%E6%A3%80%E6%B5%8B%E6%96%B9%E6%B3%95

     https://blog.csdn.net/jancis/article/details/80824793

             https://blog.csdn.net/qq_37374643/article/details/88606351

本文主要包括以下幾個部分: SIFT 定義 、SIFT 作用 、SIFT 過程 、SIFT 相關問題。

SIFT 定義: 特征點鄰域高斯圖像梯度統計結果的一種表示,是一種圖像局部特征提取算法。

SIFT 作用: 可以找到兩張不同角度拍攝的照片,利用特征描述子將兩張圖片的相同部分匹配起來。 

SIFT 過程: 

一、尺度空間的搭建;

 

相關概念: octave : 組

     Difference of Gaussian (DOG): 高斯差分金字塔。 

高斯金字塔構建過程中的4個關鍵點:

(1)金字塔組數的確定,,M,N表示圖像的行,列數

(2)金字塔層數的確定,一般6層(不包括擴大一倍后的原圖像)

(3)每一層尺度的確定

(4)下一組的圖片降采樣母本的確定

二、尺度空間中候選極值點的檢測

  尺度空間極值檢測:通過使用高斯差分函數來計算並搜索所有尺度上的圖像位置,用於識別對尺度和方向不變的潛在興趣點。SIFT特征點是由高斯差分空間的局部極值點經過篩選組成的,中間的檢測點和它同尺度的8個相鄰點和上下相鄰尺度對應的9×2個點共26個點比較, 一個點如果在DOG尺度空間本層以及上下兩層的26個領域中是最大或最小值時,就認為該點是圖像在該尺度下一個候選的特征點,DoG圖像中的大值和小值出現在圖像區域發生較大變化的邊緣處,沒有變化的區域響應則接近於0。

三、對上一過程中得出的候選極值點進行篩選,去除低對比度的點和不穩定的邊緣響應點,得到真正的特征點(關鍵點篩選定位) ;

1、去除低對比度的點

  在SIFT中,圖像局部塊的對比度是用DOG響應的絕對值大小來度量的,因為DOG運算的本質是度量一個像素點和其周圍像素的不同,值越大則對比度越高。去除小的值的點,保留有較大響應的點。SIFT通過構建尺度空間來計算不同尺度下觀察到的特別的局部圖像塊,由於尺度采樣操作的存在,上面找到的近似極值點落在像素點的位置上,而實際上如果在像素點附近用空間曲面去擬合的話,很多情況下極值點都不是恰好在像素點上,而是在附近,即極值點的位置存在偏移,為了得到更精確的極值點的位置和其響應值,SIFT中,假定了DOG響應局部區域的連續性,用二階泰勒展開式來擬合並估計DOG的響應值,若該特征點的響應值的絕對值>=0.03,則保留該特征點,否則視為低對比度的點丟棄。

 

2、去除不穩定的邊緣響應點

 

  邊緣的梯度值是朝同一個方向的,於是會呈現明顯的梯度主方向,SIFT尋找的局部圖像塊,期望局部塊中的主梯度方向與其他方向的梯度相差不要太大,通過計算DOG的二階導數(Hessian矩陣),得到主梯度方向和其他方向的比值,保留該比值小於一定數值的局部特征點。去除僅落在邊緣上而非角點的點,這類應被舍去的點有一個特征:沿着邊緣切線方向的圖像函數平緩(曲率小)。垂直邊緣方向陡峭(曲率大)。由於Hessian矩陣的兩個特征值是X,Y方向的曲率,所以求出每個極值點兩個特征值的比例,設定一個界限,舍去不合格的點即可。

四、關鍵點方向分配

  1.通過尺度不變性求極值點,需要利用圖像的局部特征為給每一個關鍵點分配一個基准方向,使描述子對圖像旋轉具有不變性。對於在DOG金字塔中檢測出的關鍵點,采集其所在高斯金字塔圖像3σ鄰域窗口內像素的梯度和方向分布特征。梯度的模值和方向如下:

  2.本算法采用梯度直方圖統計法,統計以關鍵點為原點,一定區域內的圖像像素點確定關鍵點方向。在完成關鍵點的梯度計算后,使用直方圖統計鄰域內像素的梯度和方向。梯度直方圖將0~360度的方向范圍分為36個柱,其中每柱10度。如下圖所示,直方圖的峰值方向代表了關鍵點的主方向,方向直方圖的峰值則代表了該特征點處鄰域梯度的方向,以直方圖中最大值作為該關鍵點的主方向。為了增強匹配的魯棒性,只保留峰值大於主方向峰值80%的方向作為該關鍵點的輔方向。

五、特征點(關鍵點)描述

  對於每一個關鍵點,都擁有位置、尺度以及方向三個信息。為每個關鍵點建立一個描述符,用一組向量將這個關鍵點描述出來,使其不隨各種變化而改變,比如光照變化、視角變化等等。這個描述子不但包括關鍵點,也包含關鍵點周圍對其有貢獻的像素點,並且描述符應該有較高的獨特性,以便於提高特征點正確匹配的概率。

六、關鍵點匹配

  1. 分別對模板圖(參考圖,reference image)和實時圖(觀測圖,observation image)建立關鍵點描述子集合。目標的識別是通過兩點集內關鍵點描述子的比對來完成。具有128維的關鍵點描述子的相似性度量采用歐式距離。

  2. 匹配可采取窮舉法完成,但所花費的時間太多。所以一般采用kd樹的數據結構來完成搜索。搜索的內容是以目標圖像的關鍵點為基准,搜索與目標圖像的特征點最鄰近的原圖像特征點和次鄰近的原圖像特征點。
  Kd樹如下如所示,是個平衡二叉樹

SIFT 相關問題

  1.SIFT 特征為什么能實現尺度不變性?

  檢測得到的關鍵點為中心,選擇一個16*16的鄰域,然后再把這個鄰域再划分為4*4的子區域,然后對梯度方向進行划分成8個區間,這樣在每個子區域內疚會得到一個4*4*8=128維的特征向量,向量元素大小為每個梯度方向區間權值。提出得到特征向量后要對鄰域的特征向量進行歸一化,歸一化的方向是計算鄰域關鍵點的主方向,並將鄰域旋轉至根據主方向旋轉至特定方向,這樣就使得特征具有旋轉不變性。然后再根據鄰域內各像素的大小把鄰域縮放到指定尺度,進一步使得特征描述子具有尺度不變性

  2.SIFT 特征為什么能實現旋轉不變性?

  基於圖像局部的梯度方向,分配給每個關鍵點位置一個或多個方向。所有后面的對圖像數據的操作都相對於關鍵點的方向、尺度和位置進行變換,從而提供對於這些變換的旋轉不變性。

  3.為什么采用高斯金字塔構建尺度空間? 

  尺度歸一化的高斯拉普拉斯算子能夠得到最穩定的圖像特征,但因為計算量太大,而高斯差分函數與高斯拉普拉斯算子很相似,所以通過高斯差分函數來近似的計算圖像最穩定的特征。

  4.SIFT算法的優缺點? 

  優點: 

  a. 具有較好的穩定性和不變性,能夠適應旋轉、尺度縮放、亮度的變化,能在一定程度上不受視角變化、仿射變換、噪聲的干擾;
  b. 區分性好,能夠在海量特征數據庫中進行快速准確的區分信息進行匹配;
  c. 多量性,就算只有單個物體,也能產生大量特征向量;
  d. 高速性,能夠快速的進行特征向量匹配;
  e. 可擴展性,能夠與其它形式的特征向量進行聯合。 

  缺點:

  計算量太大,特征提取的速度比較慢。 

  5.特征描述子為什么不僅僅包含關鍵點,還要包含它的鄰域信息?

  為了避免對光照、視角等因素的敏感性。 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM