У меня очень большая база данных jpeg-изображений, около 2 миллионов. Я хотел бы сделать нечеткий поиск дубликатов среди этих изображений. Дублированные изображения - это два изображения, у которых есть много (около половины) их пикселей с одинаковыми значениями, а остальные отключены примерно на +/- 3 в их значениях R/G/B. Изображения идентичны невооруженным глазом. Это то, что вы получили от повторного сжатия jpeg.
У меня уже есть надежный способ определить, идентичны ли два изображения: я суммирую дельта-яркость по всем пикселям и сравниваю с порогом. Этот метод оказался на 100% точным, но сделать 1 фотографию против 2 миллионов невероятно медленным (часы на фото).
Я хотел бы отпечатать изображения таким образом, чтобы я мог просто сравнить отпечатки пальцев в хеш-таблице. Даже если я могу надежно уменьшить количество изображений, которые мне нужно сравнить, всего лишь 100, я бы был в отличной форме, чтобы сравнить 1 к 100. Что было бы хорошим алгоритмом для этого?