Как определить изменения на двух изображениях одного и того же объекта

У меня есть два изображения, которые, как я знаю, представляют собой один и тот же объект. На рисунке ниже они обозначены как Reference и Match.

Ссылка и сопоставление

Изображение Match может претерпевать следующие преобразования по сравнению с Reference:

  1. Внешний вид объекта мог локально измениться за счет добавления (например, грязи или надписей, добавленных сбоку) или упущения (боковое зеркало было удалено).

  2. Растягивается или уменьшается в размере только по горизонтали (не изменяется по вертикали)

  3. Части эталонного изображения отсутствуют в Match (заштрихованы красным на эталонном изображении).

Вопрос: Как определить регионы, «изменившиеся» указанным выше образом?

Идея № 1: Динамическая деформация времени кажется хорошим кандидатом, когда начало и конец изображения соответствия (обозначенные цифрами 1 и 3 на изображении) выровнены с соответствующими столбцами эталонного изображения, но я не уверен, как действовать дальше.

Идея № 2: Сопоставьте функции SIFT на изображениях. Мозаика, создаваемая расположением характерных точек, разбивает изображение на неоднородные плитки. Используйте соответствия функций между изображениями, чтобы определить, какие плитки должны соответствовать изображениям. Используйте меру подобия, чтобы выяснить любые изменения.


person curryage    schedule 02.05.2013    source источник


Ответы (1)


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

Для регистрации загляните в библиотеку ITK. Вы, вероятно, можете сделать приличную оптимизацию градиента, используя взаимную информацию в качестве метрики. Он имеет ряд различных преобразований, которые будут захватывать перевод и масштабирование. Код должен быстро работать на демонстрационных изображениях, которые вы показываете.

person denver    schedule 02.05.2013
comment
Преобразования — это не просто горизонтальное масштабирование и горизонтальный перенос. Как я упоминал в исходном вопросе, части исходного объекта могли быть изменены (добавлены или удалены). - person curryage; 02.05.2013
comment
@curryage - вам все равно на них, если они представляют собой только часть изображения. Процедура оптимизации будет достаточно надежной, чтобы по-прежнему давать вам точные результаты, если цвета меняются, автомобиль загорается и т. д. Думайте об этом так: вы ищете консенсус, большое количество пикселей должно измениться, чтобы вы не изменились. ваша метрика дольше максимизируется/минимизируется при правильной оптимизации. - person denver; 03.05.2013
comment
Кроме того, если вы используете такую ​​метрику, как взаимная информация, она будет игнорировать такие вещи, как изменение цвета — она не ищет точное совпадение, а ищет соответствующие пары цветов в целевом и движущемся изображениях. - person denver; 03.05.2013