OpenCV之Harris角點檢測

2021-10-18 07:16:42 字數 1277 閱讀 4430

在影象處理領域,角點檢測演算法主要有以下幾類:

基於灰度影象的角點檢測

基於二值影象的角點檢測

基於輪廓曲線的角點檢測

而基於灰度影象的角點檢測又可分為基於梯度、基於模板、基於梯度和基於模板組合三類方法。其中基於模板的方法主要考慮畫素鄰域點的灰度變化,即影象亮度的變化,將與相鄰點亮度對比足夠大的點定義為角點。

常見的基於模板的角點檢測演算法有kitchen-rosenfeld角點檢測演算法,harris角點檢測演算法,klt角點檢測演算法以及susan角點檢測演算法。

harris角點檢測是一種直接基於灰度影象的角點提取演算法,穩定性高,尤其對l型角點檢測精度高。但是由於採用了高斯濾波,運算速度相對較慢,角點資訊有丟失和位置偏移的現象,而且角點提取有聚簇現象。

cornerharris函式對每乙個畫素(x, y)在blocksize * blocksize鄰域內,計算2*2梯度的協方差矩陣m(x, y),接著按照下面公式計算:

就可以找到輸出影象中的區域性最大值,即找到了角點。

函式原型:

void cornerharris(inputarray src, outputarray dst, int blocksize, int ksize, double k, intbordertype=border_default)
**示例:

}輸入影象:

輸出:

opencv之Harris角點檢測

opencv4.1.2 contrib win10 vs2019 角點是一模擬較特殊的點,構成角點的條件兩條或者多條線的交叉,線可以理解為邊緣特徵很強的畫素點的集合,在opencv中大部分的影象處理基於掩膜移動來實現,在矩形框內如果在沒有角點的區域內也就是所謂的平原地帶,無論向哪個方向移動,矩形框內...

harris 檢測角點

主要是使用函式 cv exports w void goodfeaturestotrack inputarray image,輸入影象 outputarray corners,角點數 int maxcorners,最大角點數 double qualitylevel,最大最小特徵值乘法因子 doubl...

opencv實現Harris角點檢測

include include include include include includeusing namespace std using namespace cv harris角點檢測 blocksize是鄰域大小,對每個畫素,考慮blocksize blocksize大小的鄰域,計算鄰域上...