Global Orthographic Object Descriptor (GOOD)
The Global Orthographic Object Descriptor (GOOD) has been designed to be robust, descriptive and efficient to compute and use. GOOD descriptor has two outstanding characteristics:
The performance of the proposed object descriptor is compared with the main state-of-the-art descriptors. Experimental results show that the overall classification performance obtained with GOOD is comparable to the best performances obtained with the state-of-the-art descriptors. Concerning memory and computation time, GOOD clearly outperforms the other descriptors. Therefore, GOOD is especially suited for real-time applications.
The current implementation of GOOD descriptor supports several functionalities for 3D object recognition and Object Manipulation.
This is an implementation of the GOOD descriptor, which has been presented in the following papers.
Please adequately refer to the papers any time this code is being used.
If you do publish a paper where GOOD descriptor helped your research, we encourage you to cite the following papers in your publications.
@article{GOODPRL,
title = "GOOD: A global orthographic object descriptor for 3D object recognition and manipulation",
journal = "Pattern Recognition Letters",
volume = "83",
pages = "312 - 320",
year = "2016",
note = "Efficient Shape Representation, Matching, Ranking, and its Applications",
issn = "0167-8655",
doi = "http://dx.doi.org/10.1016/j.patrec.2016.07.006",
url = "http://www.sciencedirect.com/science/article/pii/S0167865516301684",
author = "S. Hamidreza Kasaei and Ana Maria Tomé and Luís Seabra Lopes and Miguel Oliveira",}
@INPROCEEDINGS{GOODIROS,
author={S. H. Kasaei and L. Seabra Lopes and A. M. Tomé and M. Oliveira},
booktitle={2016 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)},
title={An orthographic descriptor for 3D object learning and recognition},
year={2016},
pages={4158-4163},
doi={10.1109/IROS.2016.7759612},
url="http://ieeexplore.ieee.org/document/7759612/"
month={Oct},}
The GOOD descriptor code is released under the BSD License. A version of this code under a different licensing agreement, intended for commercial use, is also available. Please contact if interested.
The required dependencies are Point Cloud Library, Boost and Eigen:
sudo add-apt-repository ppa:v-launchpad-jochen-sprickerhof-de/pcl
sudo apt-get update
sudo apt-get install libpcl-all
hg clone https://bitbucket.org/eigen/eigen/
cd build
cmake ..
sudo make install
We provide a CMakeLists.txt, therefore, the code can be build over different compilers and platforms by making use of CMake.
mkdir build
cd build
cmake ..
make
In the current distribution you can find:
First of all you will need a point cloud in PCD or PLY format. For your convenience, we have provided a set of sample point clouds in both PLY and PCD format in a folder named “point_cloud”.
The syntax for runing the sample code is:
./test_GOOD_descriptor <path/file_name.pcd> [--nogui]
./test_GOOD_descriptor <path/file_name.ply> [--nogui]
./test_GOOD_descriptor ../point_cloud/vase.pcd
./test_GOOD_descriptor ../point_cloud/vase.pcd --nogui
To show all the functionalities and properties of the GOOD descriptor, a demonstration in real time was performed.
A video of this demonstration is available in: https://youtu.be/iEq9TAaY9u8