Комментарии 16
Для Windows есть прекрасный AntiDupl.NET https://github.com/ermig1979/AntiDupl.
GUI инструменты трудно автоматизировать, тогда как перл-скрипт, проверяющий дубликаты, можно сделать частью pipeline, и расчищить и раскладывать фотографии в автоматическом режиме.
Такой нюанс ещё. Может быть несколько фотографий одинаковых, но оригинал один, а остальные сохранённые из мессенджеров, следовательно ужатые.
И ещё была прога от Google - picasa, она тоже отлично дубликаты находила.
В своё время для автоматизации похожих изображений использовал библиотеку phash. Правда она и тогда была уже старая, я ее под php 5.6 ещё собирал )
пару месяцев провозился с этой темой вот что могу сказать
судя по длине хеш алгоритм сжимает картинку до матрицы 8*8 , на практике этого не достаточно если очень много фото у вас пойдет много ложных срабатываний на первый взгляд разные картинки будут давать полное совпадение хеш
надо увеличить хеш сжимать картинку до 16*16 у вас на каждую картинку будет 4 таких хеш
Общи алгоритм примерно такой:
Обрезаем картинку берем квадрат по центру
Сжимаем картинку до указанного размера
запускаем цикл и проходим по пикселям
берем в точке цвет, получаем 3 составляющих красный = 123, зеленый = 23 и синий = 233
вычисляем итоговое значение Zxy = ( красный-зеленый - синий) 2 квадрат разницы, полученное число заносим в массив
записываем значения для всех точек в массив
вычисляем среднее average для всего массива
проходим в цикле по массиву сравниваем каждое Zxy со средним значение если оно больше то в битовую маску пишем 1 если меньше пишем 0
получаем битовую маску 0101010101010101010101011111111
далее битовую маску можно получить в виде x16 кода, битовой строки или массива
Еще один момент на который хочу обратить внимание - в MySQl максимальный размер BIT поля = 64 бита, а это соответствует матрице 8x8, что нам категорически не подходит. Для того, чтобы увеличить длину хранимой маски в 4 раза я сделал в таблицы MySQL 4 поля по 64 бит. Выкладываю свой класс где возможность задавать размер матрицы до которой сжимается оригинальное фото. Для работы требуется библиотека imagick. http://bugacms.com/?i=267
1 Ph: FFFFFF3F00040400
2 Ph: FFFFFF4000000000
3 Ph: FFFFEB0000000000
Почему бы не залить все в гугл фото, где все описанные проблемы будут решены автоматически?
Все фото за 20 лет? А вспоминая истории с потерей файлов на cloud.mail.ru, ну его нафиг. Ну и в свете последних событий, можно и вообще доступа лишится к таким сервисам.
У меня обратный опыт - сколько потерянных фото с разных девайсов и умерших дисков - не счесть.
Ищем дубликаты фотографий с помощью Perl