我在计算
相似性
(阅读:
编辑距离
)使用Python2.6和PIL。
我计划我们
e
python-levenshtein
用于快速比较的库。
主要问题:
什么是比较图像的好策略?我的想法是:
-
转换为RGB(透明->白色)(或可能转换为单色?)
-
把小的放大到大的
-
将每个通道(=唯一通道(如果转换为单色)转换为序列(项目值=像素的颜色值)
-
计算两个序列之间的levenshtein距离
当然,这不会处理镜像图像、裁剪图像等情况,但对于基本比较,这应该是有用的。
是否有更好的策略记录在案?
编辑:
亚伦H在速度问题上是对的。计算levelshtein对于大于几百×几百像素的图像大约需要永远的时间。但是,在我的示例中,缩小到100x100和200x200后的结果之间的差异小于1%,因此最好将最大图像大小设置为~100px左右…
编辑:
谢谢前奏曲和赋格曲,这个问题是我要找的。
顺便说一下,levenshtein距离看起来是可以优化的,但是它给了我一些非常糟糕的结果,也许是因为背景中有很多冗余元素。得看看其他算法。
艾特:
均方根偏差和峰值信噪比似乎是另外两个不太难实现的选项,而且似乎不太昂贵。然而,我似乎需要某种上下文分析来识别形状等。
无论如何,感谢所有的链接,也感谢你指出了向numpy/scipy的方向。