Я создал простое тестовое приложение для выполнения перевода ( T ) и вращения ( R ) из основной матрицы.
- Создание 50 случайных Точки .
- Расчет проекции ТочкаSet1 .
- Преобразование Точки через матрицу ( R | T ).
- Рассчитать новую проекцию pointSet2 .
- Затем вычислите фундаментальную матрицу F .
- Извлечение необходимой матрицы, например
E = K2^T F K1
(K1, K2
- внутренние матрицы камеры). - Используйте SVD для получения
UDV^T
.
и рассчитать restoredR1 = UWV^T
, restoredR2 = UW^T
.И видите, что один из них равен начальному R .
Но когда я вычисляю вектор перевода, restoredT = UZU^T
, я нормализуюсь T .
restoredT*max(T.x, T.y, T.z) = T
Как восстановить правильный вектор перевода?