Open LiKangyuLKY opened 2 years ago
想要请教的代码片段如下:
for (int i = 0; i < 4; ++i) { char camera_name[3]; for (int k = 0; k < 3; ++k) { fin >> camera_name[k]; } double projection_data[12]; for (int k = 0; k < 12; ++k) { fin >> projection_data[k]; } Mat33 K; K << projection_data[0], projection_data[1], projection_data[2], projection_data[4], projection_data[5], projection_data[6], projection_data[8], projection_data[9], projection_data[10]; Vec3 t; t << projection_data[3], projection_data[7], projection_data[11]; t = K.inverse() * t; K = K * 0.5; Camera::Ptr new_camera(new Camera(K(0, 0), K(1, 1), K(0, 2), K(1, 2), t.norm(), SE3(SO3(), t))); cameras_.push_back(new_camera); LOG(INFO) << "Camera " << i << " extrinsics: " << t.transpose(); }
这一部分代码从KITTI数据集的calib.txt中读取相机的配置参数,定义了投影矩阵projection_data[12]来读取。 请问这里记录的投影矩阵和相机的内外参之间有什么关系呢,为什么要用下面这两行代码来计算t和K?
t = K.inverse() * t; K = K * 0.5;
最后在LOG里记录的INFO应该是相机的外参吧,怎么是用t的转置?用的为啥不是R | t呢?
求这个数据集的具体链接
大佬这个问题解决了吗?最近刚入门,也在琢磨这个问题,我的困惑点和您一模一样
K = K * 0.5是因为输入图像缩放为原图的一半,所以内参也要缩放为原来的一半
想要请教的代码片段如下:
这一部分代码从KITTI数据集的calib.txt中读取相机的配置参数,定义了投影矩阵projection_data[12]来读取。 请问这里记录的投影矩阵和相机的内外参之间有什么关系呢,为什么要用下面这两行代码来计算t和K?
最后在LOG里记录的INFO应该是相机的外参吧,怎么是用t的转置?用的为啥不是R | t呢?