Правильный способ извлечь перевод из Essential Matrix через SVD
Я откалибровал свою камеру и нашел внутренние параметры (K). Также я рассчитал Фундаментальную Матрицу (F).
Теперь E = K_T * F * K. Все идет нормально.
Теперь мы передаем Основную Матрицу (E) в SVD, чтобы использовать значения разложения (U, W, V) для извлечения Вращения и Трансляции:
essentialMatrix = K.Transpose().Mul(fund).Mul(K);
CvInvoke.cvSVD(essentialMatrix, wMatrix, uMatrix, vMatrix, Emgu.CV.CvEnum.SVD_TYPE.CV_SVD_DEFAULT);
** Вопрос) На данный момент было предложено два метода, и меня смутило, какой из них действительно дает правильный ответ - специально для перевода:
На первый способвведите описание ссылки здесь Автор предлагает рассчитать R, T следующим образом:
Но во втором методе [http://isit.u-clermont1.fr/~ab/Classes/DIKU-3DCV2/Handouts/Lecture16.pdf] автор предоставляет другую формулу для T, которая равна + U, -U, как показано ниже:
Я реализую это на C # .Net с использованием библиотек openCv. Кто-нибудь знает, какая формула перевода является правильной?