1. 程式人生 > >Harris角點特徵及C實現

Harris角點特徵及C實現

1、Harris角點

Harris角點檢測是特徵點檢測的基礎,該檢測子對平移和旋轉魯棒。
Harris角點具有兩個非常重要的性質:
《1》、具有很大的梯度幅值;
《2》、在很小的近鄰內,梯度方向變化尖銳;
故可以通過視窗在小區域內滑動來確定角點位置。

直觀的角點理解:角點既是影象中物體輪廓的連線點,見下圖所示。當拍攝視角變化時這些特徵點能很好的保持穩定特性。
在這裡插入圖片描述

2、檢測原理及推導

在這裡插入圖片描述

在這裡插入圖片描述
(因為網上找原理很方便,所以就不打算把公式在部落格再寫一遍,直接由大神部落格截圖過來的)

程式設計時用x1,x2不方便,因此定義角點響應函式;
             R=det(M)−k(trace(M))^2 (一般的0.04 <= k <=0.06)


其中det(M)為矩陣M的行列式,trace(M)為矩陣M的跡。

3、演算法步驟

1、sobel運算元計算出XY方向梯度;
2、計算各個方向的梯度幅值(Ix*Ix, Ix*Iy)及XY方向的梯度乘(Ix*Iy);
3、用高斯濾波對步驟2得到的3張圖進行濾波;
4、計算區域性特徵結果矩陣M的特徵值和響應函式R=det(M)−k(trace(M))^2
5、對步驟4得到的響應圖進行非極大值抑制,同時設定閾值進一步篩選好的角點;

4、輸出

在這裡插入圖片描述
中間是非極大值抑制後的輸出(角點的3x3範圍內填充黑色–圖中黑點),右邊的是角點響應進行非極大值抑制之前輸出的二值圖。

5、demo

6、參考

https://blog.csdn.net/xunalove/article/details/78066020
https://download.csdn.net/download/u014600742/7171437
https://blog.csdn.net/linqianbi/article/details/78930239
https://blog.csdn.net/woxincd/article/details/60754658