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;  

}

 

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