如何使用Python和PIL找到颜色相似的图像?

3
我有很多图片存放在一个文件夹中,我想找到与预选图片颜色相似的图片。
我希望能够像这样做:
python find_similar.py sample.jpg

并且让它返回类似以下内容:

234324.jpg
55.jpg
9945.jpg
345434.jpg
104.jpg

这可行吗?
2个回答

4
我无法提供一个现成的解决方案,但是这里有一个处理问题的角度。它与PIL无关,而且可能完全是错误的,因为我没有图像处理经验。
1. 对图像执行颜色量化。这会给你一个可以编码图像中颜色信息而不包含形状信息的调色板。
2. 运行主成分分析以获取颜色立方体中的主要部分。严格来说,你可以先进行此操作而不进行量化,但可能太昂贵了。
3. 对不同图像的主成分进行最小二乘拟合。
希望这可以帮到你。

1

在寻找相似图像的算法方面,Stackoverflow上的问题有所讨论,您可能想在Python & PIL中实现其中之一。

此外,您可以直接使用PIL中的ImageChops模块,并使用difference方法来比较两个图像,例如:

import Image
import ImageChops

im1 = Image.open("original.jpg")
im2 = Image.open("sample.jpg")

diff = ImageChops.difference(im2, im1)

这可能会帮助您了解原始图像与其他图像之间的差异。

Stackoverflow上还有另一个类似的问题讨论了这个问题。


样例图像是一个正方形,左半部分为粉色,右半部分为黑色。这个方法能够找到一个左半部分为黑色,右半部分为粉色的正方形图像吗? - tzot

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