This is an old revision of the document!
Table of Contents
Point Clouds Processing and Interpretation
Local Normal Vector Estimation
If the point cloud data represents an object as scanned from some device, usually the points lie on the surface of the object. So they are really 2D structurally speaking (local to each point), though they are in 3D. Let's write a function to estimate the local normals to the point cloud, plus one more to visualize them. There are actually two ways to perform the local normal estimation. Let's try out both.
- One is via principal component analysis, otherwise known as PCA.
- The other is using the SVD we know and love (by now).
For the sample point cloud file given, plot the normals. Do not really plot them all, but rather sub-sample the points array and only compute then plot the normals for those points. The Matlab example linked to in the discussion page for this problem (above link for local normal estimation) shows how to perform that.
Week #4: Clustering by Normal Structure
The connected component clustering does not do too well when different objects are actually connected, say because they are touching, or one is resting on the other. Usually, however, the objects might have differing local normals at the interface where they are touching. Let's add normal agreement to the connected component clustering to see how the normals can be used to differentiate parts of the scene.
Perform a region growing clustering strategy using the connected components for the region expansion candidate, and using the angular difference between normals to assess membership to the same cluster.
/*Read the slides on normal vector estimation.
For Matlab folks, an exemplar implementation of normal vector estimation can be found here. Try to implement your own estimator.
For PCL folks, you may refer to the sample code. Try to implement your own estimator. */