http://blog.csdn.net/lwzkiller/article/details/54633670
關於角點的應用在圖像處理上比較廣泛,如圖像匹配(FPM特徵點匹配)、相機標定等。網上也有很多博客對Harris角點檢測原理進行描述,但基本上只是描述了算法流程,而其中相關細節並未作出解釋,這裏我想對有些地方做出補充說明,正所謂知其然知其所以然,如有不對,還望指正。
關於角點的應用在圖像處理上比較廣泛,如圖像匹配(FPM特徵點匹配)、相機標定等。網上也有很多博客對Harris角點檢測原理進行描述,但基本上只是描述了算法流程,而其中相關細節並未作出解釋,這裏我想對有些地方做出補充說明,正所謂知其然知其所以然,如有不對,還望指正。
1. 何爲角點?
下面有兩幅不同視角的圖像,通過找出對應的角點進行匹配。
再看下圖所示,放大圖像的兩處角點區域:
我們可以直觀的概括下角點所具有的特徵:
>輪廓之間的交點;
>對於同一場景,即使視角發生變化,通常具備穩定性質的特徵;
>該點附近區域的像素點無論在梯度方向上還是其梯度幅值上有着較大變化;
2. 角點檢測算法基本思想是什麼?
算法基本思想是使用一個固定窗口在圖像上進行任意方向上的滑動,比較滑動前與滑動後兩種情況,窗口中的像素灰度變化程度,如果存在任意方向上的滑動,都有着較大灰度變化,那麼我們可以認爲該窗口中存在角點。
3.如何用數學方法去刻畫角點特徵?
當窗口發生[u,v]移動時,那麼滑動前與滑動後對應的窗口中的像素點灰度變化描述如下:
公式解釋:
>[u,v]是窗口的偏移量
>(x,y)是窗口內所對應的像素座標位置,窗口有多大,就有多少個位置
>w(x,y)是窗口函數,最簡單情形就是窗口內的所有像素所對應的w權重係數均爲1。但有時候,我們會將w(x,y)函數設定爲以窗口中心爲原點的二元正態分佈。如果窗口中心點是角點時,移動前與移動後,該點的灰度變化應該最爲劇烈,所以該點權重係數可以設定大些,表示窗口移動時,該點在灰度變化貢獻較大;而離窗口中心(角點)較遠的點,這些點的灰度變化幾近平緩,這些點的權重係數,可以設定小點,以示該點對灰度變化貢獻較小,那麼我們自然想到使用二元高斯函數來表示窗口函數,這裏僅是個人理解,大家可以參考下。
所以通常窗口函數有如下兩種形式:
根據上述表達式,當窗口處在平坦區域上滑動,可以想象的到,灰度不會發生變化,那麼E(u,v) = 0;如果窗口處在比紋理比較豐富的區域上滑動,那麼灰度變化會很大。算法最終思想就是計算灰度發生較大變化時所對應的位置,當然這個較大是指針任意方向上的滑動,並非單指某個方向。