What is the use case for Normal::curvature?

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view

What is the use case for Normal::curvature?

Stephen McDowell

I have what is likely a very naive question.  I was looking around the implementation of the IntegralImageNormalEstimation class (specifically, the covariance version), and as discussed in a few places, the curvature is computed.  (Implementation: https://github.com/PointCloudLibrary/pcl/blob/abf77fffd5b05140ebeb4cb71c204ad7458ae7c5/features/include/pcl/features/impl/integral_image_normal.hpp#L245-L249 ).

The only discussions I could find on the user list were about how to compute the curvature, or how to visualize it.  Would anybody be willing to link me to some documentation / papers / websites / tutorials / etc that explain what the use of the curvature is?

Where cloud is the input point cloud that contains the points, indices represents the set of k-nearest neighbors from cloud, and plane_parameters and curvature represent the output of the normal estimation, with plane_parameters holding the normal (nx, ny, nz) on the first 3 coordinates, and the fourth coordinate is D = nc . p_plane (centroid here) + p. The output surface curvature is estimated as a relationship between the eigenvalues of the covariance matrix (as presented above), as:

\sigma = \lambda_0 / (\lambda_0 + \lambda_1 + \lambda_2)

It seems to have a well defined formula, but I am having a hard time understanding what this value actually represents.  It seems like it would take on a different meaning when working with a range image (IntegralImageNormalEstimation) than if the normals are being computed from some kind of unstructured point cloud (e.g., via the centroid).

Sorry for what is likely such an obvious question, thank you for any insight!


[hidden email] / http://pointclouds.org