You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
From [1] page 4-5, the appropriate stackup of matrices for projecting velodyne data seems to be:
2D_point = P_rect_00 * R_rect_00 * T_cam0_velo * 3D_velo_point
However, this doesn't seem to directly apply to the odometry dataset. For example: dataset_path = "......../dataset" sequence = '00' dataset = pykitti.odometry(dataset_path, sequence, frames=range(0, 20, 5)) print("dataset.P_rect_00:\n{}".format(dataset.calib.P_rect_00)) # prints out a 3x4 matrix print("dataset.R_rect_00:\n{}".format(dataset.calib.R_rect_00)) # throws an error because R_rect_00 doesn't exist
From the latter, R_rect_00 is missing. Is this term somehow folded into the other matrices, or otherwise not needed? ie:
2D_point = P_rect_00 * T_cam0_velo * 3D_velo_point
Should it be grabbed from the raw API? (it's not immediately clear to me which R_rect_00 should be used, if so)
It would be very helpful if someone could shed light on this, as it seems projection of 3D points to 2D for the odometry dataset specifically is completely undocumented on the internet.
I did also notice that there exists "Compute the rectified extrinsics from cam0 to camN" on line 166: https://github.com/utiasSTARS/pykitti/blob/master/pykitti/odometry.py#L166
which is used (only) in the computation of T_cam1_velo/T_cam2_velo/T_cam2_velo and not made directly available. It is derived from P_rect_xx.
I can only guess that maybe the rectification has already been done or is already incorporated into the odometry dataset's data?
That would suggest that perhaps R_rect_00 could be skipped over as above?
Hello,
I am trying to project velodyne (and eventually SLAM) 3D points to 2D image coordinates (say, for camera 0) for the kitti odometry dataset. https://www.cvlibs.net/datasets/kitti/eval_odometry.php
From [1] page 4-5, the appropriate stackup of matrices for projecting velodyne data seems to be:
2D_point = P_rect_00 * R_rect_00 * T_cam0_velo * 3D_velo_point
However, this doesn't seem to directly apply to the odometry dataset. For example:
dataset_path = "......../dataset"
sequence = '00'
dataset = pykitti.odometry(dataset_path, sequence, frames=range(0, 20, 5))
print("dataset.P_rect_00:\n{}".format(dataset.calib.P_rect_00)) # prints out a 3x4 matrix
print("dataset.R_rect_00:\n{}".format(dataset.calib.R_rect_00)) # throws an error because R_rect_00 doesn't exist
Simply put, https://github.com/utiasSTARS/pykitti/blob/master/pykitti/raw.py defines P_rect_00, R_rect_00, T_cam0_velo, and K_cam0
Meanwhile, https://github.com/utiasSTARS/pykitti/blob/master/pykitti/odometry.py only defines P_rect_00, T_cam0_velo, and K_cam0
From the latter, R_rect_00 is missing. Is this term somehow folded into the other matrices, or otherwise not needed? ie:
2D_point = P_rect_00 * T_cam0_velo * 3D_velo_point
Should it be grabbed from the raw API? (it's not immediately clear to me which R_rect_00 should be used, if so)
It would be very helpful if someone could shed light on this, as it seems projection of 3D points to 2D for the odometry dataset specifically is completely undocumented on the internet.
Thanks,
-Matthew
[1] https://www.cvlibs.net/publications/Geiger2013IJRR.pdf Vision meets Robotics: The KITTI Dataset
https://www.cvlibs.net/publications/Geiger2012CVPR.pdf is sparse on equivalent instructions.
The text was updated successfully, but these errors were encountered: