Module visualization

## Detailed Description

# Overview

The pcl_visualization library was built for the purpose of being able to quickly prototype and visualize the results of algorithms operating on 3D point cloud data. Similar to OpenCV's highgui routines for displaying 2D images and for drawing basic 2D shapes on screen, the library offers:

- methods for rendering and setting visual properties (colors, point sizes, opacity, etc) for any n-D point cloud datasets in pcl::PointCloud<T> format;
- methods for drawing basic 3D shapes on screen (e.g., cylinders, spheres,lines, polygons, etc) either from sets of points or from parametric equations;
- a histogram visualization module (PCLHistogramVisualizer) for 2D plots;
- a multitude of Geometry and Color handler for pcl::PointCloud<T> datasets;
- a pcl::RangeImage visualization module.

The package makes use of the VTK library for 3D rendering for range image and 2D operations.

For implementing your own visualizers, take a look at the tests and examples accompanying the library.

# Requirements

- common
- VTK
- io
- kdtree
- RangeImage

## Classes

class | pcl::visualization::CloudViewer
| Simple point cloud visualization class. More...
class | pcl::visualization::FloatImageUtils
| Provide some gerneral functionalities regarding 2d float arrays, e.g., for visualization purposes More...
class | pcl::visualization::PCLHistogramVisualizer
| PCL histogram visualizer main class. More...
class | pcl::visualization::ImageViewerInteractorStyle
| An image viewer interactor style, tailored for ImageViewer. More...
class | pcl::visualization::ImageViewer
| ImageViewer is a class for 2D image visualization. More...
class | pcl::visualization::PCLVisualizerInteractorStyle
| PCLVisualizerInteractorStyle defines an unique, custom VTK based interactory style for PCL Visualizer applications. More...
struct | pcl::visualization::Figure2D
| Abstract class for storing figure information. More...
class | pcl::visualization::PCLPainter2D
| PCL Painter2D main class. More...
class | pcl::visualization::PCLPlotter
| PCL Plotter main class. More...
class | pcl::visualization::PCLVisualizer
| PCL Visualizer main class. More...
class | pcl::visualization::PointCloudColorHandler< PointT >
| Base Handler class for PointCloud colors. More...
class | pcl::visualization::PointCloudColorHandlerRandom< PointT >
| Handler for random PointCloud colors (i.e., R, G, B will be randomly chosen) More...
class | pcl::visualization::PointCloudColorHandlerCustom< PointT >
| Handler for predefined user colors. More...
class | pcl::visualization::PointCloudColorHandlerRGBField< PointT >
| RGB handler class for colors. More...
class | pcl::visualization::PointCloudColorHandlerHSVField< PointT >
| HSV handler class for colors. More...
class | pcl::visualization::PointCloudColorHandlerGenericField< PointT >
| Generic field handler class for colors. More...
class | pcl::visualization::PointCloudColorHandlerRGBAField< PointT >
| RGBA handler class for colors. More...
class | pcl::visualization::PointCloudColorHandler< pcl::PCLPointCloud2 >
| Base Handler class for PointCloud colors. More...
class | pcl::visualization::PointCloudColorHandlerRandom< pcl::PCLPointCloud2 >
| Handler for random PointCloud colors (i.e., R, G, B will be randomly chosen) More...
class | pcl::visualization::PointCloudColorHandlerCustom< pcl::PCLPointCloud2 >
| Handler for predefined user colors. More...
class | pcl::visualization::PointCloudColorHandlerRGBField< pcl::PCLPointCloud2 >
| RGB handler class for colors. More...
class | pcl::visualization::PointCloudColorHandlerHSVField< pcl::PCLPointCloud2 >
| HSV handler class for colors. More...
class | pcl::visualization::PointCloudColorHandlerGenericField< pcl::PCLPointCloud2 >
| Generic field handler class for colors. More...
class | pcl::visualization::PointCloudColorHandlerRGBAField< pcl::PCLPointCloud2 >
| RGBA handler class for colors. More...
class | pcl::visualization::PointCloudGeometryHandler< PointT >
| Base handler class for PointCloud geometry. More...
class | pcl::visualization::PointCloudGeometryHandlerXYZ< PointT >
| XYZ handler class for PointCloud geometry. More...
class | pcl::visualization::PointCloudGeometryHandlerSurfaceNormal< PointT >
| Surface normal handler class for PointCloud geometry. More...
class | pcl::visualization::PointCloudGeometryHandlerCustom< PointT >
| Custom handler class for PointCloud geometry. More...
class | pcl::visualization::PointCloudGeometryHandler< pcl::PCLPointCloud2 >
| Base handler class for PointCloud geometry. More...
class | pcl::visualization::PointCloudGeometryHandlerXYZ< pcl::PCLPointCloud2 >
| XYZ handler class for PointCloud geometry. More...
class | pcl::visualization::PointCloudGeometryHandlerSurfaceNormal< pcl::PCLPointCloud2 >
| Surface normal handler class for PointCloud geometry. More...
class | pcl::visualization::PointCloudGeometryHandlerCustom< pcl::PCLPointCloud2 >
| Custom handler class for PointCloud geometry. More...
class | pcl::visualization::RangeImageVisualizer
| Range image visualizer class. More...
class | pcl::RegistrationVisualizer< PointSource, PointTarget >
| RegistrationVisualizer represents the base class for rendering the intermediate positions ocupied by the source point cloud during it's registration to the target point cloud. More...
class | pcl::visualization::PCLSimpleBufferVisualizer
| PCL simple buffer visualizer main class. More...

## Files

file | shapes.h
| Define methods or creating 3D shapes from parametric models.

## Functions

PCL_EXPORTS void | pcl::visualization::getCorrespondingPointCloud (vtkPolyData *src, const pcl::PointCloud< pcl::PointXYZ > &tgt, std::vector< int > &indices)
| Obtain a list of corresponding indices, for a set of vtk points, from a pcl::PointCloud. More...
PCL_EXPORTS bool | pcl::visualization::savePointData (vtkPolyData *data, const std::string &out_file, const boost::shared_ptr< CloudActorMap > &actors)
| Saves the vtk-formatted Point Cloud data into a set of files, based on whether the data comes from previously loaded PCD files. More...
template<typename PointT >
vtkSmartPointer< vtkDataSet > | pcl::visualization::createPolygon (const typename pcl::PointCloud< PointT >::ConstPtr &cloud)
| Create a 3d poly line from a set of points. More...
template<typename PointT >
vtkSmartPointer< vtkDataSet > | pcl::visualization::createPolygon (const pcl::PlanarPolygon< PointT > &planar_polygon)
| Create a 3d poly line from a set of points on the boundary of a planar region. More...
PCL_EXPORTS vtkSmartPointer< vtkDataSet > | pcl::visualization::createLine (const Eigen::Vector4f &pt1, const Eigen::Vector4f &pt2)
| Create a line shape from two points. More...
PCL_EXPORTS vtkSmartPointer< vtkDataSet > | pcl::visualization::createSphere (const Eigen::Vector4f &center, double radius, int res=10)
| Create a sphere shape from a point and a radius. More...
PCL_EXPORTS vtkSmartPointer< vtkDataSet > | pcl::visualization::createCylinder (const pcl::ModelCoefficients &coefficients, int numsides=30)
| Create a cylinder shape from a set of model coefficients. More...
PCL_EXPORTS vtkSmartPointer< vtkDataSet > | pcl::visualization::createSphere (const pcl::ModelCoefficients &coefficients, int res=10)
| Create a sphere shape from a set of model coefficients. More...
PCL_EXPORTS vtkSmartPointer< vtkDataSet > | pcl::visualization::createLine (const pcl::ModelCoefficients &coefficients)
| Create a line shape from a set of model coefficients. More...
PCL_EXPORTS vtkSmartPointer< vtkDataSet > | pcl::visualization::createPlane (const pcl::ModelCoefficients &coefficients)
| Create a planar shape from a set of model coefficients. More...
PCL_EXPORTS vtkSmartPointer< vtkDataSet > | pcl::visualization::createPlane (const pcl::ModelCoefficients &coefficients, double x, double y, double z)
| Create a planar shape from a set of model coefficients. More...
PCL_EXPORTS vtkSmartPointer< vtkDataSet > | pcl::visualization::create2DCircle (const pcl::ModelCoefficients &coefficients, double z=0.0)
| Create a 2d circle shape from a set of model coefficients. More...
PCL_EXPORTS vtkSmartPointer< vtkDataSet > | pcl::visualization::createCone (const pcl::ModelCoefficients &coefficients)
| Create a cone shape from a set of model coefficients. More...
PCL_EXPORTS vtkSmartPointer< vtkDataSet > | pcl::visualization::createCube (const pcl::ModelCoefficients &coefficients)
| Creaet a cube shape from a set of model coefficients. More...
PCL_EXPORTS vtkSmartPointer< vtkDataSet > | pcl::visualization::createCube (const Eigen::Vector3f &translation, const Eigen::Quaternionf &rotation, double width, double height, double depth)
| Creaet a cube shape from a set of model coefficients. More...

