Point Cloud Library (PCL)  1.12.0
/builddir/build/BUILD/pcl-1.12.0/sample_consensus/sample_consensus.doxy
1 /**
2  \addtogroup sample_consensus Module sample_consensus
3 
4  \section secSampleConsensusPresentation Overview
5 
6  The <b>pcl_sample_consensus</b> library holds SAmple Consensus (SAC) methods like
7  <a href="http://en.wikipedia.org/wiki/RANSAC">RANSAC</a> and models like planes and cylinders. These can be
8  combined freely in order to detect specific models and their parameters in point clouds.
9 
10  Some of the models implemented in this library include: lines, planes, cylinders, and spheres. Plane fitting
11  is often applied to the task of detecting common indoor surfaces, such as walls, floors, and table tops.
12  Other models can be used to detect and segment objects with common geometric structures (e.g., fitting a cylinder
13  model to a mug).
14 
15  \image html http://www.pointclouds.org/assets/images/contents/documentation/sample_consensus_planes_cylinders.png
16 
17  The following models are supported:
18  <ul>
19  <li>\link pcl::SampleConsensusModelPlane SACMODEL_PLANE \endlink - used to determine plane models. The <b>four</b> coefficients of the plane are its <a href="http://mathworld.wolfram.com/HessianNormalForm.html">Hessian Normal form</a>: [<b>normal_x normal_y normal_z d</b>]</li>
20  <li>\link pcl::SampleConsensusModelLine SACMODEL_LINE \endlink - used to determine line models. The <b>six</b> coefficients of the line are given by a point on the line and the direction of the line as: [<b>point_on_line.x point_on_line.y point_on_line.z line_direction.x line_direction.y line_direction.z</b>]</li>
21  <li>\link pcl::SampleConsensusModelCircle2D SACMODEL_CIRCLE2D \endlink - used to determine 2D circles in a plane. The circle's <b>three</b> coefficients are given by its center and radius as: [<b>center.x center.y radius</b>]</li>
22  <li>\link pcl::SampleConsensusModelCircle3D SACMODEL_CIRCLE3D \endlink - used to determine 3D circles in a plane. The circle's <b>seven</b> coefficients are given by its center, radius and normal as: [<b>center.x, center.y, center.z, radius, normal.x, normal.y, normal.z</b>]</li>
23  <li>\link pcl::SampleConsensusModelSphere SACMODEL_SPHERE \endlink - used to determine sphere models. The <b>four</b> coefficients of the sphere are given by its 3D center and radius as: [<b>center.x center.y center.z radius</b>]</li>
24  <li>\link pcl::SampleConsensusModelCylinder SACMODEL_CYLINDER \endlink - used to determine cylinder models. The <b>seven</b> coefficients of the cylinder are given by a point on its axis, the axis direction, and a radius, as: [<b>point_on_axis.x point_on_axis.y point_on_axis.z axis_direction.x axis_direction.y axis_direction.z radius</b>]</li>
25  <li>\link pcl::SampleConsensusModelCone SACMODEL_CONE \endlink - used to determine cone models. The <b>seven</b> coefficients of the cone are given by a point of its apex, the axis direction and the opening angle, as: [<b>apex.x, apex.y, apex.z, axis_direction.x, axis_direction.y, axis_direction.z, opening_angle</b>]</li>
26  <li>SACMODEL_TORUS - not implemented yet</li>
27  <li>\link pcl::SampleConsensusModelParallelLine SACMODEL_PARALLEL_LINE \endlink - a model for determining a line <b>parallel</b> with a given axis, within a maximum specified angular deviation. The line coefficients are similar to \link pcl::SampleConsensusModelLine SACMODEL_LINE \endlink.</li>
28  <li>\link pcl::SampleConsensusModelPerpendicularPlane SACMODEL_PERPENDICULAR_PLANE \endlink - a model for determining a plane <b>perpendicular</b> to a user-specified axis, within a maximum specified angular deviation. The plane coefficients are similar to \link pcl::SampleConsensusModelPlane SACMODEL_PLANE \endlink.</li>
29  <li>SACMODEL_PARALLEL_LINES - not implemented yet</li>
30  <li>\link pcl::SampleConsensusModelNormalPlane SACMODEL_NORMAL_PLANE \endlink - a model for determining plane models using an additional constraint: the surface normals at each inlier point has to be parallel to the surface normal of the output plane, within a maximum specified angular deviation. The plane coefficients are similar to \link pcl::SampleConsensusModelPlane SACMODEL_PLANE \endlink.</li>
31  <li>\link pcl::SampleConsensusModelNormalSphere SACMODEL_NORMAL_SPHERE \endlink - similar to \link pcl::SampleConsensusModelSphere SACMODEL_SPHERE \endlink, but with additional surface normal constraints.</li>
32  <li>\link pcl::SampleConsensusModelParallelPlane SACMODEL_PARALLEL_PLANE \endlink - a model for determining a plane <b>parallel</b> to a user-specified axis, within a maximum specified angular deviation. The plane coefficients are similar to \link pcl::SampleConsensusModelPlane SACMODEL_PLANE \endlink.</li>
33  <li>\link pcl::SampleConsensusModelNormalParallelPlane SACMODEL_NORMAL_PARALLEL_PLANE \endlink defines a model for 3D plane segmentation using additional surface normal constraints. The plane normal must lie <b>parallel</b> to a user-specified axis. SACMODEL_NORMAL_PARALLEL_PLANE therefore is equivalent to SACMODEL_NORMAL_PLANE + SACMODEL_PERPENDICULAR_PLANE. The plane coefficients are similar to \link pcl::SampleConsensusModelPlane SACMODEL_PLANE \endlink.</li>
34  <li>\link pcl::SampleConsensusModelStick SACMODEL_STICK \endlink - a model for 3D stick segmentation. A stick is a line with a user given minimum/maximum width.</li>
35  </ul>
36 
37  The following list describes the robust sample consensus estimators implemented:
38  <ul>
39  <li><a href="http://en.wikipedia.org/wiki/RANSAC">SAC_RANSAC</a> - RANdom SAmple Consensus</li>
40  <li><a href="https://www-sop.inria.fr/odyssee/software/old_robotvis/Tutorial-Estim/node25.html">SAC_LMEDS</a> - Least Median of Squares</li>
41  <li><a href="https://www.robots.ox.ac.uk/~vgg/publications/2000/Torr00/torr00.pdf">SAC_MSAC</a> - M-Estimator SAmple Consensus</li>
42  <li><a href="https://web.archive.org/web/20170811194151/http://www.bmva.org/bmvc/2002/papers/50/full_50.pdf">SAC_RRANSAC</a> - Randomized RANSAC</li>
43  <li><a href="https://web.archive.org/web/20170811194151/http://www.bmva.org/bmvc/2002/papers/50/full_50.pdf">SAC_RMSAC</a> - Randomized MSAC</li>
44  <li><a href="https://www.robots.ox.ac.uk/~vgg/publications/2000/Torr00/torr00.pdf">SAC_MLESAC</a> - Maximum LikeLihood Estimation SAmple Consensus</li>
45  <li><a href="http://cmp.felk.cvut.cz/~matas/papers/chum-prosac-cvpr05.pdf">SAC_PROSAC</a> - PROgressive SAmple Consensus</li>
46  </ul>
47 
48  By default, if you're not familiar with most of the above estimators and how they operate, use RANSAC to test your hypotheses.
49 
50  \section secSampleConsensusRequirements Requirements
51  - \ref common "common"
52 
53 */