1. 程式人生 > >SIFT(4)----關鍵點定位

SIFT(4)----關鍵點定位

關鍵點精確定位

    離散空間的極值點並不是真正的極值點,圖4.1顯示了二維函式離散空間得到的極值點與連續空間極值點的差別。利用已知的離散空間點插值得到的連續空間極值點的方法叫做子畫素插值(Sub-pixel Interpolation)。

  

    差值中心偏移量大於0.5時(即x或y或),意味著插值中心已經偏移到它的鄰近點上,所以必須改變當前關鍵點的位置。同時在新的位置上反覆插值直到收斂;也有可能超出所設定的迭代次數或者超出影象邊界的範圍,此時這樣的點應該刪除,在Lowe中進行了5次迭代。另外,過小的點易受噪聲的干擾而變得不穩定,所以將小於某個經驗值(Lowe論文中使用0.03,Rob Hess等人實現時使用0.04/S)的極值點刪除。同時,在此過程中獲取特徵點的精確位置(原位置加上擬合的偏移量)以及尺度σ(o,s)。 (其中o為所在的組,s為所在的層).

消除邊緣響應

    一個定義不好的高斯差分運算元的極值在橫跨邊緣的地方有較大的主曲率,而在垂直邊緣的方向有較小的主曲率。

    曲線的曲率(curvature)就是針對曲線上某個點的切線方向角對弧長的轉動率,通過微分來定義,表明曲線偏離直線的程度。數學上表明曲線在某一點的彎曲程度的數值。曲率越大,表示曲線的彎曲程度越大。曲率的倒數就是曲率半徑。  

       獲取特徵點處的Hessian矩陣:

\large H=\begin{bmatrix} D{_{xx}} & D{_{xy}} \\ D{_{yx}} & D{_{yy}} \end{bmatrix}\quad

其中:

\large \\D_{xx}=f(x+1,y)+f(x-1,y)-2*f(x,y)\\D_{yy}=f(x,y+1)+f(x,y-1)-2*f(x,y)\\ D_{xy}=[f(x+1,y)-f(x+1,y-1)]-[f(x,y)-f(x,y-1)]\\ D_{yx}=[f(x,y+1)-f(x-1,y+1)]-[f(x,y)-f(x-1,y)]

H是實對稱矩陣,所以\large D{_{xy}}=D{_{yx}},H的特徵值α和β代表x和y方向的梯度

\large \\Tr(H)=D{_{xx}}+D{_{yy}}\\Det(H)=D{_{xx}}*D{_{yy}}-(D{_{xy}})^{^{2}}

Tr(H)是矩陣的跡,即主對角元素之和,Det(H)是矩陣H的行列式。

\large \frac{Tr(H)^{2}}{Det(H)}=\frac{(\alpha +\beta )^{2}}{\alpha \beta }=\frac{(r\beta +\beta )^{2}}{r\beta^{2} }=\frac{(r+1)^{2}}{r}

用r表示兩個特徵值的比值,邊緣處特徵點的r值很大,即在某一個方向的梯度值越大,而在另一個方向的梯度值越小,所以為了剔除邊緣響應點,需要讓該比值小於一定的閾值。

有限差分求導

有限差分法的具體操作分為兩個部分:

1. 用差分代替微分方程中的微分,將連續變化的變數離散化,從而得到差分方程組的數學形式;

2. 求解差分方程組。

節點的一階向前差分

節點的一階向後差分

節點的一階中心差分