Что означают элементы в матрице гомографии?
Я новичок в обработке изображений, но я использую EMGU для анализа изображений c#. Однако я знаю, что матрица гомографии не уникальна для EMGU, и поэтому, возможно, кто-то со знанием другого языка может объяснить лучше.
пожалуйста (в максимально упрощенном виде) может кто-нибудь объяснить, что делает каждый элемент. Я посмотрел это в интернете, но не могу найти ответ, который я могу правильно понять (как я уже сказал, Я новичок во всем этом!)
Я анализирую 2 изображения, оба 2-мерные. Поэтому для учета вращения / перевода изображения необходима матрица 3x3. Если движение не обнаружено, матрица гомографии: Сто, Ноль десять, 001
Я знаю из исследований (например,OpenCV Гомография, преобразование точки, что делает этот код?), что: 10Tx, 01Ty, XXX
бит 10,01-это вращение координат x и Y. Биты Tx и Ty являются поступательным движением, но что такое бит XXX? Вот чего я не понимаю? Это что-то связанное с аффинными преобразованиями? Пожалуйста, кто-нибудь объяснит: 1. Если я сейчас прав в том, что говорю выше. 2. что означает XXX бит
2 ответов
это не так сложно понять, если у вас есть понимание умножения матрицы. Предположим, вы указываете x
is
/a\
\b/,
и вы хотите, чтобы повернуть систему координат A
:
/3 4\
6/
и "переместить" его t
/2\
/.
последние матрицы являются компонентами аффинного преобразования, чтобы получить новую точку y
:
y = A*x + t = <a'; b'>T //(T means transposed).
как вы знаете, чтобы получить это, можно построить 3D-матрицу B
и вектора x'
глядя, как
/3 4 2\ /a\
B = |5 6 2| , x' = |b|
0 1/ /
такое, что
/a'\
y' = |b'| = B*x'
\ 1/
из которого вы можете извлечь y
. Посмотрим, как это работает. В исходном преобразовании (с использованием сложения) первым шагом было бы выполнить умножение, т. е. вращающаяся часть y_r
:
y_r = A*x = <3a+4b; 5a+6b>T
затем вы добавляете "абсолютную" часть:
y = y_r + t = <3a+4b+2; 5a+6b+2>T
теперь посмотрите, как B
строительство. Я рассчитаю y'
строки ряд:
1) a' = 3*a + 4*b + 2*1
2) b' = 5*a + 6*b + 2*1
3) the rest: 0*a + 0*b + 1*1 = 1
просто то, что мы ожидали. Сначала вычисляется часть вращения-сложение и умножение. Затем добавляется x-часть трансляционной части, умноженная на 1
--он остается прежним. То же самое во втором ряду.
в третьем ряду, a
и b
отбрасываются (умножаются на 0
). Последняя часть сохраняется прежней и оказывается 1
. Итак, все об этой последней строке - "отбросить" значения точки и сохранить the 1
.
тогда можно утверждать, что для этого достаточно матрицы 2x3. Это частично верно, но имеет один существенный недостаток: вы теряете композиционность. Предположим, вы в основном удовлетворены B
, но хочу отразить одну координату. Тогда вы можете выбрать другую матрицу преобразования
/-1 0 0\
C = | 0 1 0|
\ 0 0 1/
и в результате
y'' = C*B*x' = <-3a+4b+2; 5a+6b+2; 1>T
это простое умножение не может быть сделано так легко с матрицами 2x3, просто из-за свойств умножения матрицы.
в принципе, в приведенной выше последней строке (XXX
) также может быть что-нибудь еще из формы <0;0;x>
. Это было просто, чтобы отбросить значения точек. Однако необходимо точно так же, как это, заставить композицию путем умножения работать.
наконец, Википедия кажется мне довольно информативным в этом случае.
(@Anybody: как можно заметить, я не математик. Думаю, я ... понять концепцию, но если есть ошибки или чего-то не хватает, пожалуйста, дайте мне знать.)
прежде всего аффинные преобразования-это те, которые сохраняют прямые линии и могут иметь произвольную размерность
Гомография описывает отображение в двух плоскостях или то, что происходит во время чистого вращения камеры.
последняя строка представляет различные ножницы (то есть, когда x является функцией обоих x, y)