1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
/**
\addtogroup features Module features
\section secFeaturesPresentation Overview
The <b>pcl_features</b> library contains data structures and mechanisms for 3D
feature estimation from point cloud data. <i>3D features</i> are
representations at a certain 3D point or position in space, which describe
geometrical patterns based on the information available around the point. The
data space selected around the query point is usually referred as the
<b>k-neighborhood</b>.
The following figure shows a simple example of a selected query point, and its
selected k-neighborhood.
\image html http://www.pointclouds.org/assets/images/contents/documentation/features_normal.png
An example of two of the most widely used geometric point features are the
underlying surface's estimated curvature and normal at a query point <b>p</b>.
Both of them are considered local features, as they characterize a point using
the information provided by its k closest point neighbors. For determining
these neighbors efficiently, the input dataset is usually split into smaller
chunks using spatial decomposition techniques such as octrees or kD-trees (see
the figure below - left: kD-tree, right: octree), and then closest point
searches are performed in that space. Depending on the application one can opt
for either determining a fixed number of k points in the vicinity of p, or all
points which are found inside of a sphere of radius r centered at p.
Unarguably, one the easiest methods for estimating the surface normals and
curvature changes at a point p is to perform an eigendecomposition (i.e.
compute the eigenvectors and eigenvalues) of the k-neighborhood point surface
patch. Thus, the eigenvector corresponding to the smallest eigenvalue will
approximate the surface normal n at point p, while the surface curvature change
will be estimated from the eigenvalues as:
<center>\f$\frac{\lambda_0}{\lambda_0 + \lambda_1 + \lambda_2}\f$, where \f$\lambda_0 < \lambda_1 < \lambda_2\f$.</center>
\image html http://www.pointclouds.org/assets/images/contents/documentation/features_bunny.png
Please visit http://www.pointclouds.org for more information.
\section secFeaturesRequirements Requirements
- \ref common "common"
- \ref search "search"
- \ref kdtree "kdtree"
- \ref octree "octree"
- \ref pcl::RangeImage "range_image"
*/
|