32

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 MSER 的描述 3.关于 STackOverflow 的 MSER 问题

请帮忙!

4

4 回答 4

51

我假设您了解 MSER 特征检测的工作原理(如果不了解,请参阅Wikipedia和简短回顾)。

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

第一种类型,您通过对所有强度进行阈值处理(对于灰度图像,0255)。例如,对于一个阈值T = 100,所有具有强度的像素< 100都被分配black,或foreground,并且所有像素>= 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表示一个区域需要多少个不同的灰度级才能被认为是最大稳定的。对于较大的 delta,您将获得较少的区域

    注意:在介绍 MSER 区域的原始论文中,实际公式为:

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

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

  • 最小面积,最大面积

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

  • 最大变化

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

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

  • 最小多样性

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

    对于一个最大稳定的区域CC_T1(p),找到一个区域CC_T2(p)“父最大稳定区域”。这意味着 ,T2 > T1CC_T2(p)一个最大稳定的区域,并且不存在最大稳定的T2 > Tx > T1区域CC_Tx(p)。现在,比较父级的大小:

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

    如果这diversity小于maxDiversity删除CC_T1(p)该区域。对于更大的多样性,您将获得更少的区域

    (对于这个参数的确切公式,我不得不挖掘程序代码)

于 2013-09-04T12:57:31.073 回答
12
  • Delta delta,在代码中,它比较 (size_{i}-size_{i-delta})/size_{i-delta}. 默认 5。
    • MinArea修剪小于 minArea 的区域。默认 60。
    • MaxArea修剪大于 maxArea 的区域。默认 14400。
    • MaxVariation修剪该区域的大小与其子级相似。默认 0.25
    • MinDiversity追溯以切断多样性 < min_diversity 的 mser。默认 0.2。
    • MaxEvolution用于彩色图像,进化步骤。默认 200。
    • AreaThreshold导致重新初始化的区域阈值。默认 1.01。
    • MinMargin忽略过小的边距。默认为 0.003。
    • EdgeBlurSize边缘模糊的光圈大小。默认 5。
    • 掩码可选的输入掩码,标记我们应该检测特征的区域
于 2013-07-15T19:33:27.257 回答
5

由于这个链接,我找到了我的问题的答案。

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

很快就会回来解释 MaxVariation 和 MinDiversity。

于 2013-07-16T12:42:20.800 回答
3

Matlab 有一个几乎相同的函数 MSER。在我看来,在Mathworks中,您可以很好地解释这些参数的用途。

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

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

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

然而,正如佩内洛普所说,原始论文对于更深入地了解整个过程非常有用。此外,我还提供著名特征检测器之间非常有趣的比较的参考。

于 2016-09-25T16:25:19.550 回答