Почему перевод является нулевым вектором существенной матрицы - PullRequest
0 голосов
/ 05 мая 2018

В компьютерном зрении, если E является основной матрицей, а T является переводом, то

transpose(E)*T = 0. // or E*T=0, depending on how you define E

кажется известным результатом. Почему это так? что за интуиция за этим стоит?

1 Ответ

0 голосов
/ 05 мая 2018

Прежде чем говорить об интуиции, стоящей за этим, давайте сначала ответим на этот вопрос с символической точки зрения. Основная матрица часто определяется как

E=R*[T]_x

, где R - относительное вращение между двумя камерами, T - перевод, а [.]_x обозначает матрицу перекрестного произведения с T. Теперь ясно, что

E*T=R*[T]_x*T=0 //because the cross product of T with itself is null

Теперь мы знаем, что существенная матрица имеет ранг 2. Согласно теореме ранга это означает, что ядро ​​E имеет размерность 1. Таким образом, нулевое пространство E - это просто пространство, определенное alpha*T, где alpha - действительное число.


Теперь давайте обсудим интуицию. Я предлагаю вам нарисовать небольшую фигуру на бумаге, чтобы ее было проще визуализировать Отметим два фотоаппарата C_1 и C_2. Также отметим z 3d-точку, выраженную в системе координат C_2, и пусть y будет другой 3d-точкой, которая выражена относительно системы координат C_1. Во-первых, давайте спросим себя, что делает основная матрица, , т.е. , что означает уравнение y^t*E*z. Теперь рассмотрим плоскость L, определенную тремя точками C_1,C_2,z. Чтобы упростить ситуацию, давайте сначала рассмотрим случай, когда R==Identiy. В этой ситуации

y^t E * z= y^t * [T]_x * z 

и здесь [T]_x * z дает вам нормальный вектор плоскости L, поскольку [T]_x является не чем иным, как C_2-C_1 (или C_1-C_2, на самом деле не имеет значения для наших целей). Теперь, когда вы знаете, что нормальный вектор L равен [T]_x * z, вы можете видеть, что y^t * [T]_x *z делает проверку степени, в которой y лежит внутри L (как вы проверяете, лежит ли точка в плоскости? Вы видите, равен ли ноль скалярному произведению с нормалью плоскости, и именно это делает этот код.).

А что если R не является Личностью? Обратите внимание, что нормаль L, полученная с помощью [T]_x * z, выражается относительно системы координат C_2. Умножение на R преобразует этот вектор и выражает его в ссылке на C_1. Теперь, когда y и нормаль находятся в одной системе координат, вы можете проверить, "сколько" y находится внутри L.


Наконец, давайте вернемся к разработке и интуиции о том, почему T является пустым пространством E, мы можем просто увидеть, что нормальное значение L равно 0. Итак, это вырожденная плоскость, и любая точка w в трехмерном евклидовом пространстве лежит на ней, потому что w\t*0=0.

...