我是 ceres(非线性最小二乘)求解器和 C++ 模板编程的新手。通过下载发布在http://grail.cs.washington.edu/projects/bal/上的数据集,我已经成功安装了 ceres 求解器并在 ubuntu 上执行了 bundle_adjuster.cc 代码。我必须在项目中使用捆绑调整作为黑盒。我想打印经过优化的相机姿势,数据集的三维坐标。如何做到这一点,我应该在 bundle_adjuster.cc 中编辑什么以获得新的姿势矩阵和 3D 坐标。
谢谢。
我是 ceres(非线性最小二乘)求解器和 C++ 模板编程的新手。通过下载发布在http://grail.cs.washington.edu/projects/bal/上的数据集,我已经成功安装了 ceres 求解器并在 ubuntu 上执行了 bundle_adjuster.cc 代码。我必须在项目中使用捆绑调整作为黑盒。我想打印经过优化的相机姿势,数据集的三维坐标。如何做到这一点,我应该在 bundle_adjuster.cc 中编辑什么以获得新的姿势矩阵和 3D 坐标。
谢谢。
优化后的相机位姿和 3D 对象点位于 bal_problem 结构中:
double* points = bal_problem->mutable_points();
double* cameras = bal_problem->mutable_cameras();
它们只是带有双打的数组,每个 3D 点需要 3 个(X,Y,Z),每个相机需要 6 个(罗德里格斯角轴旋转加平移)双打。
所以对于点数组:X0 Y0 Z0 X1 Y1 Z1,...对于相机:R00 R10 R20 X0 Y0 Z0 R01 R21 R31 X1 Y1 Z1,...