視覺算法原理-SIFT算法解析

尺度不變特徵變換匹配算法詳解

Scale Invarian Feature Transform

本文大量引用了文章 : https://blog.csdn.net/zddblog/article/details/7521424  ,十分感謝

數學常識鏈接庫 :

拉格朗日乘子法 : https://www.matongxue.com/tags/47/

泰勒公式 : https://www.zhihu.com/question/21149770/answer/219143281 

以及  https://blog.csdn.net/xm961217/article/details/101021153

泰勒近似 : https://www.zhihu.com/question/52124268

子像素插值 : https://www.cnblogs.com/ronny/p/4028776.html

差分 : https://zhuanlan.zhihu.com/p/46699931

1. 介紹

SIFT 算法主要是對局部特徵進行提取的算法 ,不受亮度 ,旋轉 ,縮放的影響 ,對放射變換,透視變換 ,視角變換也有一定的穩定性 。

只需要檢測到三個 SIFT 特徵點 ,就可以檢測物體 。

 

2. 實現步驟

    ① 尺度空間極值檢測

    ② 關鍵點定位

    ③ 方向確定

    ④ 關鍵點描述

注意 :尺度空間爲 觀察物體的窗口大小

   而 SIFT 對圖片所做的高斯模糊處理 ,是採取了對高斯模糊分離的辦法 ,將矩陣分爲一行與一列 ,將會使高斯模糊的 時間複雜度從 O(n * m * M * N) 降低到 O( n * M *N ) + O(m * M * N) ,在邊緣上的一維矩陣會忽略圖片外的因素 。

並消除黑邊問題 。

由 來決定尺度空間的大小 。值越小表示被平滑的空間越小 ,越注重細節 ,值越大表示平滑的空間越大 ,越注重大輪廓 。

尺度空間實現時用高斯金字塔來表示 ,

3. 高斯金字塔的構建

1. 對圖片做不同尺度的高斯模糊處理

2. 對圖片進行降採樣 (隔點採樣)

圖像的金字塔模型是指,將原始圖像不斷縮小 ,從大到小 ,從下到上 ,構成金字塔 。

一般上一層比下一層長和寬各縮小一倍 。

而在特徵提取函數上 ,尺度歸一化的高斯拉普拉斯函數 與 高斯差分函數(DOG) 十分的近似 ,但 DOG 函數更加的高效 ,簡潔 。

因此引用 DOG 來進行極值的檢測 

在高斯金字塔中通過上下相鄰的圖像相減 ,得到高斯差分圖像 ,(注意:這裏是對每一層中大小相同的圖片 ,但使用了不同的參數做了高斯模糊)

4. 極值點檢測(關鍵點的初步檢測)

關鍵點的檢測是在相同尺寸之間的圖像之間比較得到 ,每個像素點要和他相鄰的點比較 ,( 8 鄰域 + 9 * 2 =26 個像素) ,看是不是比他的鄰域與尺度域的點大或者小 ,確保在 尺度空間和二維空間上都能檢測到極值點 。

這樣就能找到大部分極值點 ,包括響應弱的極值點 。

(注意 : 由於要在相鄰尺度進行比較,如每組含4層的高斯差分金子塔,只能在中間兩層中進行兩個尺度的極值點檢測,其它尺度則只能在不同組中進行。爲了在每組中檢測S個尺度的極值點,則DOG金字塔每組需S+2層圖像,而DOG金字塔由高斯金字塔相鄰兩層相減得到,則高斯金字塔每組需S+3層圖像,實際計算時S在3到5之間。)

5. 構建尺度空間所需要的參數

在最開始建立高斯金字塔時,要預先模糊輸入圖像來作爲第0個組的第0層的圖像,這時相當於丟棄了最高的空域的採樣率。因此通常的做法是先將圖像的尺度擴大一倍來生成第-1組。我們假定初始的輸入圖像爲了抗擊混淆現象,已經對其進行的高斯模糊,如果輸入圖像的尺寸用雙線性插值擴大一倍,那麼相當於

  —尺度空間座標

    O—組(octave)數

    S— 組內層數

在上述尺度空間中,O和S,的關係如下:

 (3-5)

其中是基準層尺度,o爲組octave的索引,s爲組內層的索引。關鍵點的尺度座標就是按關鍵點所在的組和組內的層,利用公式(3-5)計算而來。

取式(3-4)中的k爲組內總層數的倒數,即

   (3-6)

在構建高斯金字塔時,組內每層的尺度座標按如下公式計算:

(3-7)

其中初始尺度,lowe取,s爲組內的層索引,不同組相同層的組內尺度座標相同。組內下一層圖像是由前一層圖像按進行高斯模糊所得。式(3-7)用於一次生成組內不同尺度的高斯圖像,而在計算組內某一層圖像的尺度時,直接使用如下公式進行計算:

(3-8)

該組內尺度在方向分配和特徵描述時確定採樣窗口的大小。

由上,式(3-4)可記爲

(3-9)

圖3.5爲構建DOG金字塔的示意圖,原圖採用128*128的jobs圖像,擴大一倍後構建金字塔。

 

6. 關鍵點精確定位

以上方法檢測到的極值點是離散空間的極值點,以下通過擬合三維二次函數來精確確定關鍵點的位置和尺度,同時去除低對比度的關鍵點和不穩定的邊緣響應點(因爲DoG算子會產生較強的邊緣響應),以增強匹配穩定性、提高抗噪聲能力。

 

而離散空間的極值點與連續空間的極值點是不一樣的 ,獲取連續空間的極值點的方法叫做 子像素插值(Sub-pixel Interpolation)

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