【问题标题】:Computing the difference between images计算图像之间的差异
【发布时间】:2009-03-05 00:33:25
【问题描述】:

你们知道任何可用于计算图像之间差异的算法吗?

以这个网页为例http://tineye.com/你给它一个链接或上传一张图片,它会找到类似的图片。我怀疑它是否会将相关图像与所有图像进行比较(或者可能会)。

计算我的意思是Levenshtein_distanceHamming distance 用于字符串。

对于一个项目或任何事情,我绝对不需要正确答案,我只是找到了该网站并且非常好奇。我知道 digg 为他们的网站支付了类似的服务。

【问题讨论】:

  • 这是一个很酷的网站...你认为它可能会使用匹配文件名吗?可以帮助它的原因....
  • productOverview,真的很像stackoverflow的标志
  • @alex 我不确定我是不是只依赖一种方法,它可以是多种方法的组合。

标签: algorithm image


【解决方案1】:

最简单的测量方法是基于 RMS 误差的方法,例如:

这些可能与您的距离测量概念相吻合,但它们的结果只有在您有两张已经非常接近的图像时才真正有意义,例如,如果您正在查看特定压缩方案在多大程度上保留了原始图像.此外,两种比较的相同结果可能意味着很多不同的事情,具体取决于存在何种伪像(请查看我在下面引用的论文,其中一些 RMS/PSNR 的示例照片可能会产生误导)。

除此之外,还有一个专门研究图像相似性的研究领域。我不是专家,但这里有几点建议:

  • 许多工作已经进入使用dimensionality reduction(PCA、SVD、特征值分析等)的方法来挑选图像的主要成分并在不同图像之间进行比较。

    李>
  • 其他方法(尤其是医学成像)使用segmentation 技术来挑选图像的重要部分,然后根据发现的内容比较图像

  • 还有一些人试图设计相似性度量来解决 RMS 误差和 PSNR 的一些缺陷。有一篇关于spatial domain structural similarity (SSIM) 度量的非常酷的论文,它试图模仿人们对图像错误的看法,而不是直接的、数学的错误概念。同样的人在this paper on WSSIM 中使用wavelet analysis 做了一个改进的平移/旋转不变版本。

  • 看起来 TinEye 使用具有 lots 属性值的特征向量来进行比较。如果你在他们的网站上四处寻找,你最终会到达Ideé Labs 页面,而their FAQ 有一些(但不是太多)算法细节:

    问:视觉搜索是如何工作的?

    答:Idée 的视觉搜索技术使用复杂的算法来分析数百种图像属性,例如颜色、形状、纹理、亮度、复杂性、对象和区域。这些属性形成了一个紧凑的数字签名,描述了图像的外观每个图像,这些签名由我们的软件计算并由我们的软件编制索引。在执行视觉搜索时,我们的搜索引擎会快速比较这些签名,以返回视觉上相似的结果。

这绝不是详尽无遗的(这只是我在自己的研究过程中遇到的少数技术),但如果您在谷歌上搜索技术论文或查看最近有关图像处理的会议记录,您就会发现一定会为这些东西找到更多方法。这不是一个已解决的问题,但希望这些指针能让您了解所涉及的内容。

【讨论】:

    【解决方案2】:

    一种技术是使用color histograms。您可以使用机器学习算法根据您使用的表示来查找相似的图像。比如常用的k-means algorithm。在使用edge detection 后,我看到其他解决方案试图分析图像中的垂直线和水平线。也使用Texture analysis

    最近来自 picasa 网络的 paper 聚类图像。你也可以试试我正在开发的clustering algorithm

    【讨论】:

      【解决方案3】:

      考虑使用有损wavelet compression 并比较图像的最高相关性元素。

      【讨论】:

      • 我已经使用这种技术完成了一些工作并取得了不错的效果(虽然还不足以资助一个完整的开发项目)。
      【解决方案4】:

      TinEye 所做的是对图像或其部分进行散列处理(参见他们的FAQ)。它可能不是真正的哈希函数,因为他们想要相似(或几乎相同)图像的相似“哈希”。但他们需要做的就是比较该哈希值及其可能的子字符串,以了解图像是否相似/相同,或者是否包含在另一个中。

      【讨论】:

        【解决方案5】:

        这是一个image similarity 页面,但它用于多边形。您可以根据颜色和形状将图像转换为有限数量的多边形,然后在每个多边形上运行这些算法。

        【讨论】:

          【解决方案6】:

          这是我 4 年前在 java yikes 中编写的一些代码,它使用直方图进行图像比较。除了 buildHistograms() 之外,不要查看它的任何部分

          https://jpicsort.dev.java.net/source/browse/jpicsort/ImageComparator.java?rev=1.7&view=markup

          也许它有帮助,至少如果你使用 java 的话

          【讨论】:

            【解决方案7】:

            相关技术将使匹配跳出。如果它们是 JPEG,您可以比较每个 8x8 块的主要系数并获得不错的匹配。这不完全是相关性,但它基于余弦变换,所以它是第一个表亲。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2018-04-02
              • 2020-01-02
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多