## Function Documentation

PCL_EXPORTS vtkSmartPointer<vtkDataSet> pcl::visualization::create2DCircle | ( | const pcl::ModelCoefficients & | coefficients,
|  | double | z = `0.0`
| ) |  |

Create a 2d circle shape from a set of model coefficients.

Parameters

  [in] | coefficients | the model coefficients (x, y, radius)
  [in] | z | (optional) specify a z value (default: 0)

// The following are given (or computed using sample consensus techniques -- see SampleConsensusModelCircle2D)
// float x, y, radius;
pcl::ModelCoefficients circle_coeff;
circle_coeff.values.resize (3); // We need 3 values
circle_coeff.values[0] = x;
circle_coeff.values[1] = y;
circle_coeff.values[2] = radius;
vtkSmartPointer<vtkDataSet> data = pcl::visualization::create2DCircle (circle_coeff, z);

PCL_EXPORTS vtkSmartPointer<vtkDataSet> pcl::visualization::createCone | ( | const pcl::ModelCoefficients & | coefficients | ) |

Create a cone shape from a set of model coefficients.

Parameters

  [in] | coefficients | the cone coefficients (cone_apex, axis_direction, angle)

// The following are given (or computed using sample consensus techniques -- see SampleConsensusModelCone)
// Eigen::Vector3f cone_apex, axis_direction;
// float angle;
// Note: The height of the cone is set using the magnitude of the axis_direction vector.
pcl::ModelCoefficients cone_coeff;
plane_coeff.values.resize (7); // We need 7 values
plane_coeff.values[0] = cone_apex.x ();
plane_coeff.values[1] = cone_apex.y ();
plane_coeff.values[2] = cone_apex.z ();
plane_coeff.values[3] = axis_direction.x ();
plane_coeff.values[4] = axis_direction.y ();
plane_coeff.values[5] = axis_direction.z ();
plane_coeff.values[6] = angle (); // degrees
vtkSmartPointer<vtkDataSet> data = pcl::visualization::createCone (cone_coeff);

PCL_EXPORTS vtkSmartPointer<vtkDataSet> pcl::visualization::createCube | ( | const pcl::ModelCoefficients & | coefficients | ) |

Creaet a cube shape from a set of model coefficients.

Parameters

  [in] | coefficients | the cube coefficients (Tx, Ty, Tz, Qx, Qy, Qz, Qw, width, height, depth)

PCL_EXPORTS vtkSmartPointer<vtkDataSet> pcl::visualization::createCube | ( | const Eigen::Vector3f & | translation,
|  | const Eigen::Quaternionf & | rotation,
|  | double | width,
|  | double | height,
|  | double | depth
| ) |  |

