Матрица камеры из основной матрицы

Я пытаюсь извлечь матрицу камеры из основной матрицы. Я нашел несколько ответов по этому поводу.

определить матрицу вращения и перемещения камеры из основной матрицы

Вращение и перевод из основной матрицы неверны

В этих ответах мне предлагают использовать newE, где [U,S,V] = svd(E) и newE = U*diag(1,1,0)*Vt. Я не понимаю, зачем мне нужно использовать newE. Насколько я знаю, сингулярные значения уникальны. Таким образом, изменение единственного числа на diag(1,1,0), по-видимому, делает E совершенно другим значением.

Я также читал «Геометрия с множественным представлением в компьютерном зрении», но это просто относится к идеальному случаю, то есть сингулярные значения равны (1,1,0). Я не нашел причину использования newE.

Пожалуйста, кто-нибудь может объяснить мне, почему люди используют newE?


person Bahamut    schedule 17.01.2017    source источник


Ответы (1)


Если я правильно понимаю ваш вопрос, то, поскольку исходные данные (и, следовательно, E) обычно представляют собой зашумленные данные реального мира, то, используя diag(1,1,0), вы ограничиваете матрицу правильным масштабом и рангом и алгебраически применяете геометрические ограничения.

В Википедии также есть хороший раздел, объясняющий это.

person Adi Shavit    schedule 17.01.2017
comment
Спасибо за Ваш ответ. Таким образом, ограничения могут быть удовлетворены, но результат кажется неверным. Является ли результат достаточно надежным? - person Bahamut; 18.01.2017