LINUX.ORG.RU

[python] сравнение изображений


0

0

Подскажите алгоритмы и способы сабжа?
Хочу написать незатейливую программку, коорая просканит мне указанную диру (рекурсивно) и попробует найти дубликаты изображений.

Или если подобная уже есть, ткните пальцем.

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

Сравнивать надо jpeg, bmp, png, gif

★★

Re: [python] сравнение изображений

>исключительно разрешением, или палитрой...

можно попробовать всё масштабировать в 100 на 100 пикселей, делать чёрнобелым и сравнивать по пиксельно, искать отличие в 3 пикселя, чёрнобелым можно делать если сумма r g b превышает какой-то порог, то белое, не превышает, то чёрное

p.s. жуткий велик с квадратными колёсами, может даже заработает, но наверняка всё давно украдено

dimon555 ★★★★★ ()

Re: [python] сравнение изображений

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

RaySlava ()

Re: [python] сравнение изображений

imgSeek (только написан он на питоне, поэтому тормозит жутко). А вообще, сравнение изображений - довольно нетривиальная задача (особенно если они имеют разный масштаб и немного отличаются в цветовой гамме).

man двумерные вейвлет-преобразования

Eddy_Em ☆☆☆☆☆ ()

Re: [python] сравнение изображений

Что-то типа двухмерной корелляции наверно надо. На Си, конечно.

Absurd ★★★ ()

Re: [python] сравнение изображений

http://en.wikipedia.org/wiki/Locality_sensitive_hashing

Обычно все изображения масштабируют до одного и того же размера, выравнивают уровни, потом делают какое-нибудь Фурье или вейвлетное преобразование, высокочастотные компоненты выкидывают, а из того, что останется, берут набор каких-нибудь усреднённых значений, как усреднять - не так уж важно, тут все извращаются, как могут, например, можно взять какие-нибудь средние значения для прямоугольных участков, или перейти к полярным координатам, тогда будет какая-то устойчивость к преобразованиям вращения исходной картинки. Потом уже сравнивают хэши разных изображений.

ero-sennin ★★ ()
Ответ на: Re: [python] сравнение изображений от ero-sennin

Re: [python] сравнение изображений

Можно то же самое, но нейросетями.

По замыслу, это должно выглядеть следующим образом для группы из 1024 картинок:
1. Масштабирование в 100х100
2. перевод в ч/б, автоуровни.
3. многослойная сеть, с первым convolution-слоем. При желании можно
сделать и несколько таких слоев. На выходе 10 нейронов, двоично
кодирующих номер картинки. Или 1024 нейрона, по каждому на одну
картинку.
4. Учить ее хитрыми градиентными спусками, типа rprop

После этого сеть будет картинки как орехи щелкать.

shutty ()
Ответ на: Re: [python] сравнение изображений от shutty

Re: [python] сравнение изображений

Хм. Мысль про нейросеть весьма и весьма здравая. Единственное "но" после обучения она будет хорошо щелкать картинки, похожие на те, которым обучена. Для перехода с пейзажей на портреты, например, мне кажется, потребуется некоторое переобучение. Или я не прав?

RaySlava ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.