【问题标题】:Detect the location of an image within a larger image在更大的图像中检测图像的位置
【发布时间】:2010-02-15 14:01:04
【问题描述】:

如何在较大的图像中检测图像的位置?我有一个未修改的图像副本。然后将该图像更改为任意分辨率并随机放置在任意大小的更大图像中。不对生成的图像进行其他转换。 Python 代码将是理想的,它可能需要libgd。如果您知道解决此问题的好方法,您将获得 +1。

【问题讨论】:

标签: python image image-processing gdlib


【解决方案1】:

有一个快速而肮脏的解决方案,它只是在目标图像上滑动一个窗口并计算每个位置的某种相似性度量,然后选择具有最高相似性的位置。然后将相似度与阈值进行比较,如果分数高于阈值,则得出图像在那里并且就是位置的结论;如果分数低于阈值,则图像不存在。

作为一种相似性度量,您可以使用归一化相关性或平方差之和(也称为 L2 范数)。正如人们所提到的,这不会处理规模变化。因此,您还可以多次重新缩放原始图像,并对每个缩放版本重复上述过程。根据输入图像的大小和可能的比例范围,这可能已经足够好,而且很容易实现。

一个合适的解决方案是使用仿射不变量。尝试查找“宽基线立体匹配”,人们在这种情况下查看了这个问题。使用的方法一般是这样的:

原图预处理

  • 运行“兴趣点检测器”。这将在图像中找到一些易于定位的点,例如角落。有很多检测器,一种称为“harris-affine”的检测器运行良好并且非常流行(因此可能存在实现)。另一种选择是使用高斯差 (DoG) 检测器,它是为 SIFT 开发的,也很有效。
  • 在每个兴趣点,提取一个小的子图像(例如 30x30 像素)
  • 对于每个子图像,计算一个“描述符”,即该窗口中图像内容的某种表示。同样,存在许多描述符。要看的是描述符对图像内容的描述程度(您希望两个描述符仅在它们相似时才匹配)以及它的不变性(即使在缩放之后您也希望它是相同的)。在您的情况下,我建议使用 SIFT。它不像其他一些描述符那样不变,但可以很好地应对规模,在你的情况下规模是唯一改变的东西。

在此阶段结束时,您将拥有一组描述符。

测试(使用新的测试图像)。

  • 首先,您运行与步骤 1 中相同的兴趣点检测器并获得一组兴趣点。如上所述,您为每个点计算相同的描述符。现在您也有了一组目标图像的描述符。
  • 接下来,寻找匹配项。理想情况下,对于原始图像中的每个描述符,目标图像中都会有一些非常相似的描述符。 (由于目标图像更大,还会有“剩余”描述符,即与原始图像中的任何内容都不对应的点。)因此,如果足够多的原始描述符与足够的相似度匹配,那么您就知道目标是那里。此外,由于描述符是特定于位置的,因此您还将知道原始图像在目标图像中的位置。

【讨论】:

    【解决方案2】:

    你可能想要cross-correlation。 (自相关是将信号与自身相关;互相关是将两个不同的信号相关。)

    与简单地检查精确匹配相比,相关性对您的作用是,它会告诉您最佳匹配在哪里,以及它们有多好。另一面是,对于二维图片,它类似于 O(N^3),并且不是那么简单的算法。但是一旦你开始工作,它就是神奇的。

    编辑:啊,您指定了任意调整大小。这将破坏任何基于相关性的算法。抱歉,您现在超出了我的经验范围,所以不会让我删除此答案。

    【讨论】:

    • 他说“任意”。在多种分辨率下尝试此操作(因为比例因子很少是整数)将需要大量时间:您必须针对每个整数图像宽度和高度进行此操作。我已经尝试过(一维)与类似噪声的波形(具有强自相关)的互相关,并将多普勒频移应用于输入信号。相关性消失;通过几个样本拉伸或收缩信号,相关峰值落入噪声中。标准方法是制作一组相关器。其中 1024 个并不罕见。
    【解决方案3】:

    【讨论】:

    • FTOP:“然后将此图像更改为任意分辨率” ...这会破坏相关算法。相关性可以处理幅度缩放,但不能处理轴缩放。
    【解决方案4】:

    看看Scale-Invariant Feature Transforms;有许多不同的风格可能或多或少适合您碰巧使用的图像类型。

    【讨论】:

      猜你喜欢
      • 2011-02-15
      • 2016-11-23
      • 1970-01-01
      • 2016-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-21
      • 2015-06-24
      相关资源
      最近更新 更多