0
0 комментариев

Задача — распознать одинаковые изображения, прогнанные через цепочку соц. сетей. В этом случае как минимум к исходнику может быть добавлена какая-либо плашка снизу, может быть добавлен вотермарк, изображение может быть несколько раз пережато в jpeg с довольно низким качеством (Особенности загрузки внутри соц. сетей).

В общем случае знаком с теорией и таким понятиями как pHash (phash.org), однако в чистом виде для моей задачи данный инструмент малоприменим. Хеш от оригинала и такой вот копии выходит слишком различным, что не дает возможности определить изображения как схожие.

Как вариант — разбивать изображения на более мелкие участки и пытаться сравнивать уже на основе их совпадений (Что, по идее, способно дать и возможность определять кропы от изображений), однако в этом случае встает вопрос об организации хранения подобных данных, плюс, насколько я понимаю, не спасет от проблем, связанных с артефактами при конвертации в jpeg низкого качества.

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

Возможно, сообщество сможет помочь и назвать готовые библиотеки, способные решить данную задачу? В дополнение к перечисленному в первом абзаце, библиотека должна уметь выдавать некий хеш, который возволял бы поиск схожих на основе заранее накопленной коллекции. Это вовсе не обязательно должно быть быстро (Обработка планируется не в real time), но при этом не должно занимать часы с полным перебором всех файлов заранее накопленных изображений.

Эти библиотеки должны иметь биндинг для python или, хотя бы, command line интерфейс, позволяющий использовать их через python.

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


Добавить комментарий