从品牌网站建设到网络营销策划,从策略到执行的一站式服务
这篇文章主要介绍C++ OpenCV特征提取之如何实现Harris角点检测,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
创新互联主营灵石网站建设的网络公司,主营网站建设方案,重庆APP开发,灵石h5微信小程序搭建,灵石网站营销推广欢迎灵石等地区企业咨询
简介
算法基本思想是使用一个固定窗口在图像上进行任意方向上的滑动,比较滑动前与滑动后两种情况,窗口中的像素灰度变化程度,如果存在任意方向上的滑动,都有着较大灰度变化,那么我们可以认为该窗口中存在角点。
关于角点的应用在图像处理上比较广泛,如图像匹配(FPM特征点匹配)、相机标定等。网上也有很多博客对Harris角点检测原理进行描述,但基本上只是描述了算法流程,而其中相关细节并未作出解释,我们简单补充说明一下
角点
下面有两幅不同视角的图像,通过找出对应的角点进行匹配。
再看下图所示,放大图像的两处角点区域:
我们可以直观的概括下角点所具有的特征:
>轮廓之间的交点;
>对于同一场景,即使视角发生变化,通常具备稳定性质的特征;
>该点附近区域的像素点无论在梯度方向上还是其梯度幅值上有着较大变化;
算法基本思想是使用一个固定窗口在图像上进行任意方向上的滑动,比较滑动前与滑动后两种情况,窗口中的像素灰度变化程度,如果存在任意方向上的滑动,都有着较大灰度变化,那么我们可以认为该窗口中存在角点
先上效果视频
相关API
cornerHarris(InputArray src, OutputArray dst, int blockSize, int apertureSize, double k, int borderType=BORDER_DEFAULT )
参数:
src– 输入单通道8位或浮点图像.
dst– 图像存储Harris检测器响应。它具有CVY32 FC1类型,大小与SRC相同
blockSize– 邻域大小
apertureSize– 索贝尔算子参数值
k– Harris检测器的阈值
boderType– 参数
实现步骤
将图像转为灰度图(cvtcolor)
创建一个CV_32FC1的同样大小图像(Mat::zeros(size,CV_32FC1))
进行Harris角点检测(cornerHarris)
归一化(normalize)
转化为绝对值(convertScaleAbs)
把获取到的的大于阈值的的角点画红色的圆显示出来
代码演示
我们新建一个项目opencv--connerharris,简单说一下,以后我们就不再说了,我们把Opencv3.4.1重新用Cmake编译了一遍,因为做特片简单需要加入Opencv-contrib的库,所以我们重新编译在newbuild里了,同时编译环境也重新配了一个,配置里面多少一些DLL和LIB别的还是按照配置属性(VS2017配置OpenCV通用属性),然后在源文件写入#include和main方法
在上面定义一个默认阈值和一个过程方法,因为我们用到了Trackbar
然输出图像上创建Trackbar
在过程前先转为灰度图
接下来就是重点,我们的Harris_Deal的方法
以上是“C++ OpenCV特征提取之如何实现Harris角点检测”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图