Introduction

A RGB-D camera outputs two different types of images: a traditional colorful image (RGB) and a Depth image. From this, it is possible to obtain a point clould that gives a 3D prespective of the space/object being capture. What would be nice, would be to able to have different images, also called frames, that allows to generate several point clouds that could be merged/integrated to have a more complete and reliable 3D reconstruction of the space/object.

A RGB-D camera outputs two different types of images: a traditional colorful image (RGB) and a depth image. From this, it is possible to obtain a point cloud that provides a 3D perspective of the space or object being captured. To enhance the accuracy and completeness of the 3D reconstruction, it would be beneficial to generate multiple point clouds from different images, or framegit s, captured from various viewpoints.

These multiple point clouds can then be merged or integrated to create a more comprehensive and reliable 3D representation of the scene or object. This approach, known as multi-view stereo or multi-view 3D reconstruction, leverages information from multiple viewpoints to overcome limitations such as occlusions, noise, and inaccuracies inherent in individual frames, resulting in a more accurate and detailed 3D model.

Open3D library has two tutorials that allows to easily reconstruct a 3D model from a given RGB-D dataset:

In the post, I will demonstrate how to follow these tutorials and obtain the results from the default datasets. And then, I will show how to replace them, with a dataset capture from a Kinect XBOX v1 camera.

Reconstruction System - Tutorials

Clone Open3D repository

Clone Open3D library from the GitHub repository:

# Clone the GitHub repository
git clone <https://github.com/isl-org/Open3D.git>

# Go to the example folder
cd examples/python/reconstruction_system/

Then, one just need to run the example. There are three available datasets:

  1. Lounge (keyword: lounge) (Default)
  2. Bedroom (keyword: bedroom)
  3. Jack Jack (keyword: jack_jack)

Download datasets

# The following command, will download and use the default dataset,
# which is 'lounge' dataset from stanford.
python run_system.py --default_dataset 'lounge' --make

It will take a few minutes for the dataset to be downloaded for the folder ‘/home/user/open3d_data/download’. In the terminal, it should appear something like this.

# Shell output
Loading Redwood Bedroom RGB-D Dataset
[Open3D INFO] Downloading <https://github.com/isl-org/open3d_downloads/releases/download/20220301-data/LoungeRGBDImages.zip>
...
...
...
# Error !!!
RuntimeError: [Open3D Error] (std::string open3d::utility::DownloadFromMirrors(const std::vector<std::basic_string<char> >&, const string&, const string&)) /root/Open3D/cpp/open3d/utility/Download.cpp:184: Downloading failed from available mirrors.