Question about exporting keyframe poses and reconstructing RGBD point clouds in Open3D
Hi,
I'm using RTAB-Map with RGB-D data captured from an Intel RealSense D405. The reconstruction shown in RTAB-Map is very good, but I'm having trouble reproducing the same result in Open3D using the exported keyframes and poses.
Dataset
Camera: Intel RealSense D405
Calibration exported by RTAB-Map:
camera_matrix:
data: [437.56, 0., 424.37,
0., 436.316, 250.56,
0., 0., 1.]
local_transform:
data: [0., 0., 1., 0.,
-1., 0., 0., 0.,
0., -1., 0., 0.]
Depth images are uint16 PNGs, and depth values are around 1000 at approximately 1 meter distance.
Example pose exported by RTAB-Map:
[[ 0. 0. 1. 0. ]
[-1. 0. 0. 0. ]
[ 0. -1. 0. 0. ]
[ 0. 0. 0. 1. ]]
What I am doing
I export:
- Keyframe RGB images
- Keyframe depth images
- Keyframe poses
Then in Open3D:
rgbd = o3d.geometry.RGBDImage.create_from_color_and_depth(
color,
depth,
depth_scale=1000.0,
depth_trunc=0.6,
convert_rgb_to_intensity=False
)
pcd = o3d.geometry.PointCloud.create_from_rgbd_image(
rgbd,
intrinsic
)
pcd.transform(pose)
I merge all keyframe point clouds using the exported poses.
Problem
The reconstruction obtained in Open3D is significantly different from what RTAB-Map shows in the 3D view.
RTAB-Map reconstruction looks correct, while the Open3D reconstruction is distorted/misaligned even though the same keyframes and poses are used.
Questions
-
What exactly is the coordinate convention of the exported poses?
- Camera → World ?
- World → Camera ?
-
Should the exported local_transform be applied when reconstructing point clouds outside RTAB-Map?
-
When exporting keyframe images and poses, is there a guaranteed one-to-one correspondence between:
- exported RGB image
- exported depth image
- exported pose
-
For RealSense D405 depth images stored as uint16 (values around 1000 for 1 meter), what is the correct depth scaling expected by RTAB-Map internally?
-
Is there an example showing how to reconstruct the same point cloud outside RTAB-Map using:
- exported RGB images
- exported depth images
- exported poses
so that the result matches the RTAB-Map viewer?
Thanks!
Question about exporting keyframe poses and reconstructing RGBD point clouds in Open3D
Hi,
I'm using RTAB-Map with RGB-D data captured from an Intel RealSense D405. The reconstruction shown in RTAB-Map is very good, but I'm having trouble reproducing the same result in Open3D using the exported keyframes and poses.
Dataset
Camera: Intel RealSense D405
Calibration exported by RTAB-Map:
Depth images are uint16 PNGs, and depth values are around 1000 at approximately 1 meter distance.
Example pose exported by RTAB-Map:
What I am doing
I export:
Then in Open3D:
I merge all keyframe point clouds using the exported poses.
Problem
The reconstruction obtained in Open3D is significantly different from what RTAB-Map shows in the 3D view.
RTAB-Map reconstruction looks correct, while the Open3D reconstruction is distorted/misaligned even though the same keyframes and poses are used.
Questions
What exactly is the coordinate convention of the exported poses?
Should the exported
local_transformbe applied when reconstructing point clouds outside RTAB-Map?When exporting keyframe images and poses, is there a guaranteed one-to-one correspondence between:
For RealSense D405 depth images stored as uint16 (values around 1000 for 1 meter), what is the correct depth scaling expected by RTAB-Map internally?
Is there an example showing how to reconstruct the same point cloud outside RTAB-Map using:
so that the result matches the RTAB-Map viewer?
Thanks!