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

时间:2009-02-27 08:07:22

标签: python image-processing python-imaging-library

我在文件夹中有很多图像,我想找到与预选图像颜色相近的图像。

我希望能够做到这样的事情:

python find_similar.py sample.jpg

并返回类似的内容:

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

这可行吗?

2 个答案:

答案 0 :(得分:4)

我不能给你一个罐装解决方案,但这是一个解决问题的角度。它不是PIL特有的,它可能完全是假的,因为我没有图像处理经验。

  1. 在图片上执行color quantization。这为您提供了一个调色板,可以在没有任何形状信息的情况下对图像中的颜色信息进行编码。

  2. 运行principal components analysis以获取颜色立方体中的主要组件。严格来说,你可以在没有量化的情况下先运行它,但它可能太贵了。

  3. 对不同图像的主要成分进行最小二乘拟合。

  4. 希望这有帮助。

答案 1 :(得分:1)

Question on 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)

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

还有另一个similar question on Stackoverflow讨论了这个问题。