日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SIFT算法学习总结

發(fā)布時間:2023/12/20 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SIFT算法学习总结 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

這兒僅作為我個人學習SIFT算法的總結(jié)!

算法存在的意義

SIFT(Scale-Invariant feature transform)算法是一種局部特征檢測的算法,該算法通過尋找圖像中的特征點(interest points ,or corner points)來進行特征點匹配。它在尺度空間尋找極值點,并精確計算出其位置信息,結(jié)合尺度,方向信息進行特征描述,該算法具有尺度,旋轉(zhuǎn)不變性,對圖像的亮度或者拍攝角也具有一定的不變性。SIFT算法在物體識別,機器人地圖感知與導航,圖像拼接,匹配,圖像追蹤等方面有廣泛應用。SIFT算法特點:1、SIFT特征是圖像的局部特征,其對旋轉(zhuǎn)、尺度縮放、亮度變化保持不變性,對視角變化、仿射變換、噪聲也保持一定程度的穩(wěn)定性;2、 獨特性(Distinctiveness)好,信息量豐富,適用于在海量特征數(shù)據(jù)庫中進行快速、準確的匹配;3、 多量性,即使少數(shù)的幾個物體也可以產(chǎn)生大量的SIFT特征向量;4、高速性,經(jīng)優(yōu)化的SIFT匹配算法甚至可以達到實時的要求;5、可擴展性,可以很方便的與其他形式的特征向量進行聯(lián)合。

