欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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,利用公式:
OpenCV harris角点检测
计算结果:

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