1

В настоящее время у меня есть несколько скриптов и приложений для Android, которые вместе выполняют следующие действия для набора устройств-членов (смартфоны, ПК, цифровые камеры):

  • все снимки, сделанные на всех устройствах-членах, автоматически синхронизируются с Dropbox
    • для смартфонов это делается с помощью приложения Dropsync
    • для цифровых камер скрипт запускается, как только камера подключается через USB
  • один раз в неделю все изображения всех участников, синхронизированных таким образом, перемещаются в другой каталог Dropbox для длительного хранения.
  • После перемещения происходит дедупликация - этот архивный каталог (назовем его Dropbox/PicsArchive/) сканируется, и все дубликаты обнаруживаются и удаляются. В настоящее время я использую fdupes для обнаружения дубликатов, но, насколько мне известно, он обнаруживает только точные дубликаты, то есть файлы с одинаковыми контрольными суммами.

Эта проблема

Однако между всеми членами есть нетривиальная связь.

Например, при подключении цифровой камеры определенного типа к USB ПК, на котором выполняются эти сценарии, снимки с карты памяти перемещаются в Dropbox, а копии уменьшенного размера создаются и затем отправляются подмножеству членов смартфона (используя блестящее приложение Autoremote). Эти копии с измененным размером могут очень легко оказаться в месте на смартфоне, которое также синхронизируется Dropsync. Таким образом, снимки с камеры, а также копии с измененным размером, в конечном итоге синхронизируются в Dropbox/PicsArchive/ .

Еще один пример - сделать снимок с помощью камеры смартфона (высокое разрешение) и поделиться им с контактом WhatsApp - часто WhatsApp уменьшает разрешение этого изображения. Но я хочу, чтобы оба местоположения синхронизировались (камера и соответствующий каталог мультимедиа WhatsApp), то есть Dropsync синхронизирует два изображения (одно с высоким и другое с более низким разрешением) в dropbox, и оба в конечном итоге окажутся в Dropbox/PicsArchive/ .

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

Вот пара грубых картинок текущей настройки. Вот оригинальный вариант использования:

Затем я реализовал связь, чтобы стимулировать пользователей делать более качественные изображения с помощью цифровой камеры, и в то же время иметь возможность легко отправлять эти фотографии пользователям WhatsApp:

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

Итак, как я могу дедуплицировать все эти картинки?

2 ответа2

-1

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

ImageMagick® - это программный пакет для создания, редактирования, создания или преобразования растровых изображений.

ImageMagick - это бесплатное программное обеспечение, поставляемое в виде готового к запуску бинарного дистрибутива или исходного кода, которое вы можете использовать, копировать, изменять и распространять как в открытых, так и в закрытых приложениях. Он распространяется под лицензией Apache 2.0, одобрен OSI и рекомендован для использования OSSCC.

Текущий выпуск - ImageMagick 6.9.0-5, доступный по адресу http://www.imagemagick.org/download. Он работает на Linux, Windows, Mac Os X, iOS, Android OS и других.

Примеры ImageMagick - Сравнение изображений - МНОГО информации и методов, но многие из них включают создание "разностных" изображений, на которые можно взглянуть.

Этот клип должен решить хотя бы часть "проблемы" для идентичных изображений с разными метаданными:

Вы можете иметь IM генерировать подпись для каждого изображения ...

identify -quiet -format "%#" images...

Генерирует строку хеша так же, как MD5 и SHA256. Однако, в отличие от последнего, он использует фактические данные изображения для создания подписи, а не метаданные изображений.

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

ВНИМАНИЕ: чтение и запись изображения в формате JPEG будут генерировать разные данные изображения и, следовательно, другую подпись. Это просто из-за сжатия JPEG с потерями формат изображения использует.

Затем сравните хэши с выбранным вами инструментом, например Linux, с которым вы, вероятно, знакомы, if [[ "$string1" == "$string2" ]] ...


Некоторые другие возможные варианты:

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

-2

Три инструмента, которые я использовал в прошлом, с отличными результатами. Все для Windows. Ни один с открытым исходным кодом, ни для Linux.

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

  • VisiPics: этот инструмент ищет точные дубликаты в наиболее строгих настройках. Вы можете «ослабить» настройку, чтобы найти похожие изображения. Например, вы можете сопоставить изображения, которые вы можете хмуриться на одном изображении, но улыбаться на другом.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .