SIFT讲解(SIFT的特征点选取以及描述是重点)
目錄
- SIFT是什么?
- 尺度空間理論
- SIFT特征點(diǎn)提取
- SIFT特征點(diǎn)描述
SIFT是什么?
SIFT ,即尺度不變特征變換( Scale-invariant feature transform,SIFT) ,一種特征描述方法。具有
尺度魯棒性
旋轉(zhuǎn)魯棒性
光照魯棒性
SIFT本身包括了特征點(diǎn)篩選及特征點(diǎn)描述的步驟。
尺度空間理論
SIFT的特征點(diǎn)篩選目的:尋找在不同尺度空間下的極值點(diǎn),保證這些特征點(diǎn)在放大或者縮小的條件下均存在。
(這一特點(diǎn)與Harris檢測特征點(diǎn)比較的話發(fā)現(xiàn),Harris對尺度變換的魯棒性較差)
SIFT的特征點(diǎn)篩選方法:DoG近似LoG。
LoG(Laplacian of Gaussian) :使用不同sigma獲得不同的尺度空間圖像,然后通過Laplacian算子獲得極值。這一運(yùn)算過程可以用DoG(Difference-of-Gaussian)近似。拉普拉斯其實(shí)就是二階導(dǎo)數(shù),產(chǎn)生的零交叉點(diǎn)就是我們所要獲取的極值。
關(guān)于LoG與DoG的更多知識可以轉(zhuǎn)到:圖像分割-LOG檢測器和DOG檢測器
DoG步驟:
得到的結(jié)果與LoG結(jié)果非常相似,在DoG結(jié)果圖中,我們用亮度表達(dá)差分值的大小。在紋理比較豐富、邊緣區(qū)域具有比較大的值。
理解:高斯卷積核其實(shí)是一種加權(quán)的平均。在灰度變化不劇烈的地區(qū),一個像素值的大小和周圍像素值得大小基本相等,所以不管加權(quán)的參數(shù)是哪樣,得到的加權(quán)結(jié)果其實(shí)是相似的,所以做差分之后這種區(qū)域的差分值會很小。灰度變化劇烈的地區(qū)則反之,差分值會很大。
SIFT特征點(diǎn)提取
在SIFT特征點(diǎn)選取中所用到的DoG:
這時候就出現(xiàn)了一個問題:隨著sigma的增加,它需要更大的高斯窗口進(jìn)行平滑模糊處理。(sigma越大高斯函數(shù)越扁平)會使無法處理的區(qū)域增加,同時計算量增加。在空間濾波中我們學(xué)習(xí)到,3* 3模板進(jìn)行卷積時對圖像最外一層像素是無法處理的,5*5是周圍兩層像素。
解決方法:圖像金字塔,回顧知識:Opencv——圖像金字塔與圖像尺寸縮放
當(dāng)k增加到2時,我們將圖像縮小為1/2尺寸,這叫降采樣。再使用sigma0的模板處理。我們發(fā)現(xiàn),圖像縮小了二分之一,而sigma卻沒有改變。重復(fù)該操作,進(jìn)行降采樣。同一個Octave的圖像具有相同的尺寸。
在圖像金字塔處理之后,我們將就是檢測DoG極值了。
關(guān)于獲取一個octave的圖像的詳細(xì)過程可以參考文章最末的原理講解,那個是十分詳細(xì)的。
這樣得出來的極值的性質(zhì)如何?
當(dāng)然這些得到的極值點(diǎn)是候選點(diǎn)。在得到候選點(diǎn)之后就要對候選點(diǎn)的特征進(jìn)行描述,以達(dá)到匹配的目的。
SIFT特征點(diǎn)描述
使用梯度值對特征點(diǎn)進(jìn)行表述,計算像素的梯度值和梯度方向。相對像素的亮度值,梯度對光照具有更好的魯棒性。
當(dāng)圖像處于一個剛體狀態(tài)時(沒有劇烈形變),某像素與它周圍像素的關(guān)系應(yīng)該是近乎恒定的。對一個區(qū)域進(jìn)行描述的話得到的描述子將更加穩(wěn)定。
我們先假設(shè)一個候選點(diǎn):
然后計算它周圍一定區(qū)域的梯度值,比如8*8區(qū)域。
1、將得到的角度值進(jìn)行36等分。
2、在特征點(diǎn)對應(yīng)的尺度空間計算梯度值。
3、利用高斯核對梯度進(jìn)行計算權(quán)重。
也就是說該像素周圍像素的權(quán)重由兩個值決定:一個是本身梯度大小、第二個是離考察像素點(diǎn)的距離。
建立一個36維的直方圖,每次累加的值就是它的權(quán)重
其實(shí)到了這一步已經(jīng)可以很好地描述了。
但是注意,此刻的角度計算得到的是一個絕對角度,是與水平方向成的角度。當(dāng)圖像旋轉(zhuǎn)后顯然這種描述方法就有問題了。
解決方法:獲取一個具有代表性的方向作為主方向。通常選擇梯度值最大的那個角度分量作為主方向,獲得更具有旋轉(zhuǎn)魯棒性的描述方法。
選擇完主方向后,將周圍圖像以主方向計算相對角度。這樣就算圖像進(jìn)行旋轉(zhuǎn),主方向也會進(jìn)行旋轉(zhuǎn),相對角度保持相對恒定狀態(tài)。
代碼實(shí)現(xiàn)可以參考第二個鏈接。
要是想要調(diào)用Opencv庫函數(shù),則要參考毛星云的《Opencv3編程入門的》417頁,
我在我的Opencv安裝包中沒有找到這個nonfree文件夾,以后再解決這個問題。網(wǎng)上大部分調(diào)庫代碼也需要一些自己添加庫。
參考鏈接:
SIFT算法詳解
基于C++和OpenCv的SIFT_圖像局部特征檢測算法代碼的實(shí)現(xiàn)
《數(shù)字圖像處理PPT.李竹版》
總結(jié)
以上是生活随笔為你收集整理的SIFT讲解(SIFT的特征点选取以及描述是重点)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 英短银渐层多少钱啊?
- 下一篇: (1-e^(-j5w))/(1-e^(-