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 дает только относительный перевод.