Как найти стереофото в библиотеке из тысяч снимков

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

Алгоритм вычисляет расстояние Хемминга между хешами изображений и выделяет серии похожих снимков, которые затем можно собрать в анимированные gif. Из многолетнего архива вышли сотни найденных стереоэффектов, от животных до архитектурных деталей. Скрипт опубликован на GitHub для Mac и работает с фото из iCloud или локальной папки.

Ключевые факты

  • Перцептивное хеширование находит похожие изображения без криптографического хеша, сравнивая количество совпадающих битов
  • Алгоритм использует расстояние Хемминга для определения порога сходства между парами фото
  • Результат: сотни стереоанимаций вытащены из архива в несколько часов работы скрипта
  • Инструмент работает на Mac с iCloud и поддерживает локальные папки с фотографиями
  • Полный исходный код опубликован на GitHub для переиспользования

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

Почему это важно

Перцептивное хеширование решает практическую задачу поиска визуально похожих медиа при огромных объёмах данных. В отличие от криптографических хешей, которые меняют все биты при малейшем изменении, перцептивный хеш сохраняет схожесть с исходными данными. Это позволяет быстро находить дубликаты, похожие кадры или естественные последовательности в больших библиотеках медиа без машинного обучения и сложных моделей.

Ред. Иронично, что задачу «найти похожее» решили без ML и нейросетей именно в год, когда всё подряд закидывают в модели. Расстояние Хемминга работало и до того, как стало модно звать каждый чих искусственным интеллектом.

Кому это важно

Фотографы и видеографы, которые снимают серийно и накапливают огромные архивы кадров. Хранители цифровых коллекций, работающие с дедупликацией визуальных материалов. Разработчики систем обратного поиска изображений и медиа-организации. Любой, кто нуждается в автоматическом разделении случайных дублей и вариаций в большой фотобиблиотеке.

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

Как это применить

Скрипт на GitHub готов к использованию на macOS с доступом к iCloud-фотографиям или локальной папке. Достаточно указать источник и запустить, программа вычислит хеши всех фото (процесс медленный из-за скачивания с iCloud), найдёт серии похожих снимков и выведет результаты. Полученные группы можно затем обработать вручную или создать из них анимированные GIF. Для других ОС алгоритм легко переносится благодаря открытому коду.

Ред. «Готов к использованию» с оговоркой «процесс медленный из-за скачивания с iCloud». То есть запустить можно сегодня, а результаты посмотреть, видимо, к выходным.

Можно ли доверять

Подход основан на хорошо изученной технике, которую используют профессиональные системы поиска (TinEye, Google Lens). Автор ясно объясняет математику хеширования и показывает реальные примеры работы. Код опубликован открытым и может быть проверен. Единственное ограничение, качество результатов зависит от правильного выбора порога расстояния Хемминга, но это настраивается под конкретную библиотеку.

Ред. Технике доверяют TinEye и Google Lens, так что математика надёжнее многих. Вся надёжность упирается в один порог, который автор честно оставляет подбирать вам вручную.

Риски и подводные камни

Скачивание фото из iCloud может быть очень медленным при большой библиотеке. Порог сходства нужно подбирать вручную, слишком низкий даст ложноположительные совпадения, слишком высокий пропустит реальные серии. Стереоэффекты работают лучше с животными и динамичными сценами, чем с неподвижной архитектурой. Алгоритм не различает разные объекты на одном фоне, может собрать в одну серию снимки совершенно разных моментов, если фон похож.

Ред. Алгоритм соберёт в одну серию совершенно разные моменты, если фон похож. Машина видит биты, а не сюжет, и про это стоит помнить раньше, чем она склеит вам gif из чужих кадров.

«My phone is full of wigglegrams that I took by accident. Years' worth, waiting for me to sit down and stitch them together.»

— Greg Sadetsky, автор скрипта