Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Найти входное изображение (ID, паспорт) в imagesDB на основе сходства

Автор вопроса: user1091810Ответов: 2

Я хотел бы решить, присутствует ли изображение в списке, хранящемся в БД (например, изображения удостоверений личности, паспорта, карты Stu. и т. д.). Я подумал об использовании алгоритма KNN, который будет отображать K ближайших изображений.

Опции для метрики расстояния:

  1. сумма евклидова расстояния между каждым относительным пикселем (img1[pixel_i], img2[pixel_i])
  2. сумма евклидова расстояния между каждым пикселем друг от друга, умноженная на некоторый коэффициент, уменьшающийся с расстоянием (пиксель к пикселю)
  3. то же, что и выше, но с Манхэттеном...

Вы знаете/думаете о лучшем способе решения проблемы схожести изображений?

  • Не используйте для этого пиксели. Извлечь особенности. Has QUIT--Anony-Mousse 27.11.2014

distanceimage-processingknninformation-retrieval

Ответы

Ответ 1 · рейтинг 1 · pixelmitch

Я думаю, что использование необработанных значений уровня серого для вычисления расстояний - очень плохая идея. Это не инвариантно к освещению, перемещению и вращению (хотя я не думаю, что вращение является большой проблемой для изображений лиц).

Попробуйте использовать надежный и инвариантный дескриптор, извлеченный из каждого изображения (например, SIFT для ключевых точек), а затем вычислите расстояния между этими функциями. K-NN может работать. Кроме того, поищите литературу по поиску изображений для более продвинутых подходов.

Надеюсь это поможет!

Ответ 2 · рейтинг 1 · Mark Setchell

Если у вас есть большое количество изображений в вашей базе данных, будет довольно громоздко каждый раз вычислять сходство между данным изображением и каждым отдельным изображением в вашей базе данных. Вместо этого я бы рассмотрел что-то вроде Perceptual Hash (pHash), где вы можете предварительно вычислить параметр ОДИН РАЗ для каждого изображения в вашей базе данных и сохранить его, а затем, когда вы хотите сравнить изображение, вы вычисляете только его единственный pHash и сравниваете это со всеми сохраненными в вашей базе данных.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы