Повторяющиеся алгоритмы обнаружения изображений? - PullRequest
14 голосов
/ 08 февраля 2010

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

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

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

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

Ответы [ 5 ]

7 голосов
/ 08 февраля 2010

СЕРФ должен делать свою работу.

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

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

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

2 голосов
/ 08 февраля 2010

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

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

1 голос
/ 08 февраля 2010

Как насчет преобразования этого кода питона в C обратно?

1 голос
/ 08 февраля 2010

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

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

1 голос
/ 08 февраля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...