SDL中文论坛
标题:
理解cv::MSER
[打印本页]
作者:
ancientcc
时间:
2017-10-20 16:07
标题:
理解cv::MSER
本帖最后由 ancientcc 于 2017-10-22 19:18 编辑
最大稳定极值区域(Maximally Stable Extremal Regions)是一种类似分水岭图像的分割与匹配算法。它具有SIFT SURF及 ORB等特征不具备的仿射不变性,近年来广泛应用于图像分割与匹配领域。
详细算法原理介绍可参见链接:
http://blog.csdn.net/zhaocj/article/details/40742191
使用cv::MSER就两个步骤,一是创建创建MSER对象,二是MSER检测。
一:创建MSER对象
cv::Ptr<cv::MSER> mesr1 = cv::MSER::create(2, 10, 5000, 0.5, 0.3);
//如果想要了解各参数的含义,首先需要通过以上链接了解算法原理。2表示灰度值的变化量,10和5000表示检测到的组块面积的范围,0.5为最大的变化率,0.3为稳定区域的最小变换量
复制代码
二:MSER检测
std::vector<std::vector<cv::Point> > regContours;
std::vector<cv::Rect> bboxes;
mesr1->detectRegions(gray, regContours, bboxes); //gray为处理的图像,为单通道灰度图
复制代码
如何直观理解detectRegions产生的输出结果regContours、bboxes1?以看以下两张图。
(, 下载次数: 2082)
上传
点击文件名下载附件
(, 下载次数: 2073)
上传
点击文件名下载附件
左侧是输入的灰度图,即detectRegions的输入参数gray。右侧是在灰度图的基础上叠加regContours中的两个单元(红色),和bboxes中的所有单元(白色)。以下是几个结论。
regContours长度一定等于bboxes长度。即regContours.size() == bboxes.size(),值就是该图中存在的最大稳定极值区域的个数。
regContours[j]表示第j个最大稳定极值区域中露出的像素点。bboxes[j]则是包围这些像素点的最小矩形。
某个极值区域可能是另外个极值区域的子集。
不同区域的bboxes[j]有可能是相同值。
欢迎光临 SDL中文论坛 (http://www.libsdl.cn/bbs/)
Powered by Discuz! X3.3