我用地面实况和 Velodyne 点云数据可视化了 KITTI 里程计数据集。 http://www.cvlibs.net/datasets/kitti/eval_odometry.php
在序列中的循环之后,相机位置的高度似乎不同。我不确定这是正常的还是我误解了一些东西。当您将此数据用作基本事实时,您修改了某些内容还是按原样使用它?
这是加载姿势 txt 文件的代码
std::ifstream infile;
infile.open(poses_path, std::ios::in);
assert(infile.good());
std::string l1;
while (getline(infile, l1)) {
double p00, p01, p02, p03;
double p10, p11, p12, p13;
double p20, p21, p22, p23;
if (std::sscanf(l1.c_str(),
"%lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf %lf",
&p00,&p01,&p02,&p03,
&p10,&p11,&p12,&p13,
&p20,&p21,&p22,&p23) == 12) {
}
else {
std::cerr << "Failed to read camera intrinsics!\n";
infile.close();
return;
}
Eigen::Matrix<double, 3, 3> R;
R << p00, p01, p02, p10, p11, p12, p20, p21, p22;
Eigen::Matrix<double, 3, 1> t;
t << p03, p13, p23;
Sophus::SE3d cam2World(R, t);
vCam2World.push_back(cam2World);
}
infile.close();
这是从附近水平观察的 3D 点云图像。如您所见,循环后的相机位置处于不同的高度。我将 Velodyne 数据转换为相机坐标上的深度值并进行了可视化。然后,汽车的点云也发生了一点偏移。
这是鸟瞰图,看起来不错。
这是一张叠加了 Velodyne 深度值的彩色图像。好像也不错。