在OpenCV 2.4.x中初始化MSER的参数的确切含义?

时间:2013-07-15 05:44:24

标签: opencv mser

OpenCV参考手册(2.4.x)声明初始化MSER的构造函数需要以下参数:

delta,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

请帮忙!

4 个答案:

答案 0 :(得分:46)

我将假设您了解MSER功能检测的基本工作原理(如果没有,Wikipedia,以及后面的简短回顾)。

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

第一种类型,您可以通过所有强度的阈值处理(对于灰度图像,0255)。例如。对于阈值T = 100,所有强度为< 100的像素均已分配blackforeground,所有像素>= 100强度均为white或{ {1}}。

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

为所有阈值获得的所有这些连通组件都是MSER的潜在候选者。 (如果您反转我的CC_(T1+5)(p)black/foreground分配以进行阈值处理,则会获得其他类型的组件。

参数有助于确定哪些潜在候选人确实最稳定:

  • <强>增量

    对于每个地区,都会测量变异

    white/background

    每个可能的阈值V_T = (size(CC_T(p))-size(CC_{T-delta}(p)))/size(CC_{T-delta}(p))

    。如果像素的此变体是变体的局部最小值,即TiV_T < V_{T-1},则区域最稳定

    参数 delta 表示区域需要稳定多少个不同的灰度级才能被认为是最稳定的。对于较大的delta ,您将获得更少的区域

    注意: 在引入MSER区域的original paper中,实际公式为:

    V_T < V_{T+1}

    OpenCV实现使用稍微不同的公式来加速特征提取。

  • minArea maxArea

    如果一个区域最稳定,如果区域小于 minArea 像素或大于 maxArea 像素,它仍可被拒绝。

  • <强> maxVariation

    回到第1点的变化(与delta相同的函数):如果某个区域最稳定,如果区域变化大于 maxVariation ,它仍可被拒绝。

    即,即使该区域“相对”稳定(比邻近区域更稳定),也可能不够“绝对”稳定。对于较小的maxVariation ,您将获得更少的区域

  • <强> minDiversity

    此参数用于修剪太相似的区域(例如,仅相差几个像素)。

    对于 最大稳定的区域V_T = (size(CC_{T+delta}(p))-size(CC_{T-delta}(p)))/size(CC_T(p)),找到一个区域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)) 小于小于 maxDiversity 删除区域 diversity 。对于更大的多样性,您将获得更少的区域

    (对于这个参数的确切公式,我不得不深入研究程序代码)

答案 1 :(得分:12)

  • Delta delta,在代码中进行比较     (size_{i}-size_{i-delta})/size_{i-delta}。默认5。
    • MinArea 修剪小于minArea的区域。默认60。
    • MaxArea 修剪大于maxArea的区域。默认14400。
    • MaxVariation 修剪该区域与其子项相似的大小。默认0.25
    • MinDiversity 追溯到切断mser的多样性&lt; min_diversity。 默认为0.2。
    • MaxEvolution 用于彩色图像,演变步骤。默认200。
    • AreaThreshold 导致重新初始化的区域阈值。默认1.01。
    • MinMargin 忽略太小的保证金。默认为0.003。
    • EdgeBlurSize 边缘模糊的光圈大小。默认5.
    • 掩码可选的输入掩码,用于标记应检测的区域  特征

答案 2 :(得分:5)

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

通过将强度阈值T从0变为255来获得MSER.Delta决定该变化的最小计数。因此,尺寸{i}表示灰度图像中具有强度值i的区域的尺寸或面积。

很快就会回复MaxVariation和MinDiversity。

答案 3 :(得分:2)

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

我将复制您要求的2个输入定义(在Matlab中没有用于彩色图像的选项):

  • <强> _delta 即可。强度阈值水平之间的步长,指定为由'ThresholdDelta'组成的逗号分隔对和范围(0,100)中的数值。该值表示为在测试时选择极值区域时使用的输入数据类型范围的百分比稳定性。降低此值可返回更多区域。典型值范围为0.8到4.

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

然而,正如penelope所说,原始论文对于更全面地了解整个过程非常有用。另外,我在this参考了众所周知的特征检测器之间非常有趣的比较。