SIFT算法流程介绍
SIFT算法
- 一,關(guān)鍵點定位
- DoG(Difference of Gaussian,高斯差分圖)的構(gòu)造
- 選取極值點(關(guān)鍵點)
- 二,關(guān)鍵點方向確定
- 三,描述子的生成
一,關(guān)鍵點定位
直觀上來說,關(guān)鍵點的定位是SIFT算法的核心部分,正是因為這一步的存在,才有了后面的操作。注意,這里只講算法的大致流程。
DoG(Difference of Gaussian,高斯差分圖)的構(gòu)造
對同一張圖片,選取不同的高斯核(也就是標準差不同),就產(chǎn)生了一個圖像簇,使用這些圖像簇互相做減法,就得到了DoG。再對原圖進行下采樣,重復(fù)上面的操作,就得到了多尺度DoG。多尺度的目的是為了模擬人眼遠近看到的圖片大小不同。通過這種方法達到了尺度不變性
就如上圖一樣,圖片來自這里。具體的細節(jié),也可以參考這篇文章,寫得真的很好。
選取極值點(關(guān)鍵點)
選取極值點是在DoG圖片中選取的,具體的做法就是和周圍的像素相比較,選擇一個最大的數(shù)來代替現(xiàn)在位置的數(shù)。
就比如上面的那張圖片一樣,中間的像素要和周圍的333-1 = 26個像素相比較。
二,關(guān)鍵點方向確定
關(guān)鍵點確定之后,以關(guān)鍵點坐標(在原圖上的坐標)為圓心,做一個圓,把圓內(nèi)所有的梯度方向疊加到8個方向上面,然后選取最大值,作為關(guān)鍵點主方向。通過這種方法,達到了方向不變性。
確定了主方向,后面的操作就會圍繞這個主方向來進行。
三,描述子的生成
將坐標軸和主方向的方向?qū)R。如下圖:
然后就是選擇一個大小合適的方框,把方框分為4×4個小格,每個小格都有8個主方向,同理,也是計算每個小格的梯度方向,然后加到8個方向里面(如果方向不同,就取方向最相近的一個方向。)然后最后得到的就是4×4×8大小的向量,這個向量就是SIFT描述子。
這里是參考網(wǎng)址。
(后面有時間了再寫如何匹配)
總結(jié)
以上是生活随笔為你收集整理的SIFT算法流程介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle12c多个pdb,Proxm
- 下一篇: 字符设备驱动高级篇5——静态映射表、动态