Sift算法-----part6
前言:這是本系列的最後一部分了,我們剩下的唯一工作就是採取每個關鍵點的指紋,這樣才能把他從其他部分區別出來。
做法
我們的目標是給每個關鍵點創建一個獨一無二的指紋,前提必須他很容易計算,另一方面我們希望他在作比較時能保持相對寬鬆,比較在不同的兩張圖片中,物體總是有或多或少的區別的。
爲了完成這個目標,我們爲每個關鍵點建立一個16*16的區域,這個區域被細分爲4*4的區域。如下圖:
然後在這個4*4的區域類,方向梯度和梯度大小被計算出來,這些方向被放入一個8位的直方圖中。
梯度方向在0-44°的被放在第一個格子內,45-89°的被放在下一個格子類,依次類推,格子的高度大小與梯度的大小成正比。
同時,格子的高度與改點與關鍵點的距離也有關係,越遠影響越小。這可以通過高斯權重公式完成。
對這16個像素,將其放入8格的直方圖中,對所有的16個區域進行計算,可以得到16*8=128個數字,我們用VECTOR來存儲着128個數字,這樣關鍵點就被這128個數字所標示。
總結:
希望大家能夠好好地利用SIFT算法。
任何疑問或者建議,請留下評論。