https://github.com/RMonica/surfels_unknown_space_example
Tip revision: 491b80c13e3f5581fea1d9359d6b4ca90d5fbacb authored by RMonica on 12 May 2020, 17:28:31 UTC
Initial commit.
Initial commit.
Tip revision: 491b80c
README.md
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.