OpenCV实践之MSER/MSCR极值区域检测算法

MSER/MSCR极值区域检测算法

  OpenCV中features2d.hpp中MSER类接口实现了MSER极值区域检测算法,MSER类根据输入参数判断是否为彩色or灰度图像进行不同的算法检测。若输入为灰度图像,那么采取MSER极值区域检测算法,若输入为彩色图像,则采用MSCR极值区域检测算法。关于MSER接口函数类如下:

  OpenCV中封装MSER算法提供两个功能,分别对灰度图像或者彩色图像进行极值区域检测。如果输入为灰度图像,则采用MSER算法(主要采用分水岭算法进行极值区域检测MSER+ MSER-)然后进行极(大、小)值区域合并。如果输入图像为彩色图像,那么采取MSCR算法进行极值区域检测:MSCR是通过通过采用凝聚聚类算法,将图像中的像素值按照某一种规定的相似度准则进行合并来完成区域间提取。具体细节可参考论文Maximally Stable Color Regions for Recognition and Matching 博客Opencv2.4.9源码分析——MSCR 进行查阅。

OpenCV之MSER/MSCR检测代码


  上述代码直接调用OpenCV库中的MSER类进行极值区域提取,代码比较简单在此不做分析。同时计算MSCR过程中需要将RGB图像转换至YCrCb颜色空间中。

实验结果


MSER检测结果(左) MSCR检测结果(右) 检测点数与时间对比

通过实验对比来看,MSCR算法耗时确实高于MSER算法,但是疑惑之处在于MSCR检测出极值区域数少于MSER算法。无论MSER还是MSCR检测都是采取OpenCV默认缺省函数参数设置,当然可以直接使用作者提供的MSCR源代码进行测试,目前我还没有使用。后续进行测试后会进行分析其中的原因。
如有错误,还请批评指正!

参考

http://users.isy.liu.se/cvl/perfo/software/
https://link.springer.com/chapter/10.1007%2F978-3-540-88688-4_14

猜你喜欢

转载自blog.csdn.net/Small_Munich/article/details/80206123
今日推荐