Как мне найти изображения с похожим цветом, используя Python и PIL? - PullRequest
3 голосов
/ 27 февраля 2009

У меня много изображений в папке, и я хотел бы найти изображения с цветом, аналогичным предварительно выбранному изображению.

Я хотел бы иметь возможность сделать что-то вроде:

python find_similar.py sample.jpg

и вернуть что-то вроде:

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

Это выполнимо?

Ответы [ 2 ]

4 голосов
/ 27 февраля 2009

Я не могу дать вам законсервированного решения, но вот подход к решению проблемы. Это не зависит от PIL, и это может быть полностью поддельным, так как у меня нет опыта в обработке изображений.

  1. Выполните квантование цвета на изображении. Это дает вам палитру, которая кодирует информацию о цвете на изображении без какой-либо информации о форме.

  2. Запустите анализ главных компонентов , чтобы получить доминирующие компоненты в цветном кубе. Строго говоря, вы могли бы сначала запустить это без квантования, но это может быть слишком дорого.

  3. Выполните аппроксимацию методом наименьших квадратов по основным компонентам различных изображений.

Надеюсь, это поможет.

1 голос
/ 27 февраля 2009

Алгоритм поиска похожих изображений обсуждается в Вопросе по Stackoverflow , вы можете реализовать один из них в Python & PIL.

Кроме того, вы можете сразу использовать модуль ImageChops из PIL и использовать метод difference для сравнения двух изображений, подобных этому:

import Image
import ImageChops

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

diff = ImageChops.difference(im2, im1)

Это может помочь вам получить представление о разнице вашего исходного изображения и других.

Существует еще один аналогичный вопрос о Stackoverflow , в котором обсуждается это.

...