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