Что означают элементы в матрице гомографии?

Я новичок в обработке изображений, но я использую 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)