C# 基于OpenCv的视觉工作流-章22-Harris角点
本章目标:
一、图像特征;
二、角点数学原理;
三、角点检测;

一、图像特征;
角点属于图像特征的一种,在进行角点检测前,可先了解一下图像特征。

特征的唯一性、可追踪性、可比较性,在模板匹配中常用来进行目标定位。

二、角点数学原理
如下图,简易理解:
图1,卷积核在平坦区扫描,XY方向灰度梯度变化不大,不属特征;
图2,卷积核在边缘区扫描,仅一个方向灰度梯度变化不大,另一个方向变化大,属边缘;
图3,卷积核在拐角处扫描,两个方向灰度梯度变化都大,属角点;


详细数学推导,看文末链接

三、角点检测;
1、提取角点
//角点检测,每一个像素都可以计算出一个角点响应值
OpenCv角点检测可如下使用
Mat cornerDst = new Mat();
Cv2.CornerHarris(image, cornerDst, blockSize, ksize, k);
其中:参数1,为输入图像;
参数2,为输出图像;
参数3,为检测窗口大小;
参数4,为卷积核;
参数5,为权重系数;
2、取最大角点值
OpenCv角点最大值可如下使用
Cv2.MinMaxLoc(cornerDst, out double minVal, out double maxVal, out OpenCvSharp.Point minLoc, out OpenCvSharp.Point maxLoc, new Mat());
其中:参数1,为输入角点;
参数2,为输出最小值;
参数3,为输出最大值;
参数4,为输出最小值坐标;
参数5,为输出最大值坐标;
3、筛选角点
以自定义系数(一般为0.01)*最大角点值,作为筛选条件。
效果如下图

参考链接
"VisionTool 探迹"免费视觉工具
下载地址:https://pan.baidu.com/s/11tktKOSnepLNIEqNbvnv6w?pwd=qv5i
"VisionTool Halcon"付费视觉工具
下载地址:https://pan.baidu.com/s/1v832KTonDYS6oNnWG2iZtQ?
对应系列文章"C# 基于Halcon的视觉工作流",欢迎前往阅读。
上述内容需要一定的技术功底,本章至此已结束,欢迎阅读下章,谢谢!