【问题标题】:Computer Science Theory: Image Similarity计算机科学理论:图像相似性
【发布时间】:2011-01-25 23:27:36
【问题描述】:

所以我正在尝试比较不同的图像,并想知道是否有人可以为我指出正确的方向,以获得我可以为一组图像采取的一些基本指标。

假设我有两张图片,A 和 B,我非常想要尽可能多的关于每张图片的数据,以便以后可以通过编程方式比较它们。诸如“一般颜色”、“一般形状”之类的东西会很棒。

如果你能帮我找到具体的属性和算法来计算它们,那就太好了!

谢谢!

编辑:这里的最终目标是能够让计算机告诉我图片有多“相似”。如果两张图片相同,但在一张中有人模糊了一张脸;他们应该注册为非常相似。如果两张图片完全不同,电脑应该能分辨出来。

【问题讨论】:

  • 它们是否必须完全相同,或者您想计算它们之间的“距离”? (注意Metric表示距离,有两个参数,general color是限定符,有一个参数)。
  • 做好准备,无论您选择使用何种算法,结果都会令人失望。人脑在这项任务上的效率比目前任何计算机都高得多,因此您不可避免地会发现很多误报和误报。

标签: algorithm image-processing theory


【解决方案1】:

您所说的内容非常笼统且不具体。

图像信息形式化为Entropy

您似乎正在寻找的基本上是特征提取,然后比较这些特征。可以提取大量特征,但根据图片的差异,其中很多特征可能无关紧要。

有空间域和图像的frequency domain descriptors,每个都可以在这里有用。我可能可以命名超过 100 个描述符,但在您的情况下,只有一个就足够了,或者没有一个可能有用。

预处理也很重要,也许您可​​以将图像转为灰度,然后进行比较。

这个领域非常多样化,所以你需要更具体一点。

(更新)

您正在寻找的主题是数百甚至数千篇科学文章。但好吧,也许一种简单的方法可以奏效。

所以假设这里的问题是不识别对象并且不涉及变换、平移、缩放或旋转,我们只处理两个图像相同,但可以添加更多噪音:

1) 图像域(空间域):将像素一一进行比较,并将差异的平方相加。通过宽度*高度规范化这个值 - 只需除以像素数。这可能是一种有用的相似性度量。

2) 频域:将图像转换为频域图像(在 OpenCV 等图像处理工具中使用 FTT),频域图像也是 2D。执行与上面相同的平方差异,但也许您想限制频率。然后按像素数归一化。这在噪音和平移以及小幅旋转方面表现更好,但在规模上则不然。

【讨论】:

  • 感谢 Aliostad;我很笼统,因为老实说,我现在不太确定要寻找什么。我已经编辑了问题以更好地解释我的最终目标
  • @djs22:这取决于您希望能够捕获哪些修改。转移?庄稼?镜子?规模?有损再压缩?伽玛校正?亮度变化?
  • @ruslik:我知道这很大胆,但答案就是一切。最重要的是看看是否有人修改了实际的图像内容,即颜色、裁剪等。压缩/镜像不会改变内容,因此与我无关。
  • @djs22:那么你需要强大的人工智能算法。也许您正在寻找分形压缩:)
【解决方案2】:

SURF 是比较图像的一个很好的候选算法

Wikipedia Article

一个实际的例子(在Mathematica中),识别两个月亮图像(旋转、彩色和模糊)中的对应点:

【讨论】:

    【解决方案3】:

    您还可以计算这两个图像的直方图箱之间的差异总和。但这也不是灵丹妙药……

    【讨论】:

    • 这需要两个图像。问题在于可以从图像中计算出哪些信息,然后用于比较。
    • @ruslik 很难预先计算图像的直方图并将它们存储为 256 字节数组吗? (OP 没有说明图像签名存储要求)
    • 此外,它不会捕捉裁剪、有损再压缩或色度/亮度变化。
    • @ruslik,我觉得很自然,目前不存在任何可以捕获所有可能的图像转换的签名方法。
    【解决方案4】:

    我建议看看OpenCV。该软件包提供了上述大部分(如果不是全部)技术。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-20
      • 2017-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-29
      相关资源
      最近更新 更多