算法 | 尺度不变特征变换匹配算法 Scale Invariant Feature Transform (SIFT)
/******************************************************/
github:https://github.com/MichaelBeechan
CSDN:https://blog.csdn.net/u011344545
/******************************************************/
記得最早使用SIFT還是OpenCV2中,不知后來為什么被去掉了!!!直到前段時間聽說SIFT算法專利到期了(原來是因為SIFT算法有使用權限),接著很快OpenCV4就有這個功能了!!!!!
1、SIFT簡介
圖像匹配的核心問題:將同一目標在不同時間、不同分辨率、不同光照、不同位姿情況下所成的像相對應。
傳統的匹配算法:往往是直接提取角點或邊緣,對環境的適應能力較差,因此急需提出一種魯棒性強、能夠適應不同光照、不同位姿等情況下能夠有效識別目標的方法。
所以1999年SIFT誕生了:David G. Lowe老爺子提出:E-mail: lowe@cs.ubc.ca
1999 年哥倫比亞大學 David G.Lowe 教授總結了現有的基于不變量技術的特征檢測方法,提出了一種**基于尺度空間的**、對**圖像縮放**、**旋轉**甚至**仿射變換**保持不變性的圖像局部特征描述算子—— **SIFT(尺度不變特征變換)**,直到算法在2004被完善。
將一幅圖像映射(變換)為一個局部特征向量集:特征向量具有平移、縮放、旋轉不變性,同時對光照變化、仿射及投影變換也有一定不變性。
SIFT 算法特點:
- SIFT 特征是**圖像的局部特征**,其對**旋轉**、**尺度縮放**、**亮度變化保持不變性**,對**視角變化**、**仿射變換**、**噪聲**也保持一定程度的穩定性。- 獨特性好,信息量豐富,適用于在海量特征數據庫中進行快速、準確的匹配。- 多量性,即使少數的幾個物體也可以產生大量 SIFT 特征向量。- 經過優化的 SIFT 算法可滿足一定的速度需求。- 可擴展性,可以很方便的與其他形式的特征向量進行聯合。SIFT 算法解決的問題
- 目標的旋轉、縮放、平移- 圖像仿射/投影變換- 光照影響- 目標遮擋- 雜物場景- 噪聲2、SIFT算法實現
SIFT 算法實現物體識別主要有三大工序,1 1 、提取關鍵點;2 2 、對關鍵點附加詳細的信息(局部特征)也就是所謂的描述器;3 3 、通過兩方特征點(附帶上特征向量的關鍵點)的兩兩比較找出相互匹配的若干對特征點,也就建立了景物間的對應關系。
2.1 關鍵點檢測
根據文獻 《 Scale- - space theory: A basic tool for analysing structures at different scales 》 我們可知,高斯核是唯一可以產生 多尺度空間的核,一個圖像的尺度空間, L( x,y,σ) , 定義為原始圖像 I(x,y) 與一個可變尺度的2 2 維高斯函數 G(x,y,σ) 卷積運算
Lindeberg 在文獻 《 Scale- - space theory: A basic tool for analysing structures at different scales 》 指出尺度規范化的 LoG 算子具有真正的尺度不變性。
LoG 算子即( Laplacion of Gaussian ), 可以由高斯函數梯度算子 GOG 構建
LOG算子與高斯核函數的關系
DoG ( Difference of Gaussian )函數
在 Lowe 的論文中,將第0 0 層的初始尺度定為 1.6,圖片的初始尺度定為 0.5,則圖像金字塔第0層的實際尺度為
2.2 關鍵點描述
描述的目的是在關鍵點計算后,用一組向量將這個關鍵點描述出來,這個描述子不但包括關鍵點,也包括關鍵點周圍對其有貢獻的像素點。用來作為目標匹配的依據,也可使關鍵點具有更多的不變特性,如光照變化、 3D 視點變化等。
下圖是一個 SIFT 描述子事例。其中描述子由2×2×8 維向量表征,也即是2×2個8 方向的方向 直方圖組成。 左圖的種子點由8×8單元組成。每一個小格都代表了特征點鄰域所在的尺度空間的一個像素,箭頭方向代表了像素梯度方向,箭頭長度代表該像素的幅值。然后在4×的窗口內計算8 個方向的梯度方向直方圖。繪制每個梯度方向的累加可形成一個種子點,如右圖所示:由 一個特征點由4 個種子點的信息所組成。
Lowe 實驗結果表明 : 描述子采用4×4×8= 128維向量表征 ,綜合效果最優(不變性與獨特性)
2.3 關鍵點匹配
分別對參考圖reference image 和觀測圖, observation image建立關鍵點描述子集合。目標的識別是通過兩點集內關鍵點描述子的比對來完成。具有 128 維的關鍵點描述子的相似性度量采用歐式距離。
2.4 消除錯配點
關鍵點匹配并不能標志著算法的結束,因為在匹配的過程中存在著大。 量的錯配點。
RANSAC ( Random Sample Consensus , 隨機抽樣一致 ):是一種魯棒性的參數估計方法。
思想:首先根據具體問題設計出某個目標函數,然后通過反復提取最小點集估計該函數中參數的初始值,利用這些初始值把所有的數據分為 “ 內點 ” ( inlier )和 “ 外點 “ ( outlier ),最后用所有的內點重新計算和估計函數的參數。
3、SIFT算法的應用
SIFT 算法目前在軍事、工業和民用方面都得到了不同程度的應用,其應用已經滲透了很多領域,典型的應用如下:
? 物體識別 ? 機器人定位與導航 ? 圖像拼接 ? 三維建模 ? 手勢識別 ? 視頻跟蹤 ? 筆記鑒定 ? 指紋與人臉識別 ? 犯罪現場特征提取 ?????????????4、SIFT算法的擴展與改進
總結
以上是生活随笔為你收集整理的算法 | 尺度不变特征变换匹配算法 Scale Invariant Feature Transform (SIFT)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 问题 | 0x00007FF952879
- 下一篇: 光流 | 基于Horn-Schunck