代码之家  ›  专栏  ›  技术社区  ›  Attila O.

将(类似的)图像与python/pil进行比较

  •  8
  • Attila O.  · 技术社区  · 15 年前

    我在计算 相似性 (阅读: 编辑距离 )使用Python2.6和PIL。

    我计划我们 e python-levenshtein 用于快速比较的库。

    主要问题:

    什么是比较图像的好策略?我的想法是:

    • 转换为RGB(透明->白色)(或可能转换为单色?)
    • 把小的放大到大的
    • 将每个通道(=唯一通道(如果转换为单色)转换为序列(项目值=像素的颜色值)
    • 计算两个序列之间的levenshtein距离

    当然,这不会处理镜像图像、裁剪图像等情况,但对于基本比较,这应该是有用的。

    是否有更好的策略记录在案?

    编辑: 亚伦H在速度问题上是对的。计算levelshtein对于大于几百×几百像素的图像大约需要永远的时间。但是,在我的示例中,缩小到100x100和200x200后的结果之间的差异小于1%,因此最好将最大图像大小设置为~100px左右…

    编辑: 谢谢前奏曲和赋格曲,这个问题是我要找的。

    顺便说一下,levenshtein距离看起来是可以优化的,但是它给了我一些非常糟糕的结果,也许是因为背景中有很多冗余元素。得看看其他算法。

    艾特: 均方根偏差和峰值信噪比似乎是另外两个不太难实现的选项,而且似乎不太昂贵。然而,我似乎需要某种上下文分析来识别形状等。

    无论如何,感谢所有的链接,也感谢你指出了向numpy/scipy的方向。

    2 回复  |  直到 9 年前
        1
  •  2
  •   Wolph    15 年前

    你可以看看 stsci 图书馆,是用来比较和分析图像的。它应该给你你想要的,但可能有点过头了。

    如果你想保持简单,你可以先减少颜色的数量和分辨率,然后计算距离。

        2
  •  5
  •   Udi    13 年前

    退房 imgSeek :

    imgseek是一个免费开源视觉相似性的集合 项目。查询(您正在寻找的图像)可以表示为 无论是作为用户绘制的草图,还是作为另一个图像 提供(或收藏中的图像)。搜索算法使 多分辨率小波分解在查询和数据库中的应用 图像。