Хороший способ идентифицировать похожие изображения?

Я разработал простой и быстрый алгоритм в PHP для сравнения изображений для сходства.

Его быстрый (~ 40 в секунду для изображений 800х600) для хэша и неоптимизированный алгоритм поиска могут проходить через 3000 изображений за 22 минуты, сравнивая каждый с другими (3/сек).

Основной обзор - вы получаете изображение, масштабируете его до 8x8 и затем конвертируете эти пиксели в HSV. Оттенок, насыщенность и значение затем усекаются до 4 бит и становятся одной большой шестнадцатеричной строкой.

Сравнение изображений в основном идет по двум строкам, а затем добавляет найденные различия. Если общее число ниже 64, то это же изображение. Различные изображения обычно составляют около 600 - 800. Ниже 20 и очень похожи.

Есть ли улучшения в этой модели, которую я могу использовать? Я havent посмотрел, насколько релевантны разные компоненты (оттенок, насыщенность и ценность) для сравнения. Хюэ, вероятно, очень важно, но другие?

Чтобы ускорить поиск, я мог бы, вероятно, разбить 4 бита из каждой части пополам и сначала поставить самые значащие биты, поэтому, если они не пройдут проверку, то lsb вообще не нужно проверять. Я не знаю, как эффективно хранить такие биты, но все же позволяет им легко искать и сравнивать.

Я использовал набор данных из 3000 фотографий (в основном уникальных), и не было никаких ложных срабатываний. Он полностью невосприимчив к изменениям и довольно устойчив к изменениям яркости и контраста.

Ответ 1

Что вы хотите использовать:

  • Удаление функций
  • хэширования
  • Локальное хеширование цветения.

  • Большинство людей используют функции SIFT, хотя у меня были лучшие впечатления от неинвариантно-инвариантных. В основном вы используете детектор кромок, чтобы находить интересные точки, а затем центрируйте свои пятна изображения вокруг этих точек. Таким образом, вы также можете обнаружить суб-изображения.

  • Вы реализовали хэш-метод. Там тонны, чтобы попытаться, но ваш должен хорошо работать:)

  • Важнейшим шагом к быстрому решению является хеш-хэш. Вы преобразовываете свои значения в унарное представление, а затем принимаете произвольное подмножество бит как новый хеш. Сделайте это с 20-50 случайными выборками, и вы получите 20-50 хэш-таблиц. Если какая-либо функция соответствует 2 или более из этих 50 хэш-таблиц, эта функция будет очень похожа на ту, которую вы уже сохранили. Это позволяет вам преобразовать abs (x-y)

Надеюсь, что это поможет, если вы хотите попробовать свой собственный образный поиск подобия изображения, напишите мне письмо на hajo по адресу spratpix

Ответ 3

Вы найдете огромное количество литературы по этому вопросу. Просто перейдите к Google Scholar или IEEE Xplore, чтобы поиск статей. У меня был контакт с полем, когда я сделал проект по распознаванию формы (в значительной степени нечувствительный к шуму, вращениям и изменениям) в колледже - вот статья.