Как изменить гомографию с масштабом изображения?

У меня есть два плоских изображения A и B. Я рассчитал гомографию между этими двумя изображениями, используя характерные точки, мой вопрос в том, если и A, и B увеличиваются до двойного размера, скажем, A' и B'. Как будет омография? Спасибо.


person binzhang    schedule 09.01.2014    source источник


Ответы (4)


Гомография не меняется. Это будет то же самое, пока оба изображения претерпели одинаковое линейное масштабирование.

Гомография — это отображение двух двумерных плоскостей в трехмерном пространстве. Он совмещается при вращении и перемещении с матрицей камеры. Если положение камеры относительно объекта не изменилось, то гомография, рассчитанная на основе сопоставления точек в плоскости объекта с эквивалентными точками в плоскости изображения, будет одинаковой (при условии отсутствия шума) независимо от выбранных точек.

person Roger Rowland    schedule 09.01.2014
comment
Я так не думаю, омография включает в себя вращение и перевод, я думаю, что перевод должен быть другим. - person binzhang; 10.01.2014
comment
@binzhang Я расширил свой ответ - может быть, я неправильно понял ваш вопрос. Я предполагаю, что изображения масштабируются относительно их центров, поэтому перевод не меняется. - person Roger Rowland; 10.01.2014
comment
Спасибо. Теперь предположим, что гомография не изменилась, скажем, H = [a11, a12, a13, a21, a22, a23, a31, a32, a33]. Тогда отображение точек из изображения B в изображение A будет следующим: - person binzhang; 11.01.2014
comment
Спасибо. Теперь предположим, что гомография не изменилась, скажем, H = [a11, a12, a13, a21, a22, a23, a31, a32, a33]. Тогда отображение точек из изображения a(xa,ya) в изображение B(xb, yb) будет: xb = (a11*xa+a12*ya+a13)/(a31*xa+a32*ya+a33), если оба изображения увеличиваются до двойного размера, отображение будет (2xa,2ya) --›(2xb,2yb) 2xb = (a11*2xa+ a12*2ya + a13) / (a31*2xa + a32*2ya + a33). Это противоречит приведенному выше уравнению (xa,ya)->(xb,yb) - person binzhang; 11.01.2014
comment
@binzhang Хорошо, кажется, я понимаю, что ты имеешь в виду. Если изображение A масштабируется в два раза относительно своего центра, то изображение B должно быть увеличено в два раза вокруг проецируемого центра изображения A. Вот где возникает смещение перевода, да? - person Roger Rowland; 11.01.2014
comment
Думаю, я тоже понимаю, что вы имеете в виду. Спасибо. - person binzhang; 22.01.2014
comment
Может ли кто-нибудь дать отзыв о том, какая техника сработала? Или какой способ работал лучше? @binzhang - person Mustafa Aktaş; 13.10.2020

Два ответа неверны! Прости!

Правильный ответ с доказательством:

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

person schlodinger    schedule 16.06.2019
comment
Применение гомографии нелинейно. Это доказательство недостаточно. Допустим, у вас есть шкала s1 и шкала s2 (s1 ‹ s2), у вас есть гомография для s1 и у вас есть точки в s2, которые вы хотите спроецировать. Вариант 1: уменьшить масштаб точек, применить гомографию в s1, затем масштабировать точки обратно вверх. (вероятно, что вы имеете в виду, но неверное доказательство) Вариант 2: масштабировать гомографию, применить гомографию напрямую в s2. (мой ответ) - person jns; 07.04.2020
comment
дорогой @jns, если вы внимательно прочитаете доказательство, вы заметите, что я не менял никакое изображение (масштабирование и масштабирование, как вы упомянули), я просто вывел формулу для матрицы гомографии второго изображения без каких-либо предположений, демонстрация общая. - person schlodinger; 07.04.2020
comment
Итак, вы определяете H' как обратное масштабирование (S^-1), применяете гомографию (H), а затем уменьшаете обратно (S). Проблема в том, что применение гомографии к 2d точкам не является линейным преобразованием. - person jns; 07.04.2020

Я думаю, вы можете изменить гомографию для правильного масштаба. Предположим, что соответствия обозначаются с помощью x и y, а гомография отображает x в y. Если рассматривать масштабированные точки

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

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

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

Где заглавная буква pi (Π) обозначает перспективное преобразование (простое деление компонентов x и y трехмерного вектора на его компонент z). При отмене s у нас будет уравнение, необходимое для применения гомографии в другом масштабе. Здесь H_s можно прочитать из предыдущего уравнения как:

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

Если вы вычисляете гомографию в масштабе, отличном от вашего «шкала приложения» (например, визуализация), вы должны просто вычислить H_s, где s — относительный коэффициент от нового масштаб (обозначается простым числом) к старому масштабу. Например, если визуализация в два раза больше вычислений, выберите s = 0,5.

person jns    schedule 21.02.2018

Хм .. Я могу ошибаться, но я думаю, что оба ответа выше неверны.

См. https://en.wikipedia.org/wiki/Affine_transformation и Что означают элементы в матрице гомографии?

Как объясняет Википедия, масштабный коэффициент в матрице гомографии H равен

ScaleA = H[row = 0, column = 0] and ScaleB = H[row = 1, column = 1]

Перевод (влево, вправо, вперед, назад) будет

H[row = 0, column = 2] and H[row = 1, column = 2]

Остальные элементы гомографии представляют собой вращательную и сдвиговую составляющие.

Масштабные, вращательные и сдвиговые компоненты гомографии

person Community    schedule 03.05.2019