如何比较两张彩色图片的相似度?

6

两张并排的图片(请忽略中间的红线)

我想比较这两张图片有多相似(红色区域相似),但是我不能逐像素地比较,因为它们的颜色位置并不完全相同。有人知道在这种情况下应该采取什么好方法吗?

谢谢!


可能需要使用OpenCV库,请参考此教程:http://www.pyimagesearch.com/2014/09/15/python-compare-two-images/ - efirvida
为什么位置不一样?在比较之前进行下采样是否有效?在比较之前注册图像是否允许逐像素比较?请详细说明您的问题。 - fferri
我从那里开始,但这两个指标都是基于逐像素比较的。对我来说,我需要一些容忍度来处理类似但不完全相同的位置。 - Kexin Xu
使用直方图比较? - efirvida
我从两个地图供应商的截屏中获取了同一区域的两张图片,底层地图完全相同,但是同一条道路的颜色可能位置不完全相同。不确定在此定义问题是否有帮助。 - Kexin Xu
1个回答

1
我个人建议使用indico图像特征API。基本上,您传入正在处理的图像,然后获取一组表示该图像内更高级形态结构的特征。
如果在这些特征之上计算余弦相似度,则会得到更直观的相似性度量。
如果您想要前端,有一个很棒的github链接展示了如何做到这一点:https://github.com/IndicoDataSolutions/imagesimilarity 代码本身非常简单:
from indicoio import image_features
from scipy import spatial

features_1 = image_features(<path_to_image>, <api_key>)
features_2 = image_features(<path_to_image>, <api_key>)
similarity = 1 - spatial.distance.cosine(dataSetI, dataSetII)  # This is what you want

完整文档在这里
完全透明披露:我是Indico的CEO,所以我有偏见,但我真的认为这会在这种情况下有所帮助。

我对尝试它很感兴趣,但是当我使用由imread创建的图像数组运行image_features时,它显示无效的API密钥。我以为API密钥只是可选的,你知道这里出了什么问题吗? - Kexin Xu
@KexinXu 很抱歉,API密钥不是可选的。基本上,它允许我们在出现问题时更有效地调试,因此我们已经开始要求使用它们。 - Slater Victoroff

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接