GSoC/GCI Archive
Google Summer of Code 2011

Point Cloud Library (PCL)

Web Page:

Mailing List:


The Point Cloud Library (PCL is an open source framework for point cloud processing. A point cloud is a data structure used to represent a collection of multi-dimensional points and is commonly used to represent three-dimensional data such as the output of a stereo camera, 3D scanner, or time-of-flight camera. The library contains numerous state-of-the art algorithms including filtering, feature estimation, surface reconstruction, registration, model fitting and segmentation. These algorithms can be used, for example, to filter outliers from noisy data, stitch 3D point clouds together, segment relevant parts of a scene, extract keypoints and compute descriptors to recognize objects in the world based on their geometric appearance, and create surfaces from point clouds and visualize them --- to name a few.

PCL is released under the terms of the BSD license and is open source software. It is free for commercial and research use.

Development of PCL is a large collaborative effort driven by researchers and engineers from many different institutions and companies around the world, including: AIST, UC Berkeley, University of Bonn, University of British Columbia, ETH Zurich, University of Freiburg, Intel Research Seattle, ITSeez, LAAS/CNRS, MIT, NVidia, Stanford University, TU Munich, University of Tokyo, Willow Garage, TU Wien, and WUSTL.

The use of PCL is instrumental for robotics applications, and with the advent of new, low-cost hardware such as Kinect-like sensors, PCL places a lot of functionality in the hands of end-users and developers all around the world that need to do something useful with their 3D data. The library is written entirely in C++ and makes use of Boost shared pointers for all its internal data structures. In order to support applications that require real time point cloud processing, PCL has been designed to take advantage of SSE instructions when available, and a GPU interface is currently under development in association with NVIDIA.

Just as OpenCV has united the field of Computer Vision and 2D perception, the Point Cloud Library aims to unite the field of point cloud processing. By providing an extensible framework for all the geometric algorithms necessary for 3D perception, PCL enables developers to create applications limited by their imaginations, rather than their 3D geometric knowledge.

Our code repository can be found here:


  • Fast Approximate Nearest Neighbors (KDTree) on GPU In this project, I would like to implement an approximate nearest neighbor search for point clouds on the GPU. The goal is to achieve a performance that surpasses the performance on CPUs of similar cost. For this purpose, the use of the KDTree data structure on a GPU would be evaluated. Should the performance prove to be not satisfactory, other data structures for nearest neighbor search would be evaluated.
  • Fast Approximate Nearest Neighbors (KDTree) on GPU/multi-core The task of computing nearest neighbors in n-D point cloud data is at the core of many algorithms in PCL, optimizing this would result in a speedup across many parts of PCL. Currently, the nearest-neighbor searches in PCL are performed on CPU, using a kd-tree data structure which is known to be efficient for searching low dimensionality spaces.
  • Fast Approximate Nearest Neighbours (KDTree) on GPU/multi-core The task of computing nearest neigbours in n-D point cloud data is at the core of many algorithms in PCL, optimising this would result in a speed-up across many parts of PCL. Parallellisation is the key to this speed-up, be it on CPU or GPU. The parallellisation a GPU offers is perfect for optimising this core bottleneck. The kd-tree data structure is not a straight fit for GPU parallellisation, so there is the need for an adapted kd-tree data structure that is suitable for a GPU implementation
  • Geometric Object Recognition I would like to implement several methods of object detection in point clouds and improve them where possible. I believe I have technical and research background required for the project.
  • Improve Documentation and Tutorials My primary goal for this project is to write examples and tutorials for existing classes and methods that do not already have documentation. I also will be improving upon the existing documentation and tutorials that are currently provided by the Point Cloud Library.
  • Point Cloud Registration Implementing algorithms for identifying common features between multiple point clouds, designing a framework for efficiently comparing clouds and their features to quickly determine which pairs can be registered, and implementing a global optimization algorithm to solve the joint registration problem.
  • Point Cloud Registration Using 3D perception sensors as stereo camera or laser scanner, the perceived environment and objects are described by many sets of +3D points called Point Clouds (PC). Moving the sensor, the returned PCs overlap more or less. The goal is to align (register) the acquired PCs in order to get a more complete description of the environment. This project aims to implement and improve already existing state of the art methods used for PCs registration and using acquired experience propose a new method
  • Point cloud registration and Geometric object recognition After a discussion I had with one of the mentors of the Pointclouds project, the project ideas I am applying for have relatively fixed milestones and deliverables, so I do not have anything to add in this respect.
  • Surface reconstruction with textures Reconstructing a textured surface, given a point cloud
  • Surface Reconstruction with Textures Surface models are widely used in robotics for several purposes like object detection, -recognition, -manipulation or simulations. In this project we want to implement robust state-of-the-art textured surface reconstruction methods for a general purpose object recognition and manipulation database for a large number of objects. These methods sit on top of the large number of available algorithms already implemented in PCL.