C#图像处理程序实现-Harris角点检测笔记整理
C#图像处理程序实现-Harris角点检测笔记整理
知识点汇总
先看一些论坛上汇总的关于角点检测的博文,讲的挺好的,自己补充知识点,链接点击这里
Harris实现过程
补充一点,后期图像识别中会用到很多多为数组,所以这里开始尝试使用多为数组编写程序(构建多维数组,使用指针的方式从多位数组中获取数据)
(1)图像灰度处理、梯度处理,同时构建多维数组
(2)从多位数组中获取相关数据
(3)对图片做高斯平滑处理
(4)使用Harris算法计算角点数量
(5)对获取的角点数量做非最大值抑制
(6)显示非极大值抑制后的角点
先看一下效果:
以下记录对程序实现过程:
主程序
图片说明如下:
(1)图像灰度处理、梯度处理,同时构建多维数组
(2)从多维数组中获取相关数据
(3)对图片做高斯平滑处理
不做过多讲解,就是卷积,不懂得看我之前的博文
(4)使用Harris算法计算角点数量
这个补充一点,看这里的推导,最后得出以下结论,拿来用就可以了,如果能看懂推导过程,更有利于理解:里面牵扯到矩阵的基本运算法则,还是,[不懂得看我之前的博文],最好自己推导,接下来,看一下代码实现过程:
(5)对获取的角点数量做非最大值抑制
获取的角点数量太多,需要对获取的角点做判断,方法为:对任意一像素点设定范围(界面中可手动设定),记录此范围最大值,舍弃最小值,实现过程如下:
至此,基本就实现了过程,剩下的就是将获取的角点在图片中显示出来,详细的看一下发出来的代码就可以了