Дублирующие алгоритмы обнаружения изображений?

Я думаю о создании системы баз данных для изображений, где они хранятся с компактными сигнатурами, а затем сопоставляются с "образ запроса", который может быть изменен, обрезан, увеличен, повернут или перевернут версию сохраненного. Обратите внимание, что я не говорю об алгоритмах подобия изображения, а скорее о дублировании обнаружения. Это упростит ситуацию. Системе было бы безразлично, есть ли у двух изображений слон на них, было бы важно определить, являются ли эти два изображения фактически одним и тем же изображением.

Сравнение гистограмм просто не будет работать для обрезанных изображений запросов. Единственный жизнеспособный путь, который я вижу, это определение формы/края. Изображения сначала будут как-то дискретизированы, каждый пиксель будет преобразован в 8-уровневый оттенок серого, например. Дискретизированное изображение будет содержать обширные области того же цвета, которые помогут указать фигуры. Эти формы затем можно было бы описать с помощью коэффициентов, и их относительное положение можно было бы запомнить. Из этого будут созданы компактные подписи. Этот процесс будет выполняться над каждым сохраненным изображением и над каждым изображением запроса, когда должно быть выполнено сравнение. Это звучит как эффективный и реализуемый алгоритм? Чтобы проиллюстрировать эту идею:

удалена мертвая ссылка ImageShack

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

Ответы

Ответ 1

SURF должен выполнять свою работу.

http://en.wikipedia.org/wiki/SURF

Быстро прочный, он инвариантен по поворотам и масштабированию, а также по блеску и контрастности/молнии (но не так сильно).
Пример автоматического сшивания панорамы.

Проверить статью на SIFT в первую очередь http://en.wikipedia.org/wiki/Scale-invariant_feature_transform

Ответ 2

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

Очень похож на метод SVD, который называется анализ основных компонентов, который, я думаю, будет проще использовать для сравнения изображений. Метод PCA довольно близок к простому SVD и избавлению от сингулярных значений путем их факторизации в U и V-матрицах. Если вы будете следовать пути PCA, вам также может понадобиться изучить анализ соответствия. Кстати, метод PCA был распространенным методом, используемым в Приложении Netflix для извлечения функций.

Ответ 3

Отъезд tineye.com У них есть хорошая система, которая всегда улучшается. Я уверен, что вы можете найти у них исследовательские работы по этому вопросу.

Ответ 5

В статье вы можете ссылаться на в Википедии об обнаружении функций.

Если вы работаете на процессоре Intel/AMD, вы можете использовать встроенные примитивы производительности Intel, чтобы получить доступ к библиотеке функций обработки изображений. Кроме того, есть проект OpenCV, и для вас еще одна библиотека функций обработки изображений. Преимущество используемой библиотеки заключается в том, что вы можете попробовать различные алгоритмы, уже реализованные, чтобы увидеть, что будет работать для вашей ситуации.