代码之家  ›  专栏  ›  技术社区  ›  mmcdole

什么算法可以用来识别图像是否“相同”或相似,无论大小如何?

  •  44
  • mmcdole  · 技术社区  · 16 年前

    TinEye

    TinEye

    8 回复  |  直到 16 年前
        1
  •  40
  •   Igor Krivokon    16 年前

    这些算法通常基于指纹。指纹是一种相当小的数据结构,类似于长哈希码。然而,指纹函数的目标与哈希函数的目标相反。一个好的哈希函数应该为非常相似(但不相等)的对象生成非常不同的代码。相反,指纹功能应该为相似的图像生成相同的指纹。

    另一种变体是使用多个指纹功能,尝试应用每个功能并组合结果。实际上,这类似于寻找相似的文本。图像相似性搜索使用“指纹包”而不是“单词包”,并找出一个包中有多少元素与另一个包的元素相同。如何提高搜索效率是另一个话题。

    现在,关于文章/论文。我找不到一篇好文章来概述不同的方法。我所知道的大多数公开文章都讨论了对特定方法的具体改进。我建议您查看以下内容:

    "Content Fingerprinting Using Wavelets"

    PERMUTATION GROUPING: INTELLIGENT HASH FUNCTION DESIGN FOR AUDIO & IMAGE RETRIEVAL .关于局部敏感哈希的信息。

    Bundling Features for Large Scale Partial-Duplicate Web Image Search

        2
  •  11
  •   RipperDoc    12 年前

    http://www.hackerfactor.com/blog/index.php?/archives/529-Kind-of-Like-That.html

    aHash (也称为平均哈希或均值哈希)。这种方法将图像压缩为灰度8x8图像,并在 基于像素值是否大于 图像的平均颜色。

    pH灰分 (也称为“感知哈希”)。该算法类似于aHash,但使用离散余弦变换(DCT),并基于 频率而不是颜色值。

    与aHash和pHash一样,dHash的实现非常简单,而且比它应有的准确度要高得多

        3
  •  7
  •   Vinko Vrsalovic    16 年前

    它可能是基于特征提取算法的改进,利用了尺度不变的特征。

    看一看

    或者,如果你真的感兴趣,你可以花70美元(或者至少看看谷歌预览版)

        4
  •  4
  •   Community Mohan Dere    8 年前
        5
  •  3
  •   Boojum    16 年前

    The Hough Transform

    slides to a neat talk 来自多伦多大学的一些人关于他们在 astrometry.net 他们开发了一种算法,用于将夜空的伸缩图像与恒星目录中的位置进行匹配,以识别图像中的特征。这是一个比tinyeye试图解决的问题更具体的问题,但我希望他们谈论的许多基本思想都适用于更普遍的问题。

        6
  •  0
  •   John Y    16 年前

    结账 this blog post (不是我的)对一种非常易于理解的算法进行了非常容易理解的描述,该算法似乎因其简单性而得到了很好的结果。它基本上将各个图片划分为一个非常粗糙的网格,按红:蓝和绿:蓝的比率对网格进行排序,并检查排序是否相同。这自然只适用于彩色图像。

        7
  •  -1
  •   Paul Sonier    16 年前

    他们很可能正在进行傅里叶变换来表征图像的复杂性,以及直方图来表征颜色分布,并结合区域分类算法来确保类似复杂和彩色的图像不会被错误地配对。不知道这是否是他们正在使用的,但看起来这会奏效。

        8
  •  -1
  •   mmcdole    16 年前