2013-07-15 34 views
27

OpenCV的参考手册(2.4.x的)指出,该初始化MSER构造需要以下参数:在OpenCV 2.4.x中给出用于初始化MSER的参数的确切含义?

增量,min_area,max_area,max_variation,min_diversity,max_evolution,area_threshold, min_margin,edge_blur_size。

我正在处理灰度图像。参数“delta”,“max_variation”和“min_diversity”有什么用处? MSER的哪些属性可以帮助控制这些参数?

我已经尝试了很多找到确切的答案,这一点,我只能找到下面几页的少量信息(其中没有一个是特别有用的,告诉我究竟是什么这3个参数控制): 1 。OpenCV wiki 2. Wikipedia description of MSER 3. MSER questions on STackOverflow

请帮帮忙!

回答

39

我打算假设您知道MSER特征检测如何工作的基础知识(如果没有,请参阅Wikipedia和简短摘要)。

您有两种类型的MSER区域,正面和负面。

第一种类型,通过对所有强度进行阈值处理(对于灰度图像,0255)。例如。对于阈值T = 100,具有强度<= 100的所有像素被分配为black或​​,并且所有像素> 100强度是whitebackground

现在,假设您正在观察特定像素p。在某个阈值,我们称之为T1,它将开始属于前景并保持这种状态,直到T=255。在T1一个像素将属于组件CC_T1(p)5灰色级别后,它将属于组件CC_(T1+5)(p)

对于所有阈值获得的所有这些连接组件都是MSER的潜在候选者。 (如果您将阈值设置为black/foregroundwhite/background,则可获得其他类型的组件)。

参数帮助决定哪些潜在候选人确实是最大限度地稳定:

  • 三角洲

    对于每一个区域,变化测量:

    V_T = (size(CC_T(p))-size(CC_{T-delta}(p)))/size(CC_{T-delta}(p))

    为每个可能的阈值Ti。如果像素的这种变化是变化的局部最小值,即V_T > V_{T-1}V_T > V_{T+1},则区域是最大稳定的

    参数delta指示区域需要稳定以被认为是最大稳定的多少个不同的灰度级。对于较大的三角洲,您将获得较少的区域

    注:original paper引入MSER区域,实际的计算公式为:

    V_T = (size(CC_{T+delta}(p))-size(CC_{T-delta}(p)))/size(CC_T(p))

    在OpenCV实现使用一个稍微不同的公式,以加快特征提取。

  • minAreamaxArea

    如果区域是最大稳定,它仍然可以,如果它具有小于minArea像素或多于maxArea像素拒绝。

  • maxVariation

    回到从点1的变化(相同的功能,为增量):如果一个区域是最大稳定,它仍然可以,如果该区域的变化是大于maxVariation拒绝。即使该区域“相对”稳定(比邻居区域更稳定),它也可能不是“绝对”稳定的。对于较小maxVariation,你会得到欠发达地区

  • minDiversity

    此参数存在修剪过于相似的区域(例如,对于只有几个像素不同的)。

    对于区域CC_T1(p)最大限度地稳定,找到一个区域CC_T2(p)这是“父最大限度地稳定区域”。这意味着,T2 > T1,CC_T2(p)是最大稳定区域,并且没有T2 > Tx > T1,使得CC_Tx(p)是最大稳定的。现在,比较父多少更大的是:

    diversity = (size(CC_T2(p)) - size(CC_T1(p)))/size(CC_T1(p))

    如果diversitymaxDiversity删除区域CC_T1(p)。对于较大的多样性,您将获得较少的区域

    (对于该参数的精确公式我不得不通过该程序代码以DIG)

+0

完美答案!非常感谢。 – Flayn

+0

OpenCV返回的区域大于maxArea ... – Flayn

+0

@Flayn我知道这是对您的评论的一个非常迟的回应,但OpenCV一般在MSER实现方面存在一些问题(或者至少在之前有几个版本,而且稳步通过几个版本)。它返回的区域甚至不总是按定义最大限度地稳定... – penelope

10
  • 德尔塔增量,在代码,它比较 (size_{i}-size_{i-delta})/size_{i-delta}。默认值为5.
    • MinArea修剪小于minArea的区域。默认60.
    • MaxArea修剪大于maxArea的区域。默认为14400.
    • MaxVariation修剪该地区的尺寸与其子女相似。默认0.25
    • MinDiversity追溯回切断mser与多样性< min_diversity。 默认为0.2。
    • MaxEvolution彩色图像的演变步骤。默认为200.
    • AreaThreshold引起重新初始化的区域阈值。默认1.01。
    • MinMargin忽略太小的余量。默认0.003。
    • EdgeBlurSize边缘模糊的光圈大小。默认5.
    • 面膜可选的输入掩码,标志着区域,我们应该检测 功能
+0

谢谢!但是delta的定义中的(size_ {i} -size_ {i-delta})/ size_ {i-delta}是什么意思? size_ {i}代表什么? 这对我来说很神秘。请帮忙! – Ekta

+0

感谢您写下默认值。在任何地方都很难找到它。 – Libor

4

我找到了答案,我的问题感谢this链接。

MSER通过将强度阈值T从0改变到255来获得。增量决定了该变化的最小计数。所以,尺寸{i}意味着在灰度图像中具有强度值i的区域的大小或面积。

不久将返回MaxVariation和MinDiversity的解释。

+0

链接已经死亡 – Mehdi

1

Matlab具有几乎相同的功能MSER。在Mathworks中,你可以找到很好的解释,在我看来,这些参数是什么。

我会复制你问(没有选项,在Matlab,对于彩色图像)2个输入定义:

  • _delta。强度阈值水平之间的步长,指定为由'ThresholdDelta'和范围(0,100)内的数值组成的逗号分隔对,该值表示为在测试时选择极值区域时使用的输入数据类型范围的百分比为了它们的稳定性,减小这个值返回更多的区域,典型值在0.8到4之间。

  • _max_variation。在不同强度阈值处的极值区域之间的最大面积变化,指定为由“MaxAreaVariation”和一个正标量值组成的逗号分隔对。增加此值会返回更多区域,但它们可能不太稳定。稳定区域的大小在不同的强度阈值上非常相似。典型值范围从0.1到1.0。

然而,随着penelope说,原来的纸全过程的更深刻的理解是非常有用的。此外,我给this参考了众所周知的特征检测器之间非常有趣的比较。