Алгоритмы обнаружения дублирующегося изображения?

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

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

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

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

14
задан SuperBiasedMan 27 August 2015 в 11:39
поделиться

5 ответов

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

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

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

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

7
ответ дан 1 December 2019 в 14:44
поделиться

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

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

2
ответ дан 1 December 2019 в 14:44
поделиться

Первым улучшением был бы подсчет количества совпадающих пар чисел, и если, скажем, есть 5 «1» на верхней части квадратов, но только 4 на нижней, то должен быть «1», указывающий на верхнюю часть сетки.

-121--4950549-

Вы не можете получить доступ к текстовому окну из другого окна, так как оно является закрытым для этого окна, однако вы можете обойти его, выставив RichTextBox как общедоступное свойство в окне (взлом)

public RichTextBox RichTextBox {
  get{
    //the RichTextBox would have a property x:Name="richTextbox" in the xaml
    return richTextBox;
  }
}
-121--3802282-

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

1
ответ дан 1 December 2019 в 14:44
поделиться

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

1
ответ дан 1 December 2019 в 14:44
поделиться

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

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

1
ответ дан 1 December 2019 в 14:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: