Найти и удалить дубликаты изображений из отсека ± 2 миллиона изображений - PullRequest
0 голосов
/ 01 мая 2018

Новостной портал компании имеет два сервера (ОС = Centos 6):

Первый сервер № 1 имеет около 1 миллиона изображений (.jpg, .png), а сервер № 2 получил почти такое же количество - 1 миллион изображений. Некоторые из них являются идентичными дубликатами, некоторые - дубликатами с измененным размером, некоторые с размытостью, некоторые без размытия, некоторые - совершенно уникальные изображения. Имена файлов в основном тоже разные.

Миссия - объединить два медиа-каталога серверов в один. После объединения дубликаты должны быть восстановлены (чтобы освободить хранилище).

Я провел несколько тестов с Imagemagick compare -metric RMSE, но я подумал, что на сравнение каждого файла с каждым файлом на двух серверах уйдет много времени. Таким образом, будет 1 миллион x 1 миллион = 1 триллион операций, это займет много времени ...

Есть предложения?

1 Ответ

0 голосов
/ 01 мая 2018

Используйте GNU Parallel для расчета только один раз для каждого изображения:

  • контрольная сумма только для данных

  • Хэш восприятия

Затем откажитесь от всех с одинаковыми контрольными суммами и просмотрите те с похожими перцептивными хэшами.


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

identify -format "%#" a.jpg
9e51c9cf53fddc7d318341cd7e6c6e34663e5c49f20ede16e29e460dfc63867

Ссылки на генерацию Perceptual Hash:

...