OpenCV实践之MSER仿射匹配算法

MSER相关简述

  极值稳定检测MSER算法是目前针对图像变形最为稳定的特征检测算法,主要采取分水岭算法来进行极值区域提取,具体细节就不多说了。大家可以参考MSER作者论文,或者我的博客链接MSER仿射不变特征匹配算法。当然也出现针对MSER算法的改进版本,分为两个方面:其一是对MSER算法进行加速,即计算效率提升;其二是针对彩色图像提出的MSCR算法,论文中述说对于彩色图像提取极值区域要优于MSER算法。但是,近两日我在OpenCV开放的MSER对外接口进行MSER/MSCR进行对比,发现其实好像MSCR算法并没有优于MSER算法,后续将会仔细对比二者性能。好了,这篇博文主要写OpenCV版库简单调用MSER算法进行灰度仿射图像对匹配应用,代码如下:

OpenCV版MSER实践代码

 函数代码如下
OpenCV实践之MSER仿射匹配算法_第1张图片
两个辅助函数
OpenCV实践之MSER仿射匹配算法_第2张图片 draw_ellipse()绘制特征点椭圆信息函数
OpenCV实践之MSER仿射匹配算法_第3张图片ConvertEllipseKeyPointToKeyPoint()函数将Elliptic_KeyPoint数据结构转换为KeyPoint

下面进行简单的实验,按照标准的MSER + SIFT算法与MSER + DAISY算法进行简单的实验。DAISY是Engin Tola于2010年针对稠密特征所提出的快速计算局部特征描述子,主要思想与SIFT类似都采取分块梯度直方图,只是DAISY在分块策略上进行改进,利用不同大小的高斯核进行卷积使得直方图分块汇聚,具体可以参考论文DAISY论文。

实验对比

OpenCV实践之MSER仿射匹配算法_第4张图片

MSER + SIFT + FLANN + VFC仿射特征匹配结果
OpenCV实践之MSER仿射匹配算法_第5张图片
MSER + DAISY + FLANN + VFC仿射特征匹配结果

  特征匹配算法种类繁多,构建尺度空间的策略、特征点检测方式、描述符构建方式、匹配策略、匹配点对提纯策略等等,这些都需要根据具体的应用来进行组合以获得最适应的效果。要想获得所有方面最优的策略似乎不太可能,或者说几乎没有。因此,这才符合正常的自然发展现象:晕……这是说到哲学去了,好吧!收!!!
最后,还是那句:如果错误,还请批评指正!!!

代码下载

Github :   https://github.com/SmallMunich/MSERAffineMatch
当然,需要精匹配提纯特征点的vfc.h/vfc.cpp文件下载在这里:
原作者官网下载代码:

    http://www.escience.cn/people/jiayima/cxdm.html
或者我的Github上面:
    https://github.com/SmallMunich/HarrisAffineMatch_OpenCV

参考

http://cmp.felk.cvut.cz/~matas/papers/matas-bmvc02.pdf
http://pdfs.semanticscholar.org/40df/0cc1049bba31904ae69eaabbb5231daa8857.pdf

你可能感兴趣的:(OpenCV实践)