Skip to content

exporting keyframe poses and reconstructing RGBD point clouds in Open3D #1427

@elo-zed

Description

@elo-zed

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

  1. What exactly is the coordinate convention of the exported poses?

    • Camera → World ?
    • World → Camera ?
  2. Should the exported local_transform be applied when reconstructing point clouds outside RTAB-Map?

  3. When exporting keyframe images and poses, is there a guaranteed one-to-one correspondence between:

    • exported RGB image
    • exported depth image
    • exported pose
  4. 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?

  5. 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!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions