/surfels_unknown_space_example

Surfel-based 3D reconstruction algorithm for the boundary between known and unknown space

Primary LanguageC++

Surfels Unknown Space Example

Basic example to generate a results for Scenario 1 and Scenario 2, reported in the associated publication:

  • R. Monica and J. Aleotti, "Surfel-Based Incremental Reconstruction of the Boundary between Known and Unknown Space", IEEE Transactions on Visualization and Computer Graphics

Dependencies

  • Ubuntu 16.04 or 18.04
  • OpenCL C++ headers, version 2.0
  • OpenCL runtime, minimum version 1.1
  • PCL (Point Cloud Library)
  • Eigen3
  • CMake
  • unzip and wget (to download the dataset)

To install PCL, Eigen3 and CMake, run the script as root:

  # install_dependencies.sh

OpenCL installation depends on your OpenCL device (preferably an NVIDIA GPU).

If you are using an Intel CPU as OpenCL device, please uncomment the line

  config.opencl_use_intel = true;

in src/surfels_unknown_space_example.cpp to activate a workaround.

Note: This software was not tested on ATI/AMD.

Note: on most systems, after installing the OpenCL runtime, a suitable OpenCL C++ library and headers can be installed with the APT packages ocl-icd-opencl-dev and opencl-clhpp-headers.

Build

Standard CMake build is carried out by the script:

  build.sh

Dataset download

Run

  download_dataset.sh

to download (from rimlab.ce.unipr.it) and decompress the test dataset into the data folder.
About 7 GB will be downloaded. You will need about 30 GB of free disk space.

Running the example

Run

  run.sh

This can take from a few minutes to a few hours, depending on your system.

The following files will be created:

  • data/Scenario_1/output_cloud.pcd: surfel-based boundary for Scenario 1, in PCL PCD format.
  • data/Scenario_1/output_cloud.ply: surfel-based boundary for Scenario 1 as PLY mesh. Surfels are represented by hexagons.
  • data/Scenario_2/output_cloud.pcd: surfel-based boundary for Scenario 2, in PCL PCD format.
  • data/Scenario_2/output_cloud.ply: surfel-based boundary for Scenario 2 as PLY mesh. Surfels are represented by hexagons.

These surfel clouds are shown in the associated publication in Figure 12, top two rows.

The script

  compare.sh

in theory should output the data used to generate the left three columns of Table 2 in the associated publication, for Scenario 1 and 2. Unfortunately, the current parallel implementation of the surfels_unknown_space algorithm is non-deterministic, so actual numbers may vary.