OpenCV实践之HarrisAffine仿射匹配算法

HarrisAffine仿射匹配算法简述

  之前我的一篇博客HarrisAffine仿射不变匹配算法 已经详细介绍HarrisAffine匹配算法的详细过程,在那篇博客末尾提供了HessianAffine匹配算法,但是并没有提供HarrisAffine仿射匹配算法。原因其实主要在于HarrisAffine的源代码我自己测试时候鲁棒性比较差,另一方面算法迭代仿射不变点耗时较长。最近有研究OpenCV库中特征类中的仿射不变算法,发现在xfeatures2d.hpp中已经存在HarrisLaplaceFeatureDetector与AffineFeature2D类,里面已经封装好HarrisAffine匹配算法。经过分析研究简单调用实现HarrisAffine匹配算法,希望可以对研究仿射匹配算法的同志们有所帮助。如有错误,还请指出改正。

OpenCV之HarrisLaplaceFeatureDetector接口

  关于HarrisLaplaceFeatureDetector类继承Feature2D类,其中对外接口参数比较简单,构建尺度空间的塔数与层数,最大尺度点数限制,DoG阈值等如下图所示。

OpenCV之HarrisAffine匹配代码

主程序部分: 特征点检测部分采取HarrisLaplace检测,然后进行仿射迭代求取稳定仿射不变点,对局部区域进行SIFT描述符构建,匹配阶段首先采取FLANN进行粗匹配,随后采取(向量场)VFC进行精确点提纯。

辅助函数
将椭圆特征点Elliptic_KeyPoint数据结构转换成标准KeyPoint结构
绘制Elliptic_KeyPoint椭圆特征点及其轮廓函数

实验结果


HarrisAffine算法检测的仿射不变点检测与匹配结果 视差角度为45度 图片来自ASIFT网站

HarrisAffine算法检测的仿射不变点检测与匹配结果 视差角度为50度 图片来自VGG

代码下载

Github:   https://github.com/SmallMunich/HarrisAffineMatch_OpenCV

参考

http://www.robots.ox.ac.uk/~vgg/research/affine/
http://www.escience.cn/people/jiayima/index.html
https://opencv.org/

猜你喜欢

转载自blog.csdn.net/Small_Munich/article/details/80205223