1. 程式人生 > >關於SIFT(Scale Independent Feature Transfor)的學習筆記

關於SIFT(Scale Independent Feature Transfor)的學習筆記

【時間】2018.11.06

【題目】關於SIFT(Scale Independent Feature Transfor)的學習筆記

一、SIFT(Scale Independent Feature Transfor)

      通過博文https://blog.csdn.net/weixin_38404120/article/details/73740612 瞭解了SIFT特徵匹配演算法,知道了影象尺度空間、尺度空間表達——高斯卷積、金字塔多解析度表達——降取樣、LOG(Laplassian of Gaussian)、DOG(Difference of Gaussian)等概念。

1.1影象尺度空間

   平時生活中,用人眼去看一張照片時,隨著觀測距離的增加,影象會逐漸變得模糊。那麼計算機在“看”一張照片時,會從不同的“尺度”去觀測照片,尺度越大,影象越模糊。 所有不同尺度下的影象,構成單個原始影象的尺度空間影象尺度空間表達”就是影象在所有尺度下的描述。

1.2.“尺度空間表達”與“金字塔多解析度表達”

1)尺度空間表達——高斯卷積

高斯核是唯一可以產生多尺度空間的核。 左圖是二維高斯函式在數學座標系下的影象。 右圖是高斯函式對應的高斯核。

  

2)金字塔多解析度表達——降取樣

所謂影象金字塔化:就是先進行影象平滑,再進行降取樣,根據降取樣率不同,所得到一系列尺寸逐漸減小的影象。

兩種表達的不同之處在於:

    “尺度空間表達”在所有尺度上具有相同解析度,而“影象金字塔化”在每層的表達上解析度都會減少固定比率。

    “影象金字塔化”處理速度快,佔用儲存空間小,而“尺度空間表達”剛好相反。

 

1.3.LOG(Laplassian of Gaussian)

     將前面提到的“尺度空間表達”與“影象金字塔化”融合起來的話,就得到了LOG影象,高斯拉普拉斯變換影象。其步驟是:先將照片降取樣,得到了不同解析度下的影象金字塔。再對每層影象進行高斯卷積。這樣一來,原本的影象金字塔每層只有一張影象,而卷積後,每層又增加了多張不同模糊程度下的照片。

4.DOG(Difference of Gaussian)

為了更好地獲取特徵點,所以還需要對LOG影象再進一步地優化,得到了DoG。DOG即高斯差分。

構造高斯差分影象的步驟是:在獲得LOG影象後,用其相鄰的影象進行相減,得到所有影象重新構造的金字塔就是DOG金字塔。下面左圖是LOG影象,右圖是DOG影象。

1.5.DOG區域性極值點(定位關鍵點)

尋找極值點

當得到DOG金字塔後,我們接下來要做的是尋找DOG極值點。每個畫素點與其周圍的畫素點比較,當其大於或者小於所有相鄰點時,即為極值點。

比如說,如下圖所示,以黃點為檢測點,那麼其周圍的點,除了同層所包圍的8個綠點外,還有上一層的9個點與下一層的9個點。

1.6 關鍵點方向賦值

1.7.關鍵點描述

在每子區域內計算8個方向的梯度方向直方圖,繪製每個梯度方向的累加值,形成一個種子點。與求特徵點主方向時有所不同,此時,每個子區域的梯度方向直方圖將0°~360°劃分為8個方向範圍,每個範圍為45°,這樣,每個種子點共有8個方向的梯度強度資訊。由於存在4X4(Bp X Bp)個子區域,所以,共有4X4X8=128個數據,最終形成128維的SIFT特徵向量.

1.8.程式碼實現--在opencv中使用特徵點檢測器

使用python以及opencv實現關鍵點檢測器詳見 https://blog.csdn.net/zhangziju/article/details/79754652