OpenCV harris角点检测
程序员文章站
2024-03-25 19:52:52
...
OpenCV harris角点检测
最近在做二维码检测的相关项目,在复杂环境下的二维码定位是一个难点,看了一些文章使用使用harris角点检测法进行粗定位,试一试在OpenCV中能否可行。
void cornerHarris(InputArray src,OutputArray dst,int blockSize,int ksize,double k,int borderType=BORDER_DEFAULT)
首先介绍这个算子的整体思想:
在图像上使用一块大小为blockSize的模板,并进行左右上下移动。我觉得可以简易理解为一种滤波方法,只不过计算方法不像均值滤波的那种简单求平均,而是使用协方差矩阵M,利用公式:
计算结果:
R≈0 | 此处为平面区域 |
---|---|
R<0 | 此处为边界 |
R>0 | 此处为角点 |
下面介绍一下这些参数的意思:
src | 输入图像,为灰度图像 |
---|---|
dst | 输出图像 |
blockSize | 模板的大小,常规大小为2 |
kSize | Sobel()算子的孔径大小,常规大小为3 |
k | 上面计算公式中的系数 ,常规大小为[0.04,0.06] |
borderType | 图像像素的边界模式,无特殊要求采取默认值就可以 |
注:harris方法对于尺度很敏感,建议实验过程中取不同值多多进行测试。
原文下载地址:http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.434.4816&rep=rep1&type=pdf