Теория информатики: сходство изображений - PullRequest
3 голосов
/ 26 января 2011

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

Предполагая, что у меня есть два изображения, A и B, я хочу получить как можно больше данных о каждом из них, чтобы потом мог программно сравнить их. Такие вещи, как «общий цвет», «общая форма» и т. Д., Были бы великолепны.

Если вы поможете мне найти конкретные свойства и алгоритмы для их вычисления, это было бы здорово!

Спасибо!

РЕДАКТИРОВАТЬ: Конечная цель здесь состоит в том, чтобы компьютер мог сказать мне, насколько "похожи" фотографии. Если два изображения одинаковы, но в одном лицо размыто; они должны зарегистрироваться как довольно похожие. Если две картинки совершенно разные, компьютер должен уметь их различать.

Ответы [ 4 ]

5 голосов
/ 26 января 2011

То, о чем вы говорите, очень общее и неспецифичное.

Информация об изображении формализуется как Энтропия .

То, что вы, похоже, ищете, - это в основном извлечение функций, а затем сравнение этих функций. Существует множество функций, которые можно извлечь, но многие из них могут быть неактуальными в зависимости от различий в изображениях.

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

Предварительная обработка также важна, возможно, вы могли бы превратить ваши изображения в оттенки серого, а затем сравнить их.

Это поле настолько разнообразно, что вам нужно быть более конкретным.

(Update)

То, что вы ищете, это тема сотен, если не тысяч научных статей. Но, может быть, упрощенный подход может сработать.

Предполагая, что вопрос здесь не идентифицирует объекты , и не требует преобразования, перевода, масштабирования или вращения , и мы имеем дело только с двумя изображениями, которые одинаковы но можно добавить больше шума:

1) Область изображения (область пространства): сравните пиксели один за другим и сложите квадрат разностей. Нормализуйте это значение по ширине * высоте - просто поделите на количество пикселей. Это может быть полезным показателем сходства.

2) Частотная область: преобразование изображения в изображение частотной области (с использованием FTT в инструменте обработки изображений, таком как OpenCV), которое также будет 2D. Сделайте то же самое выше в квадрате diff, как и выше, но, возможно, вы хотите ограничить частоты. Затем нормализуем по количеству пикселей. Это лучше для шума и перевода, а также для небольшого вращения, но не в масштабе.

1 голос
/ 26 января 2011

Я рекомендую взглянуть на OpenCV . Пакет предлагает большинство (если не все) методов, упомянутых выше.

1 голос
/ 26 января 2011

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

1 голос
/ 26 января 2011

SURF - хороший кандидатный алгоритм для сравнения изображений

Статья в Википедии

Практический пример (в Mathematica ), идентифицирующий соответствующие точки на двух изображениях Луны (повернутых, раскрашенных и размытых):

enter image description here

...