【问题标题】:Assembling a Haar-like filter for edge detection组装用于边缘检测的 Haar-like 滤波器
【发布时间】:2014-12-05 13:45:00
【问题描述】:

在位于link 的论文“B. Detecting vertical edge using Haar-like feature”中,它提到了使用 Haar-like 内核来获得结果图像 它以 Sobel 算子的方式强调输入图像中的垂直或水平边缘。我理解 Haar 特征的方式是它们输出白色矩形的像素总和与灰色/黑色矩形的像素总和之差。我无法确定生成的 Haar 内核的锚点(因为论文中提到的尺寸是 6 x 6 )。我目前的理解是,如果我采用论文中提到的垂直边缘蒙版,则生成的 6 x 6 蒙版将是
1、1、1、-1、-1、-1
1、1、1、-1、-1、-1
1、1、1、-1、-1、-1
1、1、1、-1、-1、-1
1、1、1、-1、-1、-1
1、1、1、-1、-1、-1

如果任何对此更了解的人可以帮助我解决这个问题(内核的外观以及如何执行卷积以获得边缘图 imap),我将非常感激。
谢谢。

【问题讨论】:

  • 我认为这里有些问题。您是在询问一般 haar 特征的“锚点”吗?或者你想知道链接的论文选择了哪一点?主要问题是 haar like features 是特征而不是内核。因此没有一般的锚点。由于没有附加代码,因此无法告诉链接的论文是如何做到的。最好的办法是直接询问作者。附带说明:类似 haar 的特征是二元的。这意味着如果差异大于某个阈值,则该特征为 1,否则为 0。
  • 我在问一个过滤器在链接论文中的使用情况会是什么样子。因为它是一个功能,所以我很难想象它会如何用作过滤器。

标签: image-processing computer-vision convolution edge-detection


【解决方案1】:

根据论文Vehicle Detection Method using Haar-like Feature on Real Time System 中提供的信息,我无法准确判断该小组是如何做到的。不过,我可以就如何实现这一点提出建议。

haar-like 特征和卷积核之间的主要区别在于,haar-like 特征在图像中具有“固定位置”,而内核应用于每个像素。

卷积核通常将像素的局部邻域映射到 0-255 之间的值。然而,类似 Haar 的特征定义了从整个图像到单个值的映射。即取每个像素的总和,偏差为 -1, 0, 1。这种偏差取决于像素在图像中的位置。

将卷积核转换为一组特征

也就是说,我们可以为单个像素 X 扩展卷积核,并使其看起来类似于类似 haar 的特征,方法是:我们通过计算所有像素的总和来映射整个图像对于 X 和 0 的邻域。如果我们对图像中的所有像素执行此操作,我们最终会得到许多宽度*高度的特征,将它们组合在一起形成一个大的特征向量。显然,它们拥有与卷积相同的信息量。然而,我们失去了轻松访问特征“来源”的能力,这意味着内核连接到哪个像素以计算此特征。此信息在该功能的定义中“编码”。

将一组特征转换为卷积核

那么我们可以逆转上述过程吗?对于一般功能,这是无法做到的。在上面给出的特征的情况下,我们可以将非零像素值作为卷积核。如果特征集选择得当,我们最终会为每个特征拥有相同的内核。那么是的,我们可以从功能集中获得内核。此外,我们可以通过平均特征图中每个非零像素的位置来找到特征的“原点”。

对于我们类似 haar 的功能,论文中很方便地给出了答案。正如您所建议的,卷积核的大小为 6 x 6,左半部分为 1,右半部分为 -1。 (对于另一个掩码,顶部为 1,底部为 -1。)现在这个 6 x 6 内核的中心将是 3.5 x 3.5,这不是像素值。

进一步定义为内核的映射不映射到 0-255。这可以通过缩放结果或应用阈值来解决。第二个会丢失一些信息,但可能会提供更稳定的结果。

现在的关键问题是选择了哪些特征来选择图 5 中看到的“类似 haar 的特征边缘”图像?换句话说,内核必须在哪些位置进行评估?最好的办法是将内核附加到图像中 4 个像素的每个角落。这样,检测到的边缘存在于像素之间,这在某种程度上是有意义的,因为边缘是由两个(或更多)像素之间的梯度定义的。 请注意,生成的图像将比原始图像少 1 行和 1 列。然而,结果值类似于边界,两个边界之间的一切都是“同一个对象”。

另一种方法是选择内核的 (3,3) 位置作为锚点,并将该点附加到图像中的每个像素,就像 eigenchris 建议的那样。您也可以选择 (1,1) 或任何其他点。但是,正如 eigenchris 所提到的,边缘会出现脱落。因此,要进行正确分类并选择原始图像的正确区域,您必须考虑内核的(真实)中心与您选择的中心之间的距离。

【讨论】:

    【解决方案2】:

    摘自本文(https://www.cs.cmu.edu/~efros/courses/LBMV07/Papers/viola-cvpr-01.pdf)中参考文献[7]的第2节:

    两个矩形特征的值是两个矩形区域内像素之和的差。

    所以你对内核的解释是正确的。我只能假设他们将锚点放置在 (3,3),尽管这会导致边缘略微向上并位于其“真实”位置的左侧。

    【讨论】:

    • 我也认为您的回答是正确的,但最终接受了 FirefoxMetzger 的回答,因为思路可能会更好地帮助其他人解决这个问题。他还提出了我忘记添加的标准化因素。最后,通过应用由内核大小标准化的过滤器,我获得了与论文中相似的视觉结果。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 2022-01-26
    • 2016-04-01
    • 2018-04-05
    • 1970-01-01
    • 1970-01-01
    • 2014-03-30
    相关资源
    最近更新 更多