SIFT算法步骤梳理
生活随笔
收集整理的這篇文章主要介紹了
SIFT算法步骤梳理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
簡介:SIFT算法是檢測和描述局部特征的一種方法,具有尺度不變性,對于光線,噪聲等的容忍度相當高。即便少數幾個物體也可以產生大量SIFT特征。
SIFT算法實質上是在不同尺度空間上查找關鍵點,并計算出關鍵點的方向。
算法步驟:
1.構建尺度空間
- ?利用高斯核來構建
- 高斯核是唯一可以產生多尺度空間的核,也是唯一線性核,利用高斯核對圖像模糊處理不會引入其他噪聲。
- 高斯核函數:
- 輸入圖像通過高斯核函數連續的對尺度進行參數變換,最終得到多尺度空間序列。圖像中某一尺度的空間函數由高斯函數和原輸入圖像I(x,y)卷積得出:
- 高斯金字塔
- 模仿圖像的不同尺度
- 生成步驟:高斯平滑-->對圖像做下采樣(一般先將圖像擴大一倍,在擴大的圖像基礎上構建高斯金字塔,然后您對該尺寸下圖像進行高斯模糊,幾幅模糊的圖像集合構成了一個八度,然后對該八度下倒數第三張圖片進行下采樣,長和寬分別縮短一倍,圖像面積變為原來的四分之一。以此類推)
- 為什么選倒數第三張進行下采樣?為了保持尺度空間的連續性,根據下圖公式可以計算得出第o組第S層的圖像尺度,可以發現下一組的第o層圖像恰好和上一組倒數第三張圖一致,所以每一組的第0張圖像只需要用上一層的倒數第三張進行下采樣即可。
2.DoG
- Laplace operator:二階導
- LoG(Laplace of Gaussian)
- 把拉普拉斯算子和高斯函數聯合到了一個步驟
- 等價于先對高斯函數求二階導,再與原圖進行卷積
將高斯拉普拉斯算子展開:
又有:
- DoG:對不同尺度下的高斯函數的差分
DoG算子為
DoG算子和LoG算子具有類似的波形,且計算復雜度低,所以一般用DoG代替LoG算子。
- DoG vs LoG
- 高斯差分圖像
3.DoG定位極值點
- 特征點是由DoG空間的局部極值點組成的。
- 每一個像素要和他所有的相鄰點比較(中間的監測點和它同尺度的8個相鄰點和上下相鄰尺度對應的9*2個,共26個點比較,以確保在尺度空間和二維圖像空間都檢測到極值點)
- 檢測到的局部極值點A(x,y,σ)是離散情況下的一個極值點,如果考慮連續情況,則極值點可能落在了A點的附近(Δx,Δy,Δσ)(如下圖所示),而真正的極值點B可以表示為在點A處的泰勒展開。
令上面D(x)的一階導數為0,可以得到
- 對以上過程進行多次迭代(最多5次)得到最終候選點的精確位置.(偏移超過0.5時更新當前像素點,若沒有超過0.5,則當前像素加上偏移就是精確點)
4.邊緣和低對比度響應(移除某些特征點)
- 移除低對比度的點:D(X')小于0.03的點
- 移除邊緣點:利用hessian矩陣
5.確定關鍵點方向
- 利用特征點領域像素的梯度來確定其方向參數
- 對于已經檢測到的特征點,已知其尺度σ,可以確定該尺度下的高斯圖像
- 梯度方向
- 梯度幅值
- 利用圖像的梯度直方圖求取關鍵點局部結構的穩定方向
- 以關鍵點為原點,一定區域內的圖像像素點對關鍵點方向生成所做的貢獻。
- 構建梯度直方圖,梯度方向決定位于直方圖的哪個槽(共36個槽,每10度劃分一個),幅值加權更新槽內幅值的和。
6.構建關鍵點描述子(keypoints descriptor)
- 校正主方向,確保旋轉不變性
- 以特征點為中心,將坐標軸旋轉到特征點的主方向
- 生成描述子,形成128維的特征向量
- 基于梯度方向直方圖,每45度一個劃分,共劃分8個槽
- 在每個4*4的小方塊內繪制8個方向的梯度直方圖,計算幅值,即形成一個種子點
- 對每個關鍵點使用16個種子點來描述,每個種子點有8個方向的信息,即形成了128為特征向量
- 歸一化處理特征向量的長度,進一步去除光照的影響。
參考博文:
SIFT特征詳解 - Brook_icv - 博客園
SIFT解析(二)特征點位置確定 - DreamFaquir - 博客園
SIFT解析(三)生成特征描述子_honpey愛編程-CSDN博客
SIFT定位算法關鍵步驟的說明 - ☆Ronny丶 - 博客園
總結
以上是生活随笔為你收集整理的SIFT算法步骤梳理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cemtos7上mysql8两个实例_c
- 下一篇: honeywell扫码枪取消回车_霍尼韦