Новостной портал компании имеет два сервера (ОС = Centos 6):
Первый сервер № 1 имеет около 1 миллиона изображений (.jpg, .png), а сервер № 2 получил почти такое же количество — 1 миллион изображений. Некоторые из них являются идентичными дубликатами, некоторые — дубликатами с измененным размером, некоторые с размытостью, некоторые без размытия, некоторые — совершенно уникальные изображения. Имена файлов в основном тоже разные.
Миссия — объединить два медиа-каталога серверов в один. После объединения дубликаты должны быть восстановлены (чтобы освободить хранилище).
Я сделал несколько тестов с Imagemagick compare -metric RMSE
, но я думал, что это займет много времени, чтобы сравнить каждый файл с каждым файлом с двух серверов. Таким образом, будет 1 млн х 1 млн = 1 триллион операций, это займет много времени …
Любые предложения здесь?
использование GNU Parallel рассчитать только один раз для каждого изображения:
контрольная сумма только для данных
перцептивный хэш
Затем откажитесь от всех с одинаковыми контрольными суммами и просмотрите те с похожими перцепционными хэшами.
Получить контрольную сумму по только данные изображения (то есть не включая метаданные, например другую дату в ваших изображениях), используя ImageMagick следующим образом:
identify -format "%#" a.jpg
9e51c9cf53fddc7d318341cd7e6c6e34663e5c49f20ede16e29e460dfc63867
Ссылки на генерацию Perceptual Hash:
Других решений пока нет …