算法核心步驟

  • 在尺度空間中尋找極值點
  • 關(guān)鍵點的定為與過濾(過濾掉第對比度和邊緣響應的點)
  • 方向賦值(達到旋轉(zhuǎn)和尺度的不變性)
  • 特征描述(使用方向直方圖)
  • 算法實現(xiàn)原理

    構(gòu)建尺度空間

    當用一個機器視覺系統(tǒng)分析未知場景時,計算機沒有辦法預先知識圖像中物體尺度,因此,我們需要同時考慮圖像在多尺度下的描述,獲知感興趣物體的最佳尺度。

    同一物體在不同觀測精度下呈現(xiàn)出不同的表象就構(gòu)成了一組尺度空間。尺度空間中個尺度圖像的模糊程度逐漸變大,能夠模擬人由近及遠的觀察目標,尺度越大,圖像越模糊。

    人的視覺系統(tǒng)具有尺度不變性,不管離觀察目標有多遠多近,我們都能準確的識別出看到的物體,這表明我們能夠從不同尺度的圖像中找尋到相同的特征點。SIFT算法就在于尋找到了尺度不變性的方法。

    所以在很多時候,我們會在將圖像構(gòu)建為一系列不同尺度的圖像集,在不同的尺度中去檢測我們感興趣的特征。比如:在Harr特征檢測人臉的時候,因為我們并不知道圖像中人臉的尺寸,所以需要生成一個不同大小的圖像組成的金字塔,掃描其中每一幅圖像來尋找可能的人臉。
    構(gòu)造尺度空間是通過高斯模糊算子實現(xiàn)的

    σ稱為尺度空間因子,它是高斯正太分布的方差,其值越大表明圖像被平滑程度越大,尺度越大,反之亦然。

    構(gòu)造高斯金字塔


    高斯金字塔分為不同的組合不同的層,每一組我們稱之為一個八度(octave),每一組的分辨率大小不同,一般上一組是下一組倒數(shù)第三層圖像個點采樣得到的。每一組中有多層圖像,同一組中圖像分辨率大小相同,但是采用的尺度因子不同,也就是被平滑的程度不同,通過高斯金字塔的構(gòu)建也就夠SIFT算法尺度空間的表示。

    使用DOG近似LOG尋找極值點(關(guān)鍵點)

    對圖像作LOG,即可得到圖像的邊緣信息。LOG是一種邊緣檢測算子。在此,LOG空間中的極值點被初步篩選特征點,由于LOG計算比較耗時,故采用DOG計算(DOG是LOG計算的近似)。那么是如何計算出圖像的DOG表示呢?我們發(fā)現(xiàn),高斯金字塔中,不同層之間圖像平滑算子不同,可以將高斯金字塔的下層減去上層圖像得到DOG圖像。



    得到圖像的DOG空間表示,在DOG空間中尋找極值點。通過比較當前點周圍8個點的大小與上層9個和下層9個點大小確定當前點是否是極值點,是極值點,就認定該點為初步篩選出的特征點。

    去除低對比度和邊緣響應的點

    到現(xiàn)在,我們已經(jīng)得到部分關(guān)鍵點。但是現(xiàn)在存在幾個問題:
    1、關(guān)鍵點的位置信息不精確
    2、關(guān)鍵點中存在不好的點(特征點不具備很強的獨特性,使得識別魯棒性降低)

    這一步的本質(zhì)是移除DOG局部曲率不對稱的像素點。

    關(guān)鍵點的精確定位

    問題是我們找到的極值點并不一定是最低點。

    通過擬和三維二次函數(shù)以精確確定關(guān)鍵點的位置和尺度(達到亞像素精度),同時去除低對比度的關(guān)鍵點和不穩(wěn)定的邊緣響應點(因為DoG算子會產(chǎn)生較強的邊緣響應),以增強匹配穩(wěn)定性、提高抗噪聲能力,在這里使用近似Harris Corner檢測器。

    通過將尺度空間函數(shù)泰勒展開,如上圖D(x),對上式求導,令導數(shù)為0,得到精關(guān)鍵點確位置信息。

    接下來去除低對比度的點。將代入D(X)即DOG空間中計算D(x)處的取值。若小于0.03,那么該點的對比度低,應該剔除。

    接下來要做的是剔除邊緣響應的點
    我們知道,沿著邊緣方向,高斯差分算子得到較小的主曲率,垂直于邊緣方向,得到的主曲率較大(如果該點不是邊緣,而是角點,那么兩邊得到的曲率應該差不多)。主曲率可由Hessian矩陣求得。

    D(X)的主曲率和H的特征值成正比,令α為較大特征值,β為較小特征值,令α=γβ,則D(X)的主曲率和γ成正比。



    在羅伊(SIFT創(chuàng)始人)論文中,設(shè)置γ=10,我們將主曲率大于一定閾值的點去除得到最終的特征點。

    計算關(guān)鍵點方向(方向賦值)

    現(xiàn)在我們得到了一系列不錯的關(guān)鍵點了,現(xiàn)在需要去除尺度和旋轉(zhuǎn)的不變性。
    1、首先通過關(guān)鍵點所在的尺度選定其所在的高斯金字塔中的圖像。
    2、圖像3σ鄰域窗口內(nèi)像素的梯度和方向分布特征。梯度的模值和方向如下:
    L為關(guān)鍵點所在的尺度空間值

    完成計算后通過統(tǒng)計梯度和方向直方圖得到關(guān)鍵點的主方向。

    方向直方圖的峰值則代表了該特征點處鄰域梯度的方向,以直方圖中最大值作為該關(guān)鍵點的主方向。為了增強匹配的魯棒性,只保留峰值大于主方向峰值80%的方向作為該關(guān)鍵點的輔方向。因此,對于同一梯度值的多個峰值的關(guān)鍵點位置,在相同位置和尺度將會有多個關(guān)鍵點被創(chuàng)建但方向不同。僅有15%的關(guān)鍵點被賦予多個方向,但可以明顯的提高關(guān)鍵點匹配的穩(wěn)定性。實際編程實現(xiàn)中,就是把該關(guān)鍵點復制成多份關(guān)鍵點,并將方向值分別賦給這些復制后的關(guān)鍵點,并且,離散的梯度方向直方圖要進行插值擬合處理,來求得更精確的方向角度值。

    特征描述子生成

    至此,我們已經(jīng)得到一個關(guān)鍵點的位置,尺度,方向信息,我們需要一個描述特征的方法。

    SIFT描述子是關(guān)鍵點鄰域高斯圖像梯度統(tǒng)計結(jié)果的一種表示。通過對關(guān)鍵點周圍圖像區(qū)域分塊,計算塊內(nèi)梯度直方圖,生成具有獨特性的向量,這個向量是該區(qū)域圖像信息的一種抽象,具有唯一性。
    Lowe建議描述子使用在關(guān)鍵點尺度空間內(nèi)4*4的窗口中計算的8個方向的梯度信息,共4*4*8=128維向量表征。表示步驟如下:
    1、確定計算描述子所需的圖像區(qū)域
    特征描述子與特征點所在的尺度有關(guān),因此,對梯度的求取應在特征點對應的高斯圖像上進行。將關(guān)鍵點附近的鄰域劃分為d*d(Lowe建議d=4)個子區(qū)域,每個子區(qū)域做為一個種子點,每個種子點有8個方向。

    2、 將坐標軸旋轉(zhuǎn)為關(guān)鍵點的方向,以確保旋轉(zhuǎn)不變性,如6.2所示。

    3、 將鄰域內(nèi)的采樣點分配到對應的子區(qū)域內(nèi),將子區(qū)域內(nèi)的梯度值分配到8個方向上,計算其權(quán)值。

    4、插值計算每個種子點八個方向的梯度。

    5、統(tǒng)計的4*4*8=128個梯度信息即為該關(guān)鍵點的特征向量。特征向量形成后,為了去除光照變化的影響,需要對它們進行歸一化處理,對于圖像灰度值整體漂移,圖像各點的梯度是鄰域像素相減得到,所以也能去除。

    6、 描述子向量門限。非線性光照,相機飽和度變化對造成某些方向的梯度值過大,而對方向的影響微弱。因此設(shè)置門限值(向量歸一化后,一般取0.2)截斷較大的梯度值。然后,再進行一次歸一化處理,提高特征的鑒別性。

    7、 按特征點的尺度對特征描述向量進行排序。

    算法使用

    在opencv3中,SIFT不在直接可用,需要手動編譯,然后使用

    參考資料:

    http://blog.csdn.net/abcjennifer/article/details/7639681
    http://blog.csdn.net/zddblog/article/details/7521424
    http://aishack.in/tutorials/sift-scale-invariant-feature-transform-introduction/
    http://blog.csdn.net/dcrmg/article/details/52561656
    http://blog.csdn.net/dcrmg/article/details/52577555

    總結(jié)

    以上是生活随笔為你收集整理的SIFT算法学习总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。