Во-первых, ваша проблема не имеет ничего общего с PHP, поэтому я удалил этот тег и добавил более релевантные теги.
Умное выполнение этого не потребует сравнения NxN. Вы можете использовать много эвристики, но сначала я хотел бы спросить вас:
Являются ли все копии одного изображения точным изменением размера друг друга (выполняется ли какое-либо обрезание - сопоставление обрезанных изображений с оригиналом может быть более трудным и трудоемким)?
Все ли изображения сгенерированы (изменены) с использованием одного и того же инструмента?
А как насчет параметров, которые вы использовали для изменения размера? Например, все ли изображения для отображения на PSP имеют одинаковое разрешение?
Как вы оцениваете, сколько у вас уникальных изображений (т.е. сколько копий каждого изображения может быть - в среднем)?
У вас уже есть какая-либо классификация. Например, все ли мобильные изображения находятся в отдельной папке (или имеют другое разрешение, чем изображения на ПК)? Одно это может уменьшить количество сравнений на лот , даже если вы используете грубую силу в противном случае.
Подсказка очень высокого уровня о том, почему вам не нужны сравнения NxN: вы можете разработать много разных приблизительных хэшей (например, распределение высокочастотных и низкочастотных коэффициентов jpeg) и сгруппировать «потенциально» похожие изображения вместе. Это может уменьшить количество требуемых сравнений в 10-100 раз или даже больше в зависимости от качества используемой эвристики и набора данных. Хэширование может быть сделано даже для частей изображений. 30000 не очень большое число, если вы используете правильные методы.