cvCornerHarris函數

功能:檢測圖像的哈里斯角點檢測,判斷出某一點是不是圖像的角點

 

函數形式:

void cvCornerHarris( const CvArr* image, CvArr* harris_responce, int block_size, int aperture_size=3, double k=0.04 );

 

參數列表

Image 輸入圖像

harris_responce存儲哈里斯檢測responces的圖像。與輸入圖像等大

block_size 鄰域大小(見關於cvCornerEigenValsAndVecs的討論)

aperture_size 擴展 Sobel 核的大小(見 cvSobel)。格式.當輸入圖像是浮點數格式時,該參數表示用來計算差分固定的浮點濾波器的個數

k 哈里斯檢測器的自由參數

 

角點

一階導數(即灰度的梯度)的局部最大所對應的像素點

兩條及兩條以上邊緣的交點

圖像中梯度值和梯度方向變化速率都很高的點

角點處的一階導數最大,二階導數爲0它指示了物體邊緣變化不連續的方向

 

步驟

每個像素點在鄰域內,計算22梯度的協方差矩陣經過如下計算

 

找出輸出圖中的局部最大值即找到了角點

 

程序應用示例

#include<opencv2/imgproc/imgproc.hpp>  

#include<opencv2/core/core.hpp>  

#include<opencv2/highgui/highgui.hpp>  

#include<iostream>  

using namespace cv;  

using namespace std;  

  

int main()  

{  

    Mat src,src_gray;  

    src= imread("1.jpg");  

    cvtColor(src, src_gray, CV_RGB2GRAY);  //灰度處理

    Mat cornerStrength;  

    cornerHarris(src_gray, cornerStrength, 3, 3, 0.01);  //檢測

    threshold(cornerStrength, cornerStrength, 0.0001, 255, THRESH_BINARY);  //二值化灰度圖

    imshow("shiyan", cornerStrength);  

    waitKey(0);  

    return 0;  

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章