OpenCV - правильно восстановитьПозу после findEssentialMat

У меня есть правильные соответствия между последовательными кадрами, и мне нужно оценить преобразование между ними, чтобы создать траекторию. В следующем конвейере C++ сгенерированная траектория не имеет смысла.

auto EssentialMatrix = cv::findEssentialMat(points_previous,
                                            points_current, 
                                            camera_focal_length, 
                                            camera_principal_point,
                                            cv::RANSAC, 
                                            0.999, 
                                            1.0, 
                                            mask);

auto inliers = cv::recoverPose(EssentialMatrix, 
                points_previous, 
                points_current, 
                CameraMatrix, 
                R, 
                t, 
                mask);

t_pos_ = t_pos_ + 1.0 *(R_pos_*t);  
R_pos_ = R * R_pos_;             

Итак, мой вопрос: как правильно восстановить преобразование между двумя последовательными кадрами с помощью утилит C++ OpenCV? Требуются ли для этого дополнительные шаги?

1 ответ

Я действительно понятия не имею, в чем твоя проблема. Постарайтесь указать, каков вход, каков "ваш ожидаемый результат", каков фактический результат.

Но я знаю, где найти образец https://github.com/avisingh599/mono-vo

попробуйте взглянуть на образец здесь. Это чистая оценка на основе 2D в 2D, основанная на opencv. Единственное отличие состоит в том, что они используют набор данных для настройки масштаба вектора перемещения. Одно только 2D в 2D дает только относительный перевод.

http://www.youtube.com/watch?v=homos4vd_Zs

Другие вопросы по тегам