Я разработал простой и быстрый алгоритм в PHP для сравнения изображений для сходства.
Его быстрый (~ 40 в секунду для изображений 800×600) для хэша и неоптимизированный алгоритм поиска могут проходить через 3000 изображений за 22 минуты, сравнивая каждый с другими (3 / сек).
Основной обзор – вы получаете изображение, масштабируете его до 8×8 и затем конвертируете эти пиксели для HSV. Оттенок, насыщенность и значение затем усекаются до 4 бит и становятся одной большой шестнадцатеричной строкой.
Сравнение изображений в основном идет по двум строкам, а затем добавляет найденные различия. Если общее число ниже 64, то это же изображение. Различные изображения обычно составляют около 600 – 800. Ниже 20 и очень похожи.
Есть ли улучшения в этой модели, которую я могу использовать? Я havent посмотрел, насколько релевантны разные компоненты (оттенок, насыщенность и ценность) для сравнения. Хюэ, вероятно, очень важно, но другие?
Чтобы ускорить поиск, я мог бы разделить 4 бита из каждой части пополам и сначала поставить самые значащие биты, поэтому, если они не пройдут проверку, то lsb вообще не нужно проверять. Я не знаю, как эффективно хранить такие биты, но все же позволяет им легко искать и сравнивать.
Я использовал набор данных из 3000 фотографий (в основном уникальных), и не было никаких ложных срабатываний. Он полностью невосприимчив к изменениям и довольно устойчив к изменениям яркости и контраста.
Что вы хотите использовать:
Большинство людей используют возможности SIFT , хотя у меня были лучшие впечатления от неинвариантно-инвариантных. В основном вы используете детектор кромок, чтобы находить интересные точки, а затем центрируйте свои пятна изображения вокруг этих точек. Таким образом, вы также можете обнаружить суб-изображения.
Вы реализовали хэш-метод. Есть тонны, чтобы попробовать, но ваш должен хорошо работать 🙂
Ключевым шагом к быстрому решению является хеш-хэш. Вы преобразовываете свои значения в унарное представление, а затем принимаете произвольное подмножество бит как новый хеш. Сделайте это с 20-50 случайными выборками, и вы получите 20-50 хэш-таблиц. Если какая-либо функция соответствует 2 или более из этих 50 хэш-таблиц, эта функция будет очень похожа на ту, которую вы уже сохранили. Это позволяет конвертировать абс (xy)
Надеюсь, что это поможет, если вы хотите опробовать мой собственный образный поиск сходства изображений, напишите мне письмо на hajo at spratpix
http://www.phash.org/ через http://www.reddit.com/r/programming/comments/bvmln/how_does_tineye_work/
Вы найдете огромное количество литературы по этому вопросу. Просто перейдите к Google Scholar или IEEE Xplore для поиска статей. У меня был некоторый контакт с полем, когда я сделал проект по распознаванию формы (в значительной степени нечувствительный к шуму, вращениям и изменениям размера) в колледже – вот статья .