Creaet a cube shape from a set of model coefficients.

Parameters

  [in] | translation | a translation to apply to the cube from 0,0,0
  [in] | rotation | a quaternion-based rotation to apply to the cube
  [in] | width | the cube's width
  [in] | height | the cube's height
  [in] | depth | the cube's depth

PCL_EXPORTS vtkSmartPointer<vtkDataSet> pcl::visualization::createCylinder | ( | const pcl::ModelCoefficients & | coefficients,
|  | int | numsides = `30`
| ) |  |

Create a cylinder shape from a set of model coefficients.

Parameters

  [in] | coefficients | the model coefficients (point_on_axis, axis_direction, radius)
  [in] | numsides | (optional) the number of sides used for rendering the cylinder

// The following are given (or computed using sample consensus techniques -- see SampleConsensusModelCylinder)
// Eigen::Vector3f pt_on_axis, axis_direction;
// float radius;
pcl::ModelCoefficients cylinder_coeff;
cylinder_coeff.values.resize (7); // We need 7 values
cylinder_coeff.values[0] = pt_on_axis.x ();
cylinder_coeff.values[1] = pt_on_axis.y ();
cylinder_coeff.values[2] = pt_on_axis.z ();
cylinder_coeff.values[3] = axis_direction.x ();
cylinder_coeff.values[4] = axis_direction.y ();
cylinder_coeff.values[5] = axis_direction.z ();
cylinder_coeff.values[6] = radius;
vtkSmartPointer<vtkDataSet> data = pcl::visualization::createCylinder (cylinder_coeff, numsides);

PCL_EXPORTS vtkSmartPointer<vtkDataSet> pcl::visualization::createLine | ( | const Eigen::Vector4f & | pt1,
|  | const Eigen::Vector4f & | pt2
| ) |  |

Create a line shape from two points.

Parameters

  [in] | pt1 | the first point on the line
  [in] | pt2 | the end point on the line

Referenced by pcl::visualization::PCLVisualizer::addLine().

PCL_EXPORTS vtkSmartPointer<vtkDataSet> pcl::visualization::createLine | ( | const pcl::ModelCoefficients & | coefficients | ) |

Create a line shape from a set of model coefficients.

Parameters

  [in] | coefficients | the model coefficients (point_on_line, line_direction)

// The following are given (or computed using sample consensus techniques -- see SampleConsensusModelLine)
// Eigen::Vector3f point_on_line, line_direction;
pcl::ModelCoefficients line_coeff;
line_coeff.values.resize (6); // We need 6 values
line_coeff.values[0] = point_on_line.x ();
line_coeff.values[1] = point_on_line.y ();
line_coeff.values[2] = point_on_line.z ();
line_coeff.values[3] = line_direction.x ();
line_coeff.values[4] = line_direction.y ();
line_coeff.values[5] = line_direction.z ();
vtkSmartPointer<vtkDataSet> data = pcl::visualization::createLine (line_coeff);

PCL_EXPORTS vtkSmartPointer<vtkDataSet> pcl::visualization::createPlane | ( | const pcl::ModelCoefficients & | coefficients | ) |

Create a planar shape from a set of model coefficients.

Parameters

  [in] | coefficients | the model coefficients (a, b, c, d with ax+by+cz+d=0)

// The following are given (or computed using sample consensus techniques -- see SampleConsensusModelPlane)
// Eigen::Vector4f plane_parameters;
pcl::ModelCoefficients plane_coeff;
plane_coeff.values.resize (4); // We need 4 values
plane_coeff.values[0] = plane_parameters.x ();
plane_coeff.values[1] = plane_parameters.y ();
plane_coeff.values[2] = plane_parameters.z ();
plane_coeff.values[3] = plane_parameters.w ();
vtkSmartPointer<vtkDataSet> data = pcl::visualization::createPlane (plane_coeff);

