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椭圆特征点及其轮廓函数
实验结果
代码下载
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/