【问题标题】:Bundle Adjustment for Ceres SolverCeres 求解器的捆绑调整
【发布时间】:2015-12-14 22:04:52
【问题描述】:
我是 ceres(非线性最小二乘)求解器和 c++ 模板编程的新手。通过下载发布在http://grail.cs.washington.edu/projects/bal/ 上的数据集,我已经成功安装了 ceres 求解器并在 ubuntu 上执行了 bundle_adjuster.cc 代码。我必须在项目中使用捆绑调整作为黑盒。我想打印经过优化的相机姿势,数据集的三维坐标。如何做到这一点,我应该在 bundle_adjuster.cc 中编辑什么以获得新的姿势矩阵和 3D 坐标。
谢谢。
【问题讨论】:
标签:
c++
mathematical-optimization
ceres-solver
【解决方案1】:
优化后的相机位姿和 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,...