Теория информатики: сходство изображений

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

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

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

Спасибо!

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


person djs22    schedule 25.01.2011    source источник
comment
Должны ли они быть точно такими же, или вы хотите вычислить расстояние между ними? (обратите внимание, что Метрика означает расстояние и принимает два параметра, а общий цвет является квалификатором, который принимает один параметр).   -  person ruslik    schedule 26.01.2011
comment
Будьте готовы к тому, что какой бы алгоритм вы ни выбрали, результат будет разочаровывающим. Человеческий мозг намного эффективнее справляется с этой задачей, чем любой компьютер на данный момент, что вы неизбежно обнаружите множество ложных срабатываний и отрицаний.   -  person biziclop    schedule 26.01.2011


Ответы (4)


То, о чем вы говорите, носит весьма общий и неконкретный характер.

Информация об изображении формализована как Entropy.

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

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

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

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

(Обновлять)

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

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

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

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

person Aliostad    schedule 25.01.2011
comment
Спасибо Алиостаду; Я был таким общим, потому что, честно говоря, не совсем уверен, что искать прямо сейчас. Я отредактировал вопрос, чтобы немного лучше объяснить мою конечную цель - person djs22; 26.01.2011
comment
@ djs22: это зависит от того, какие модификации вы хотите уловить. Сдвиг? Обрезать? Зеркало? Масштаб? Рекомпрессия с потерями? Гамма-коррекция? Изменение яркости? - person ruslik; 26.01.2011
comment
@ruslik: Я знаю, что это жирно, но ответ - все. Наиболее важным было бы увидеть, изменил ли кто-то фактическое содержимое изображения, то есть цвета, кадры и т. Д. Сжатие / зеркальное отображение не меняет содержимое и, следовательно, не имеет для меня никакого отношения. - person djs22; 26.01.2011
comment
@ djs22: Тогда вам понадобятся сильные алгоритмы ИИ. Может быть вы ищете фрактальное сжатие :) - person ruslik; 26.01.2011

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

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

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

введите описание изображения здесь

person Dr. belisarius    schedule 26.01.2011

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

person Agnius Vasiliauskas    schedule 26.01.2011
comment
Для этого требуются оба изображения. Вопрос заключался в том, какую информацию можно вычислить из изображения и использовать позже для сравнения. - person ruslik; 26.01.2011
comment
@ruslik Сложно ли предварительно вычислить гистограммы изображений и сохранить их в виде 256-байтового массива? (OP ничего не сказал о требованиях к хранилищу подписи изображений) - person Agnius Vasiliauskas; 26.01.2011
comment
Кроме того, он не будет улавливать кадрирование, повторное сжатие с потерями или изменение цвета / яркости. - person ruslik; 26.01.2011
comment
@ruslik, мне очень естественно, что в настоящее время не существует никакого метода подписи, который мог бы уловить все возможные преобразования изображения. - person Agnius Vasiliauskas; 26.01.2011

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

person Throwback1986    schedule 26.01.2011