Harris角點檢測演算法
Harris演算法是使用比較多的角點演算法之一,opencv中實現的角點檢測演算法就是Harris和它的改進。
Harris角點檢測的原理:
Harris 角點最初由Harris在A combined corner and edge detector一文中提出,該文實際上是對Moravec演算法思想的改進。Harris角點最直觀的解釋是,在兩個相互垂直的方向,都有較大變化的點。通俗一點描述該演算法就是:First
find a gray value changes the direction of maximum variation, and then calculate the gray value in the direction perpendicular to the direction of the value. If the two variation is greater than a given threshold, for the corner;如果只有一個大於閥值,則為邊緣;如果都不大於,則為內部平滑點。由於兩個互相垂直的最大變化方向可以出現在任何方向,所以
這一直觀認識的數學描述如下。
首先,定義自相關函式:
該相關函式和moravec中的一樣,但是Harris首先對Wu,v進行了替換,使用的是高斯視窗,另一方面對灰度值差進行了泰勒展開,然後進行推導。
注:該公式中的x,y與moravec中的意義不同。moravec演算法中表示的畫素的座標,而這裡表示的變化量,例如這裡(1,0)表示視窗右移一個單位後灰度值的變化,這樣E
( x, y ) 實際上刻畫的是影象偏移造成的視窗內畫素的平均變化。顯然,視窗固定之後E
( x, y ) 為x, y的函式。所以Harris的思想是對
A 可以理解為 x變化時,視窗內影象一階差分的平方和。同理,B可以理解為 y方向一階差分的平方和,C理解為 x方向一階差分與y方向一階差分的乘積。一介差分可以根據sobel運算元求的,Harris給的差分公式是卷積公式,
個人理解為用函式差代替差分,即