PCL_EXPORTS vtkSmartPointer<vtkDataSet> pcl::visualization::createPlane | ( | const pcl::ModelCoefficients & | coefficients,
|  | double | x,
|  | double | y,
|  | double | z
| ) |  |

Create a planar shape from a set of model coefficients.

Parameters

  [in] | coefficients | the model coefficients (a, b, c, d with ax+by+cz+d=0)
  [in] | x,y,z | projection of this point on the plane is used to get the center of the plane.

template<typename PointT >

vtkSmartPointer< vtkDataSet > pcl::visualization::createPolygon | ( | const typename pcl::PointCloud< PointT >::ConstPtr & | cloud | ) |

inline

Create a 3d poly line from a set of points.

Parameters

  [in] | cloud | the set of points used to create the 3d polyline

Definition at line 47 of file shapes.hpp.

References pcl::visualization::allocVtkUnstructuredGrid(), and pcl::PointCloud< PointT >::points.

template<typename PointT >

vtkSmartPointer< vtkDataSet > pcl::visualization::createPolygon | ( | const pcl::PlanarPolygon< PointT > & | planar_polygon | ) |

inline

Create a 3d poly line from a set of points on the boundary of a planar region.

Parameters

  [in] | planar_polygon | the set of points used to create the 3d polyline

Definition at line 76 of file shapes.hpp.

References pcl::visualization::allocVtkUnstructuredGrid(), and pcl::PlanarPolygon< PointT >::getContour().

PCL_EXPORTS vtkSmartPointer<vtkDataSet> pcl::visualization::createSphere | ( | const Eigen::Vector4f & | center,
|  | double | radius,
|  | int | res = `10`
| ) |  |

Create a sphere shape from a point and a radius.

Parameters

  [in] | center | the center of the sphere (as an Eigen Vector4f, with only the first 3 coordinates used)
  [in] | radius | the radius of the sphere
  [in] | res | (optional) the resolution used for rendering the model

PCL_EXPORTS vtkSmartPointer<vtkDataSet> pcl::visualization::createSphere | ( | const pcl::ModelCoefficients & | coefficients,
|  | int | res = `10`
| ) |  |

Create a sphere shape from a set of model coefficients.

Parameters

  [in] | coefficients | the model coefficients (sphere center, radius)
  [in] | res | (optional) the resolution used for rendering the model

// The following are given (or computed using sample consensus techniques -- see SampleConsensusModelSphere)
// Eigen::Vector3f sphere_center;
// float radius;
pcl::ModelCoefficients sphere_coeff;
sphere_coeff.values.resize (4); // We need 4 values
sphere_coeff.values[0] = sphere_center.x ();
sphere_coeff.values[1] = sphere_center.y ();
sphere_coeff.values[2] = sphere_center.z ();
sphere_coeff.values[3] = radius;
vtkSmartPointer<vtkDataSet> data = pcl::visualization::createSphere (sphere_coeff, resolution);

PCL_EXPORTS void pcl::visualization::getCorrespondingPointCloud | ( | vtkPolyData * | src,
|  | const pcl::PointCloud< pcl::PointXYZ > & | tgt,
|  | std::vector< int > & | indices
| ) |  |

Obtain a list of corresponding indices, for a set of vtk points, from a pcl::PointCloud.

Parameters

  src | the set of vtk points
  tgt | the target pcl::PointCloud that we need to obtain indices from
  indices | the resultant list of indices

PCL_EXPORTS bool pcl::visualization::savePointData | ( | vtkPolyData * | data,
|  | const std::string & | out_file,
|  | const boost::shared_ptr< CloudActorMap > & | actors
| ) |  |

Saves the vtk-formatted Point Cloud data into a set of files, based on whether the data comes from previously loaded PCD files.

The PCD files are matched using the a list of names for the actors on screen.

Parameters

  data | the vtk data
  out_file | the output file (extra indices will be appended to it)
  actors | the list of actors present on screen