一些预定义的边,如EdgeProjectXYZ2UV, EdgeSE3ProjectXYZ
,在BA中被广泛使用。但是,他们只能设置不可更改的相机参数。我想知道我是否可以设置可优化的相机参数。
感谢您的提前回复!
我在g2o/types/sba/vertex_intrinsics.h
中找到顶点VertexIntrinsics
。实现了oplusImpl()
函数,可以对其进行优化。
/**
* brief Vertex encoding the intrinsics of the camera fx, fy, cx, xy, baseline;
*/
class G2O_TYPES_SBA_API VertexIntrinsics : public BaseVertex<4, Eigen::Matrix<number_t, 5, 1, Eigen::ColMajor> >
这似乎就是我要找的那个。然而,我找不到一种类型的Ternary-Edge来连接这个顶点、相机姿态顶点和3D世界点顶点。或者任何其他以这种顶点为顶点的边
如果有人能分享一个例子或解释一下这个顶点是如何工作的,那就太好了。或任何其他方法来优化相机内在的g20。
我设法通过定义连接相机固有顶点(VertexIntrinsics),相机姿态顶点(VertexSE3或VertexSE3Expmap)和观察目标(顶点SE3在我的情况下,或VertexPointXYZ)的三元边缘来解决它。图中只有一个VertexIntrinsics
如果你正在寻找一个三元边的例子,检查edge_project_psi2uv.h。
感谢@RainerKuemmerle的出色工作。