PCL Developers blog

Mattia Di Gaetano

project:Automated Noise Filtering (ANF)
mentor(s):Jorge Hernandez, Federico Tombari

About me

I recently achieved my Masters Degree in Automation and Control Systems studying one year at the Marche Polytechnic University in Italy, and one year at the Technical University of Denmark (DTU).

During my master’s thesis I used for the first time the Point Cloud Libraries. The thesis entitled “Stereo Vision Based Object Detection for Mobile Robots”, was mostly aimed at the recognition of obstacles using stereo vision in an outdoor environment (in particular a forest scenario). Thanks to this work, I raised a big interest for the problems related to the use of point clouds to describe the environment.


  • Know more about the repository, REsT and organize the workspace.
  • Make contact with Florentinus to discuss about ideas and goals.
  • Make contact with the mentor(s) to know more about the state of the art in point cloud filtering.
  • Prepare a software tool to easily test the algorithms.
  • Collect different datasets for algorithm testing.
  • Report and document the existing filtering methods in PCL for this sprint purposes.
  • Brainstorm with the mentors for new filtering ideas.
  • Clustering/Segmentation of the cloud for noise recognition.
  • Test SVM and kNN for cluster classification.
  • Elaborate a localizer for a faster cloud decomposition and noise localization.
  • Study 2D segmentation algorithms for a pre-segmentation of organized clouds.
  • Build up a final pipeline for an automated noise filtering.
  • Code optimization.

Recent status updates

Tests and report
Saturday, May 26, 2012

I’m working on a smart clustering algorithm which will improve the segmentation accuracy of a cloud based on the region growing algorithm. In the meantime I’m finishing the SVN classifier and I’ll be ready to put it into PCL very soon.

In this period, I had to work also for some projects in my place; so I haven’t been spending too much time for the final report of the automated noise filtering plugin. I give me one week as a deadline to finish it.

Last modifies for the final program
Saturday, May 05, 2012

The last weeks I’ve been also busy with some works in my town. I just finished my part of the “final noise removal system” and I aim to finish the report for in the next few days. Our work is finally returning promising results but we still need a feedback from our mentors to improve the solution.

Completing modules for PCL
Friday, April 20, 2012

The last days I’ve been working on two methods I would like to put into PCL. The first regards the contour extraction of objects in a cloud, the second is the Support Vector Machine. Two issues have been threw at:

From tomorrow I’ll work at the system that I and Florentinus are setting up. I will have to work on a smart way to easily train a classifier.

Principal Component Analysis for edges and contours extraction
Monday, April 16, 2012

PCA (principal component analysis) is a simple method to extract information from a set of data. Geometrically, its objective is to present the data from the reference axes that mainly highlights their structure.

The idea was to give a meaning to points depending on their positions and using the PCA. For each point I extracted the k-neighbors, calculated the PCA (from the centroid) and analyzed the eigenvalues. While the eigenvectors give the direction of the axes along which the data are extended, the eigenvalues ​​are their length.

From a geometrical point of view, three eigenvalues ​​of equal magnitude represents a uniform distribution of a solid; a limited distribution on two axes represents a plane, while a distribution skewed on a single eigenvalue represents a line. Carrying this theory on a cloud of points, we have that points in the proximity of the edges has one eigenvalue much larger than the other. For the inner points, in case of uniform distribution of the point density, the length of the eigenvalues ​​will be better distributed along all the three eigenvectors.

Normalizing the three eigenvectors, we have that in correspondence of a contour or an angle of an object the largest eigenvalue is a value greater than 2/3 (about 66%) of the total propagation of the points. The results are shown below.

../../_images/1.jpg ../../_images/2.jpg
First Automated Noise Filtering program
Thursday, April 12, 2012

Yesterday, I sent to Jorge the first revision of the program that implements the pipeline designed for the removal of vegetation and ghost points. The program, designed by me and Florentinus, segments the image into large groups which are then classified.

The biggest problem encountered is related to the number of samples needed for optimal training of the classifier. Dividing the cloud into large groups, these samples are too few to make this happens. So we think of a more refined method for the recognition of the problems.

Since Florentinus will be busy this week, I will concentrate on implementing a filtering algorithm based on Principal Component Analysis. Throught this approach it’s possible the filtering of lines (1D), flat surfaces (2D) and solid objects (3D). More details will come up soon.