SymSeg: Model-Free Object Segmentation in Point Clouds Using the Symmetry Constraint.
BSD-3-CLAUSE License
SymSeg is a model-free method for segmenting objects and recovering their symmetries from multiple-view 3D pointclouds. The algorithm takes a pointcloud and an occupancy map of the scene as input and returns a set of object segmentation masks and corresponding symmetries. Please cite the following work if you use it for your research:
Ecins, Aleksandrs; Fermüller, Cornelia; Aloimonos, Yiannis (2018) Seeing Behing the Scene: Using Symmetry To Reason About Objects in Cluterred Environments. International Conference on Intelligent Robots. [Project Page]
This repository contains the C++ implementation of the algorithm and a sample test scene. Additional test scenes can be downloaded from the Cluttered Tabletop Dataset (160 Mb).
Tested in Ubuntu 14.04 and 16.04 with PCL 1.8.0 and Octomap 1.8.1
To checkout and build symseg in the build
directory, execute the following in a terminal:
git clone https://github.com/aecins/symseg.git
cd symseg
mkdir build
cd build
cmake ..
make -j
The examples
directory provides examples for three different segmentation modes:
rotational_segmentation
segments rotational objectsreflectional segmentation
segments reflectional objectsfull_segmentation
segments rotational objects first, then segment reflectional objectsTo segment the provided sample scene execute the following from the bin
directory:
./rotational_segmentation ../sample_scene
Additionally we provide code for detecting symmetries in pointclouds of single objects. Note that input pointclouds must contain a single object and must have consistently oriented normals. To detect symmetries execute from the bin
directory:
./reflectional_detection ../sample_object_cloud.ply