C#图像处理程序实现-Harris角点检测笔记整理

知识点汇总

先看一些论坛上汇总的关于角点检测的博文,讲的挺好的,自己补充知识点,链接点击这里

Harris实现过程

补充一点,后期图像识别中会用到很多多为数组,所以这里开始尝试使用多为数组编写程序(构建多维数组,使用指针的方式从多位数组中获取数据)
(1)图像灰度处理、梯度处理,同时构建多维数组
(2)从多位数组中获取相关数据
(3)对图片做高斯平滑处理
(4)使用Harris算法计算角点数量
(5)对获取的角点数量做非最大值抑制
(6)显示非极大值抑制后的角点
先看一下效果:
C#图像处理程序实现-Harris角点检测笔记整理
以下记录对程序实现过程:

主程序

图片说明如下:
C#图像处理程序实现-Harris角点检测笔记整理

(1)图像灰度处理、梯度处理,同时构建多维数组

C#图像处理程序实现-Harris角点检测笔记整理

(2)从多维数组中获取相关数据

C#图像处理程序实现-Harris角点检测笔记整理

(3)对图片做高斯平滑处理

不做过多讲解,就是卷积,不懂得看我之前的博文

(4)使用Harris算法计算角点数量

这个补充一点,看这里的推导,最后得出以下结论,拿来用就可以了,如果能看懂推导过程,更有利于理解:
C#图像处理程序实现-Harris角点检测笔记整理里面牵扯到矩阵的基本运算法则,还是,[不懂得看我之前的博文],最好自己推导,接下来,看一下代码实现过程:
C#图像处理程序实现-Harris角点检测笔记整理

(5)对获取的角点数量做非最大值抑制

获取的角点数量太多,需要对获取的角点做判断,方法为:对任意一像素点设定范围(界面中可手动设定),记录此范围最大值,舍弃最小值,实现过程如下:
C#图像处理程序实现-Harris角点检测笔记整理
至此,基本就实现了过程,剩下的就是将获取的角点在图片中显示出来,详细的看一下发出来的代码就可以了