SDL中文论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 5393|回复: 0
打印 上一主题 下一主题

[opencv] 理解cv::MSER

[复制链接]

149

主题

331

帖子

2445

积分

版主

Rank: 7Rank: 7Rank: 7

积分
2445
跳转到指定楼层
楼主
发表于 2017-10-20 16:07:36 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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对象
  1. cv::Ptr<cv::MSER> mesr1 = cv::MSER::create(2, 10, 5000, 0.5, 0.3);  
  2. //如果想要了解各参数的含义,首先需要通过以上链接了解算法原理。2表示灰度值的变化量,10和5000表示检测到的组块面积的范围,0.5为最大的变化率,0.3为稳定区域的最小变换量  
复制代码


二:MSER检测
  1. std::vector<std::vector<cv::Point> > regContours;  
  2. std::vector<cv::Rect> bboxes;  
  3. mesr1->detectRegions(gray, regContours, bboxes); //gray为处理的图像,为单通道灰度图
复制代码

如何直观理解detectRegions产生的输出结果regContours、bboxes1?以看以下两张图。
  
左侧是输入的灰度图,即detectRegions的输入参数gray。右侧是在灰度图的基础上叠加regContours中的两个单元(红色),和bboxes中的所有单元(白色)。以下是几个结论。
  • regContours长度一定等于bboxes长度。即regContours.size() == bboxes.size(),值就是该图中存在的最大稳定极值区域的个数。
  • regContours[j]表示第j个最大稳定极值区域中露出的像素点。bboxes[j]则是包围这些像素点的最小矩形。
  • 某个极值区域可能是另外个极值区域的子集。
  • 不同区域的bboxes[j]有可能是相同值。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|丽谷软件|libsdl.cn

GMT+8, 2025-5-2 03:46 , Processed in 0.064638 second(s), 22 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表