pcl::MovingLeastSquares< PointInT, PointOutT > Class Template Reference
Module surface

MovingLeastSquares represent an implementation of the MLS (Moving Least Squares) algorithm for data smoothing and improved normal estimation. More...

`#include <pcl/surface/mls.h>`

Inheritance diagram for pcl::MovingLeastSquares< PointInT, PointOutT >:

## Classes

struct | MLSResult
| Data structure used to store the results of the MLS fitting. More...
class | MLSVoxelGrid
| A minimalistic implementation of a voxel grid, necessary for the point cloud upsampling. More...

## Public Types

enum | UpsamplingMethod { NONE, DISTINCT_CLOUD, SAMPLE_LOCAL_PLANE, RANDOM_UNIFORM_DENSITY, VOXEL_GRID_DILATION }
typedef boost::shared_ptr< MovingLeastSquares< PointInT, PointOutT > > | Ptr
typedef boost::shared_ptr< const MovingLeastSquares< PointInT, PointOutT > > | ConstPtr
typedef pcl::search::Search< PointInT > | KdTree
typedef pcl::search::Search< PointInT >::Ptr | KdTreePtr
typedef pcl::PointCloud< pcl::Normal > | NormalCloud
typedef pcl::PointCloud< pcl::Normal >::Ptr | NormalCloudPtr
typedef pcl::PointCloud< PointOutT > | PointCloudOut
typedef PointCloudOut::Ptr | PointCloudOutPtr
typedef PointCloudOut::ConstPtr | PointCloudOutConstPtr
typedef pcl::PointCloud< PointInT > | PointCloudIn
typedef PointCloudIn::Ptr | PointCloudInPtr
typedef PointCloudIn::ConstPtr | PointCloudInConstPtr
typedef boost::function< int(int, double, std::vector< int > &, std::vector< float > &)> | SearchMethod
Public Types inherited from pcl::CloudSurfaceProcessing< PointInT, PointOutT >
typedef boost::shared_ptr< CloudSurfaceProcessing< PointInT, PointOutT > > | Ptr
typedef boost::shared_ptr< const CloudSurfaceProcessing< PointInT, PointOutT > > | ConstPtr
Public Types inherited from pcl::PCLBase< PointInT >
typedef pcl::PointCloud< PointInT > | PointCloud
typedef PointCloud::Ptr | PointCloudPtr
typedef PointCloud::ConstPtr | PointCloudConstPtr
typedef boost::shared_ptr< PointIndices > | PointIndicesPtr
typedef boost::shared_ptr< PointIndices const > | PointIndicesConstPtr

## Public Member Functions

| MovingLeastSquares ()
| Empty constructor. More...
virtual | ~MovingLeastSquares ()
| Empty destructor. More...
void | setComputeNormals (bool compute_normals)
| Set whether the algorithm should also store the normals computed. More...
void | setSearchMethod (const KdTreePtr &tree)
| Provide a pointer to the search object. More...
KdTreePtr | getSearchMethod ()
| Get a pointer to the search method used. More...
void | setPolynomialOrder (int order)
| Set the order of the polynomial to be fit. More...
int | getPolynomialOrder ()
| Get the order of the polynomial to be fit. More...
void | setPolynomialFit (bool polynomial_fit)
| Sets whether the surface and normal are approximated using a polynomial, or only via tangent estimation. More...
bool | getPolynomialFit ()
| Get the polynomial_fit value (true if the surface and normal are approximated using a polynomial). More...
void | setSearchRadius (double radius)
| Set the sphere radius that is to be used for determining the k-nearest neighbors used for fitting. More...
double | getSearchRadius ()
| Get the sphere radius used for determining the k-nearest neighbors. More...
void | setSqrGaussParam (double sqr_gauss_param)
| Set the parameter used for distance based weighting of neighbors (the square of the search radius works best in general). More...
double | getSqrGaussParam () const
| Get the parameter for distance based weighting of neighbors. More...
void | setUpsamplingMethod (UpsamplingMethod method)
| Set the upsampling method to be used. More...
void | setDistinctCloud (PointCloudInConstPtr distinct_cloud)
| Set the distinct cloud used for the DISTINCT_CLOUD upsampling method. More...
PointCloudInConstPtr | getDistinctCloud ()
| Get the distinct cloud used for the DISTINCT_CLOUD upsampling method. More...
void | setUpsamplingRadius (double radius)
| Set the radius of the circle in the local point plane that will be sampled. More...
double | getUpsamplingRadius ()
| Get the radius of the circle in the local point plane that will be sampled. More...
void | setUpsamplingStepSize (double step_size)
| Set the step size for the local plane sampling. More...
double | getUpsamplingStepSize ()
| Get the step size for the local plane sampling. More...
void | setPointDensity (int desired_num_points_in_radius)
| Set the parameter that specifies the desired number of points within the search radius. More...
int | getPointDensity ()
| Get the parameter that specifies the desired number of points within the search radius. More...
void | setDilationVoxelSize (float voxel_size)
| Set the voxel size for the voxel grid. More...
float | getDilationVoxelSize ()
| Get the voxel size for the voxel grid. More...
void | setDilationIterations (int iterations)
| Set the number of dilation steps of the voxel grid. More...
int | getDilationIterations ()
| Get the number of dilation steps of the voxel grid. More...
void | process (PointCloudOut &output)
| Base method for surface reconstruction for all points given in <setInputCloud (), setIndices ()> More...
PointIndicesPtr | getCorrespondingIndices ()
| Get the set of indices with each point in output having the corresponding point in input. More...
Public Member Functions inherited from pcl::CloudSurfaceProcessing< PointInT, PointOutT >
| CloudSurfaceProcessing ()
| Constructor. More...
virtual | ~CloudSurfaceProcessing ()
| Empty destructor. More...
Public Member Functions inherited from pcl::PCLBase< PointInT >
| PCLBase ()
| Empty constructor. More...
| PCLBase (const PCLBase &base)
| Copy constructor. More...
virtual | ~PCLBase ()
| Destructor. More...
virtual void | setInputCloud (const PointCloudConstPtr &cloud)
| Provide a pointer to the input dataset. More...
PointCloudConstPtr const | getInputCloud () const
| Get a pointer to the input point cloud dataset. More...
virtual void | setIndices (const IndicesPtr &indices)
| Provide a pointer to the vector of indices that represents the input data. More...
virtual void | setIndices (const IndicesConstPtr &indices)
| Provide a pointer to the vector of indices that represents the input data. More...
virtual void | setIndices (const PointIndicesConstPtr &indices)
| Provide a pointer to the vector of indices that represents the input data. More...
virtual void | setIndices (size_t row_start, size_t col_start, size_t nb_rows, size_t nb_cols)
| Set the indices for the points laying within an interest region of the point cloud. More...
IndicesPtr const | getIndices ()
| Get a pointer to the vector of indices used. More...
IndicesConstPtr const | getIndices () const
| Get a pointer to the vector of indices used. More...
const PointInT & | operator[] (size_t pos) const
| Override PointCloud operator[] to shorten code. More...

## Protected Member Functions

int | searchForNeighbors (int index, std::vector< int > &indices, std::vector< float > &sqr_distances) const
| Search for the closest nearest neighbors of a given point using a radius search. More...
void | computeMLSPointNormal (int index, const std::vector< int > &nn_indices, std::vector< float > &nn_sqr_dists, PointCloudOut &projected_points, NormalCloud &projected_points_normals, PointIndices &corresponding_input_indices, MLSResult &mls_result) const
| Smooth a given point and its neighborghood using Moving Least Squares. More...
void | projectPointToMLSSurface (float &u_disp, float &v_disp, Eigen::Vector3d &u_axis, Eigen::Vector3d &v_axis, Eigen::Vector3d &n_axis, Eigen::Vector3d &mean, float &curvature, Eigen::VectorXd &c_vec, int num_neighbors, PointOutT &result_point, pcl::Normal &result_normal) const
| Fits a point (sample point) given in the local plane coordinates of an input point (query point) to the MLS surface of the input point. More...
void | copyMissingFields (const PointInT &point_in, PointOutT &point_out) const
virtual void | performProcessing (PointCloudOut &output)
| Abstract surface reconstruction method. More...
void | performUpsampling (PointCloudOut &output)
| Perform upsampling for the distinct-cloud and voxel-grid methods. More...
Protected Member Functions inherited from pcl::PCLBase< PointInT >
bool | initCompute ()
| This method should get called before starting the actual computation. More...
bool | deinitCompute ()
| This method should get called after finishing the actual computation. More...

## Protected Attributes

NormalCloudPtr | normals_
| The point cloud that will hold the estimated normals, if set. More...
PointCloudInConstPtr | distinct_cloud_
| The distinct point cloud that will be projected to the MLS surface. More...
SearchMethod | search_method_
| The search method template for indices. More...
KdTreePtr | tree_
| A pointer to the spatial search object. More...
int | order_
| The order of the polynomial to be fit. More...
bool | polynomial_fit_
| True if the surface and normal be approximated using a polynomial, false if tangent estimation is sufficient. More...
double | search_radius_
| The nearest neighbors search radius for each point. More...
double | sqr_gauss_param_
| Parameter for distance based weighting of neighbors (search_radius_ * search_radius_ works fine) More...
bool | compute_normals_
| Parameter that specifies whether the normals should be computed for the input cloud or not. More...
UpsamplingMethod | upsample_method_
| Parameter that specifies the upsampling method to be used. More...
double | upsampling_radius_
| Radius of the circle in the local point plane that will be sampled. More...
double | upsampling_step_
| Step size for the local plane sampling. More...
int | desired_num_points_in_radius_
| Parameter that specifies the desired number of points within the search radius. More...
std::vector< MLSResult > | mls_results_
| Stores the MLS result for each point in the input cloud. More...
float | voxel_size_
| Voxel size for the VOXEL_GRID_DILATION upsampling method. More...
int | dilation_iteration_num_
| Number of dilation steps for the VOXEL_GRID_DILATION upsampling method. More...
int | nr_coeff_
| Number of coefficients, to be computed from the requested order. More...
PointIndicesPtr | corresponding_input_indices_
| Collects for each point in output the corrseponding point in the input. More...
Protected Attributes inherited from pcl::PCLBase< PointInT >
PointCloudConstPtr | input_
| The input point cloud dataset. More...
IndicesPtr | indices_
| A pointer to the vector of point indices to use. More...
bool | use_indices_
| Set to true if point indices are used. More...
bool | fake_indices_
| If no set of indices are given, we construct a set of fake indices that mimic the input PointCloud. More...

## Detailed Description

### template<typename PointInT, typename PointOutT>
class pcl::MovingLeastSquares< PointInT, PointOutT >

MovingLeastSquares represent an implementation of the MLS (Moving Least Squares) algorithm for data smoothing and improved normal estimation.

It also contains methods for upsampling the resulting cloud based on the parametric fit. Reference paper: "Computing and Rendering Point Set Surfaces" by Marc Alexa, Johannes Behr, Daniel Cohen-Or, Shachar Fleishman, David Levin and Claudio T. Silva www.sci.utah.edu/~shachar/Publications/crpss.pdf

Author
  Zoltan Csaba Marton, Radu B. Rusu, Alexandru E. Ichim, Suat Gedikli

Definition at line 65 of file mls.h.

## Member Typedef Documentation

## ConstPtr

template<typename PointInT, typename PointOutT>

typedef boost::shared_ptr<const MovingLeastSquares<PointInT, PointOutT> > pcl::MovingLeastSquares< PointInT, PointOutT >::ConstPtr

Definition at line 69 of file mls.h.

## KdTree

template<typename PointInT, typename PointOutT>

typedef pcl::search::Search<PointInT> pcl::MovingLeastSquares< PointInT, PointOutT >::KdTree

Definition at line 77 of file mls.h.

## KdTreePtr

template<typename PointInT, typename PointOutT>

typedef pcl::search::Search<PointInT>::Ptr pcl::MovingLeastSquares< PointInT, PointOutT >::KdTreePtr

Definition at line 78 of file mls.h.

## NormalCloud

template<typename PointInT, typename PointOutT>

typedef pcl::PointCloud<pcl::Normal> pcl::MovingLeastSquares< PointInT, PointOutT >::NormalCloud

Definition at line 79 of file mls.h.

## NormalCloudPtr

template<typename PointInT, typename PointOutT>

typedef pcl::PointCloud<pcl::Normal>::Ptr pcl::MovingLeastSquares< PointInT, PointOutT >::NormalCloudPtr

Definition at line 80 of file mls.h.

## PointCloudIn

template<typename PointInT, typename PointOutT>

typedef pcl::PointCloud<PointInT> pcl::MovingLeastSquares< PointInT, PointOutT >::PointCloudIn

Definition at line 86 of file mls.h.

## PointCloudInConstPtr

template<typename PointInT, typename PointOutT>

typedef PointCloudIn::ConstPtr pcl::MovingLeastSquares< PointInT, PointOutT >::PointCloudInConstPtr

Definition at line 88 of file mls.h.

## PointCloudInPtr

template<typename PointInT, typename PointOutT>

typedef PointCloudIn::Ptr pcl::MovingLeastSquares< PointInT, PointOutT >::PointCloudInPtr

Definition at line 87 of file mls.h.

## PointCloudOut

template<typename PointInT, typename PointOutT>

typedef pcl::PointCloud<PointOutT> pcl::MovingLeastSquares< PointInT, PointOutT >::PointCloudOut

Definition at line 82 of file mls.h.

## PointCloudOutConstPtr

template<typename PointInT, typename PointOutT>

typedef PointCloudOut::ConstPtr pcl::MovingLeastSquares< PointInT, PointOutT >::PointCloudOutConstPtr

Definition at line 84 of file mls.h.

## PointCloudOutPtr

template<typename PointInT, typename PointOutT>

typedef PointCloudOut::Ptr pcl::MovingLeastSquares< PointInT, PointOutT >::PointCloudOutPtr

Definition at line 83 of file mls.h.

## Ptr

template<typename PointInT, typename PointOutT>

typedef boost::shared_ptr<MovingLeastSquares<PointInT, PointOutT> > pcl::MovingLeastSquares< PointInT, PointOutT >::Ptr

Definition at line 68 of file mls.h.

## SearchMethod

template<typename PointInT, typename PointOutT>

typedef boost::function<int (int, double, std::vector<int> &, std::vector<float> &)> pcl::MovingLeastSquares< PointInT, PointOutT >::SearchMethod

Definition at line 90 of file mls.h.

## Member Enumeration Documentation

## UpsamplingMethod

template<typename PointInT, typename PointOutT>

enum pcl::MovingLeastSquares::UpsamplingMethod

Enumerator
NONE |
DISTINCT_CLOUD |
SAMPLE_LOCAL_PLANE |
RANDOM_UNIFORM_DENSITY |
VOXEL_GRID_DILATION |

Definition at line 92 of file mls.h.

## Constructor & Destructor Documentation

## MovingLeastSquares()

template<typename PointInT, typename PointOutT>

pcl::MovingLeastSquares< PointInT, PointOutT >::MovingLeastSquares | ( |  | ) |

inline

Empty constructor.

Definition at line 95 of file mls.h.

## ~MovingLeastSquares()

template<typename PointInT, typename PointOutT>

virtual pcl::MovingLeastSquares< PointInT, PointOutT >::~MovingLeastSquares | ( |  | ) |

inline virtual

Empty destructor.

Definition at line 119 of file mls.h.

## Member Function Documentation

## computeMLSPointNormal()

template<typename PointInT , typename PointOutT >

void pcl::MovingLeastSquares< PointInT, PointOutT >::computeMLSPointNormal | ( | int | index,
|  | const std::vector< int > & | nn_indices,
|  | std::vector< float > & | nn_sqr_dists,
|  | PointCloudOut & | projected_points,
|  | NormalCloud & | projected_points_normals,
|  | PointIndices & | corresponding_input_indices,
|  | MLSResult & | mls_result
| ) |  | const

protected

Smooth a given point and its neighborghood using Moving Least Squares.

Parameters

  [in] | index | the inex of the query point in the input cloud
  [in] | nn_indices | the set of nearest neighbors indices for pt
  [in] | nn_sqr_dists | the set of nearest neighbors squared distances for pt
  [out] | projected_points | the set of points projected points around the query point (in the case of upsampling method NONE, only the query point projected to its own fitted surface will be returned, in the case of the other upsampling methods, multiple points will be returned)
  [out] | projected_points_normals | the normals corresponding to the projected points
  [out] | corresponding_input_indices | the set of indices with each point in output having the corresponding point in input
  [out] | mls_result | stores the MLS result for each point in the input cloud (used only in the case of VOXEL_GRID_DILATION or DISTINCT_CLOUD upsampling)

Definition at line 165 of file mls.hpp.

References pcl::compute3DCentroid(), pcl::computeCovarianceMatrix(), pcl::_Normal::curvature, pcl::geometry::distance(), pcl::eigen33(), pcl::EIGEN_ALIGN16, pcl::PointIndices::indices, and pcl::PointCloud< PointT >::push_back().

Referenced by pcl::MovingLeastSquares< PointInT, PointOutT >::searchForNeighbors().

## copyMissingFields()

template<typename PointInT , typename PointOutT >

void pcl::MovingLeastSquares< PointInT, PointOutT >::copyMissingFields | ( | const PointInT & | point_in,
|  | PointOutT & | point_out
| ) |  | const

protected

Definition at line 769 of file mls.hpp.

References pcl::copyPoint().

Referenced by pcl::MovingLeastSquares< PointInT, PointOutT >::searchForNeighbors().

## getCorrespondingIndices()

template<typename PointInT, typename PointOutT>

PointIndicesPtr pcl::MovingLeastSquares< PointInT, PointOutT >::getCorrespondingIndices | ( |  | ) |

inline

Get the set of indices with each point in output having the corresponding point in input.

Definition at line 296 of file mls.h.

References pcl::MovingLeastSquares< PointInT, PointOutT >::corresponding_input_indices_.

## getDilationIterations()

template<typename PointInT, typename PointOutT>

int pcl::MovingLeastSquares< PointInT, PointOutT >::getDilationIterations | ( |  | ) |

inline

Get the number of dilation steps of the voxel grid.

Note
  Used only in the VOXEL_GRID_DILATION upsampling method

Definition at line 284 of file mls.h.

References pcl::MovingLeastSquares< PointInT, PointOutT >::dilation_iteration_num_, and pcl::MovingLeastSquares< PointInT, PointOutT >::process().

## getDilationVoxelSize()

template<typename PointInT, typename PointOutT>

float pcl::MovingLeastSquares< PointInT, PointOutT >::getDilationVoxelSize | ( |  | ) |

inline

Get the voxel size for the voxel grid.

Note
  Used only in the VOXEL_GRID_DILATION upsampling method

Definition at line 271 of file mls.h.

References pcl::MovingLeastSquares< PointInT, PointOutT >::voxel_size_.

## getDistinctCloud()

template<typename PointInT, typename PointOutT>

PointCloudInConstPtr pcl::MovingLeastSquares< PointInT, PointOutT >::getDistinctCloud | ( |  | ) |

inline

Get the distinct cloud used for the DISTINCT_CLOUD upsampling method.

Definition at line 214 of file mls.h.

References pcl::MovingLeastSquares< PointInT, PointOutT >::distinct_cloud_.

## getPointDensity()

template<typename PointInT, typename PointOutT>

int pcl::MovingLeastSquares< PointInT, PointOutT >::getPointDensity | ( |  | ) |

inline

Get the parameter that specifies the desired number of points within the search radius.

Note
  Used only in the case of RANDOM_UNIFORM_DENSITY upsampling

Definition at line 257 of file mls.h.

References pcl::MovingLeastSquares< PointInT, PointOutT >::desired_num_points_in_radius_.

## getPolynomialFit()

template<typename PointInT, typename PointOutT>

bool pcl::MovingLeastSquares< PointInT, PointOutT >::getPolynomialFit | ( |  | ) |

inline

Get the polynomial_fit value (true if the surface and normal are approximated using a polynomial).

Definition at line 162 of file mls.h.

References pcl::MovingLeastSquares< PointInT, PointOutT >::polynomial_fit_.

## getPolynomialOrder()

template<typename PointInT, typename PointOutT>

int pcl::MovingLeastSquares< PointInT, PointOutT >::getPolynomialOrder | ( |  | ) |

inline

Get the order of the polynomial to be fit.

Definition at line 152 of file mls.h.

References pcl::MovingLeastSquares< PointInT, PointOutT >::order_.

## getSearchMethod()

template<typename PointInT, typename PointOutT>

KdTreePtr pcl::MovingLeastSquares< PointInT, PointOutT >::getSearchMethod | ( |  | ) |

inline

Get a pointer to the search method used.

Definition at line 142 of file mls.h.

References pcl::MovingLeastSquares< PointInT, PointOutT >::tree_.

## getSearchRadius()

template<typename PointInT, typename PointOutT>

double pcl::MovingLeastSquares< PointInT, PointOutT >::getSearchRadius | ( |  | ) |

inline

Get the sphere radius used for determining the k-nearest neighbors.

Definition at line 173 of file mls.h.

References pcl::MovingLeastSquares< PointInT, PointOutT >::search_radius_.

## getSqrGaussParam()

template<typename PointInT, typename PointOutT>

double pcl::MovingLeastSquares< PointInT, PointOutT >::getSqrGaussParam | ( |  | ) | const

inline

Get the parameter for distance based weighting of neighbors.

Definition at line 184 of file mls.h.

References pcl::MovingLeastSquares< PointInT, PointOutT >::sqr_gauss_param_.

## getUpsamplingRadius()

template<typename PointInT, typename PointOutT>

double pcl::MovingLeastSquares< PointInT, PointOutT >::getUpsamplingRadius | ( |  | ) |

inline

Get the radius of the circle in the local point plane that will be sampled.

Note
  Used only in the case of SAMPLE_LOCAL_PLANE upsampling

Definition at line 228 of file mls.h.

References pcl::MovingLeastSquares< PointInT, PointOutT >::upsampling_radius_.

## getUpsamplingStepSize()

template<typename PointInT, typename PointOutT>

double pcl::MovingLeastSquares< PointInT, PointOutT >::getUpsamplingStepSize | ( |  | ) |

inline

Get the step size for the local plane sampling.

Note
  Used only in the case of SAMPLE_LOCAL_PLANE upsampling

Definition at line 242 of file mls.h.

References pcl::MovingLeastSquares< PointInT, PointOutT >::upsampling_step_.

## performProcessing()

template<typename PointInT , typename PointOutT >

void pcl::MovingLeastSquares< PointInT, PointOutT >::performProcessing | ( | PointCloudOut & | output | ) |

protected virtual

Abstract surface reconstruction method.

Parameters

  [out] | output | the result of the reconstruction

Implements pcl::CloudSurfaceProcessing< PointInT, PointOutT >.

Definition at line 466 of file mls.hpp.

References pcl::PointCloud< PointT >::begin(), pcl::PointCloud< PointT >::end(), pcl::PointCloud< PointT >::insert(), and pcl::PointCloud< PointT >::size().

Referenced by pcl::MovingLeastSquares< PointInT, PointOutT >::searchForNeighbors().

## performUpsampling()

template<typename PointInT , typename PointOutT >

void pcl::MovingLeastSquares< PointInT, PointOutT >::performUpsampling | ( | PointCloudOut & | output | ) |

protected

Perform upsampling for the distinct-cloud and voxel-grid methods.

Parameters

  [out] | output | the result of the reconstruction

Definition at line 590 of file mls.hpp.

References pcl::MovingLeastSquares< PointInT, PointOutT >::MLSVoxelGrid::dilate(), pcl::MovingLeastSquares< PointInT, PointOutT >::MLSVoxelGrid::getPosition(), pcl::PointCloud< PointT >::push_back(), and pcl::MovingLeastSquares< PointInT, PointOutT >::MLSVoxelGrid::voxel_grid_.

Referenced by pcl::MovingLeastSquares< PointInT, PointOutT >::searchForNeighbors().

## process()

template<typename PointInT , typename PointOutT >

void pcl::MovingLeastSquares< PointInT, PointOutT >::process | ( | PointCloudOut & | output | ) |

virtual

Base method for surface reconstruction for all points given in <setInputCloud (), setIndices ()>

Parameters

  [out] | output | the resultant reconstructed surface model

Reimplemented from pcl::CloudSurfaceProcessing< PointInT, PointOutT >.

Definition at line 57 of file mls.hpp.

References pcl::PointCloud< PointT >::header, pcl::PointCloud< PointT >::height, pcl::PointCloud< PointT >::points, pcl::PointCloud< PointT >::size(), and pcl::PointCloud< PointT >::width.

Referenced by pcl::MovingLeastSquares< PointInT, PointOutT >::getDilationIterations().

## projectPointToMLSSurface()

template<typename PointInT , typename PointOutT >

void pcl::MovingLeastSquares< PointInT, PointOutT >::projectPointToMLSSurface | ( | float & | u_disp,
|  | float & | v_disp,
|  | Eigen::Vector3d & | u_axis,
|  | Eigen::Vector3d & | v_axis,
|  | Eigen::Vector3d & | n_axis,
|  | Eigen::Vector3d & | mean,
|  | float & | curvature,
|  | Eigen::VectorXd & | c_vec,
|  | int | num_neighbors,
|  | PointOutT & | result_point,
|  | pcl::Normal & | result_normal
| ) |  | const

protected

Fits a point (sample point) given in the local plane coordinates of an input point (query point) to the MLS surface of the input point.

Parameters

  [in] | u_disp | the u coordinate of the sample point in the local plane of the query point
  [in] | v_disp | the v coordinate of the sample point in the local plane of the query point
  [in] | u_axis | the axis corresponding to the u-coordinates of the local plane of the query point
  [in] | v_axis | the axis corresponding to the v-coordinates of the local plane of the query point
  [in] | n_axis |
  | mean |
  [in] | curvature | the curvature of the surface at the query point
  [in] | c_vec | the coefficients of the polynomial fit on the MLS surface of the query point
  [in] | num_neighbors | the number of neighbors of the query point in the input cloud
  [out] | result_point | the absolute 3D position of the resulting projected point
  [out] | result_normal | the normal of the resulting projected point

Definition at line 409 of file mls.hpp.

References pcl::_Normal::curvature.

Referenced by pcl::MovingLeastSquares< PointInT, PointOutT >::searchForNeighbors().

## searchForNeighbors()

template<typename PointInT, typename PointOutT>

int pcl::MovingLeastSquares< PointInT, PointOutT >::searchForNeighbors | ( | int | index,
|  | std::vector< int > & | indices,
|  | std::vector< float > & | sqr_distances
| ) |  | const

inline protected

Search for the closest nearest neighbors of a given point using a radius search.

Parameters

  [in] | index | the index of the query point
  [out] | indices | the resultant vector of indices representing the k-nearest neighbors
  [out] | sqr_distances | the resultant squared distances from the query point to the k-nearest neighbors

Definition at line 447 of file mls.h.

References pcl::MovingLeastSquares< PointInT, PointOutT >::MLSResult::c_vec, pcl::MovingLeastSquares< PointInT, PointOutT >::computeMLSPointNormal(), pcl::MovingLeastSquares< PointInT, PointOutT >::copyMissingFields(), pcl::MovingLeastSquares< PointInT, PointOutT >::MLSResult::curvature, pcl::MovingLeastSquares< PointInT, PointOutT >::MLSResult::mean, pcl::MovingLeastSquares< PointInT, PointOutT >::MLSResult::num_neighbors, pcl::MovingLeastSquares< PointInT, PointOutT >::performProcessing(), pcl::MovingLeastSquares< PointInT, PointOutT >::performUpsampling(), pcl::MovingLeastSquares< PointInT, PointOutT >::projectPointToMLSSurface(), pcl::MovingLeastSquares< PointInT, PointOutT >::MLSResult::u_axis, and pcl::MovingLeastSquares< PointInT, PointOutT >::MLSResult::v_axis.

## setComputeNormals()

template<typename PointInT, typename PointOutT>

void pcl::MovingLeastSquares< PointInT, PointOutT >::setComputeNormals | ( | bool | compute_normals | ) |

inline

Set whether the algorithm should also store the normals computed.

Note
  This is optional, but need a proper output cloud type

Definition at line 126 of file mls.h.

References pcl::MovingLeastSquares< PointInT, PointOutT >::compute_normals_.

## setDilationIterations()

template<typename PointInT, typename PointOutT>

void pcl::MovingLeastSquares< PointInT, PointOutT >::setDilationIterations | ( | int | iterations | ) |

inline

Set the number of dilation steps of the voxel grid.

Note
  Used only in the VOXEL_GRID_DILATION upsampling method

Parameters

  [in] | iterations | the number of dilation iterations

Definition at line 278 of file mls.h.

References pcl::MovingLeastSquares< PointInT, PointOutT >::dilation_iteration_num_.

## setDilationVoxelSize()

template<typename PointInT, typename PointOutT>

void pcl::MovingLeastSquares< PointInT, PointOutT >::setDilationVoxelSize | ( | float | voxel_size | ) |

inline

Set the voxel size for the voxel grid.

Note
  Used only in the VOXEL_GRID_DILATION upsampling method

Parameters

  [in] | voxel_size | the edge length of a cubic voxel in the voxel grid

Definition at line 264 of file mls.h.

References pcl::MovingLeastSquares< PointInT, PointOutT >::voxel_size_.

## setDistinctCloud()

template<typename PointInT, typename PointOutT>

void pcl::MovingLeastSquares< PointInT, PointOutT >::setDistinctCloud | ( | PointCloudInConstPtr | distinct_cloud | ) |

inline

Set the distinct cloud used for the DISTINCT_CLOUD upsampling method.

Definition at line 210 of file mls.h.

References pcl::MovingLeastSquares< PointInT, PointOutT >::distinct_cloud_.

## setPointDensity()

template<typename PointInT, typename PointOutT>

void pcl::MovingLeastSquares< PointInT, PointOutT >::setPointDensity | ( | int | desired_num_points_in_radius | ) |

inline

Set the parameter that specifies the desired number of points within the search radius.

Note
  Used only in the case of RANDOM_UNIFORM_DENSITY upsampling

Parameters

  [in] | desired_num_points_in_radius | the desired number of points in the output cloud in a sphere of radius search_radius_ around each point

Definition at line 250 of file mls.h.

References pcl::MovingLeastSquares< PointInT, PointOutT >::desired_num_points_in_radius_.

## setPolynomialFit()

template<typename PointInT, typename PointOutT>

void pcl::MovingLeastSquares< PointInT, PointOutT >::setPolynomialFit | ( | bool | polynomial_fit | ) |

inline

Sets whether the surface and normal are approximated using a polynomial, or only via tangent estimation.

Parameters

  [in] | polynomial_fit | set to true for polynomial fit

Definition at line 158 of file mls.h.

References pcl::MovingLeastSquares< PointInT, PointOutT >::polynomial_fit_.

Referenced by Mesh::Mesh().

## setPolynomialOrder()

template<typename PointInT, typename PointOutT>

void pcl::MovingLeastSquares< PointInT, PointOutT >::setPolynomialOrder | ( | int | order | ) |

inline

Set the order of the polynomial to be fit.

Parameters

  [in] | order | the order of the polynomial

Definition at line 148 of file mls.h.

References pcl::MovingLeastSquares< PointInT, PointOutT >::order_.

Referenced by Mesh::Mesh().

## setSearchMethod()

template<typename PointInT, typename PointOutT>

void pcl::MovingLeastSquares< PointInT, PointOutT >::setSearchMethod | ( | const KdTreePtr & | tree | ) |

inline

Provide a pointer to the search object.

Parameters

  [in] | tree | a pointer to the spatial search object.

Definition at line 132 of file mls.h.

References pcl::search::Search< PointInT >::radiusSearch(), pcl::MovingLeastSquares< PointInT, PointOutT >::search_method_, and pcl::MovingLeastSquares< PointInT, PointOutT >::tree_.

Referenced by Mesh::Mesh().

## setSearchRadius()

template<typename PointInT, typename PointOutT>

void pcl::MovingLeastSquares< PointInT, PointOutT >::setSearchRadius | ( | double | radius | ) |

inline

Set the sphere radius that is to be used for determining the k-nearest neighbors used for fitting.

Parameters

  [in] | radius | the sphere radius that is to contain all k-nearest neighbors

Note
  Calling this method resets the squared Gaussian parameter to radius * radius !

Definition at line 169 of file mls.h.

References pcl::MovingLeastSquares< PointInT, PointOutT >::search_radius_, and pcl::MovingLeastSquares< PointInT, PointOutT >::sqr_gauss_param_.

Referenced by Mesh::Mesh().

## setSqrGaussParam()

template<typename PointInT, typename PointOutT>

void pcl::MovingLeastSquares< PointInT, PointOutT >::setSqrGaussParam | ( | double | sqr_gauss_param | ) |

inline

Set the parameter used for distance based weighting of neighbors (the square of the search radius works best in general).

Parameters

  [in] | sqr_gauss_param | the squared Gaussian parameter

Definition at line 180 of file mls.h.

References pcl::MovingLeastSquares< PointInT, PointOutT >::sqr_gauss_param_.

Referenced by Mesh::Mesh().

## setUpsamplingMethod()

template<typename PointInT, typename PointOutT>

void pcl::MovingLeastSquares< PointInT, PointOutT >::setUpsamplingMethod | ( | UpsamplingMethod | method | ) |

inline

Set the upsampling method to be used.

Parameters

  method |

Note
  Options are: * NONE - no upsampling will be done, only the input points will be projected to their own MLS surfaces
  - DISTINCT_CLOUD - will project the points of the distinct cloud to the closest point on the MLS surface
  - SAMPLE_LOCAL_PLANE - the local plane of each input point will be sampled in a circular fashion using the upsampling_radius_ and the upsampling_step_ parameters
  - RANDOM_UNIFORM_DENSITY - the local plane of each input point will be sampled using an uniform random distribution such that the density of points is constant throughout the cloud - given by the desired_num_points_in_radius_ parameter
  - VOXEL_GRID_DILATION - the input cloud will be inserted into a voxel grid with voxels of size voxel_size_; this voxel grid will be dilated dilation_iteration_num_ times and the resulting points will be projected to the MLS surface of the closest point in the input cloud; the result is a point cloud with filled holes and a constant point density

Definition at line 206 of file mls.h.

References pcl::MovingLeastSquares< PointInT, PointOutT >::upsample_method_.

## setUpsamplingRadius()

template<typename PointInT, typename PointOutT>

void pcl::MovingLeastSquares< PointInT, PointOutT >::setUpsamplingRadius | ( | double | radius | ) |

inline

Set the radius of the circle in the local point plane that will be sampled.

Note
  Used only in the case of SAMPLE_LOCAL_PLANE upsampling

Parameters

  [in] | radius | the radius of the circle

Definition at line 222 of file mls.h.

References pcl::MovingLeastSquares< PointInT, PointOutT >::upsampling_radius_.

## setUpsamplingStepSize()

template<typename PointInT, typename PointOutT>

void pcl::MovingLeastSquares< PointInT, PointOutT >::setUpsamplingStepSize | ( | double | step_size | ) |

inline

Set the step size for the local plane sampling.

Note
  Used only in the case of SAMPLE_LOCAL_PLANE upsampling

Parameters

  [in] | step_size | the step size

Definition at line 235 of file mls.h.

References pcl::MovingLeastSquares< PointInT, PointOutT >::upsampling_step_.

## Member Data Documentation

## compute_normals_

template<typename PointInT, typename PointOutT>

bool pcl::MovingLeastSquares< PointInT, PointOutT >::compute_normals_

protected

Parameter that specifies whether the normals should be computed for the input cloud or not.

Definition at line 324 of file mls.h.

Referenced by pcl::MovingLeastSquares< PointInT, PointOutT >::setComputeNormals().

## corresponding_input_indices_

template<typename PointInT, typename PointOutT>

PointIndicesPtr pcl::MovingLeastSquares< PointInT, PointOutT >::corresponding_input_indices_

protected

Collects for each point in output the corrseponding point in the input.

Definition at line 439 of file mls.h.

Referenced by pcl::MovingLeastSquares< PointInT, PointOutT >::getCorrespondingIndices().

## desired_num_points_in_radius_

template<typename PointInT, typename PointOutT>

int pcl::MovingLeastSquares< PointInT, PointOutT >::desired_num_points_in_radius_

protected

Parameter that specifies the desired number of points within the search radius.

Note
  Used only in the case of RANDOM_UNIFORM_DENSITY upsampling

Definition at line 342 of file mls.h.

Referenced by pcl::MovingLeastSquares< PointInT, PointOutT >::getPointDensity(), and pcl::MovingLeastSquares< PointInT, PointOutT >::setPointDensity().

## dilation_iteration_num_

template<typename PointInT, typename PointOutT>

int pcl::MovingLeastSquares< PointInT, PointOutT >::dilation_iteration_num_

protected

Number of dilation steps for the VOXEL_GRID_DILATION upsampling method.

Definition at line 433 of file mls.h.

Referenced by pcl::MovingLeastSquares< PointInT, PointOutT >::getDilationIterations(), and pcl::MovingLeastSquares< PointInT, PointOutT >::setDilationIterations().

## distinct_cloud_

template<typename PointInT, typename PointOutT>

PointCloudInConstPtr pcl::MovingLeastSquares< PointInT, PointOutT >::distinct_cloud_

protected

The distinct point cloud that will be projected to the MLS surface.

Definition at line 303 of file mls.h.

Referenced by pcl::MovingLeastSquares< PointInT, PointOutT >::getDistinctCloud(), and pcl::MovingLeastSquares< PointInT, PointOutT >::setDistinctCloud().

## mls_results_

template<typename PointInT, typename PointOutT>

std::vector<MLSResult> pcl::MovingLeastSquares< PointInT, PointOutT >::mls_results_

protected

Stores the MLS result for each point in the input cloud.

Note
  Used only in the case of VOXEL_GRID_DILATION or DISTINCT_CLOUD upsampling

Definition at line 370 of file mls.h.

## normals_

template<typename PointInT, typename PointOutT>

NormalCloudPtr pcl::MovingLeastSquares< PointInT, PointOutT >::normals_

protected

The point cloud that will hold the estimated normals, if set.

Definition at line 300 of file mls.h.

## nr_coeff_

template<typename PointInT, typename PointOutT>

int pcl::MovingLeastSquares< PointInT, PointOutT >::nr_coeff_

protected

Number of coefficients, to be computed from the requested order.

Definition at line 436 of file mls.h.

## order_

template<typename PointInT, typename PointOutT>

int pcl::MovingLeastSquares< PointInT, PointOutT >::order_

protected

The order of the polynomial to be fit.

Definition at line 312 of file mls.h.

Referenced by pcl::MovingLeastSquares< PointInT, PointOutT >::getPolynomialOrder(), and pcl::MovingLeastSquares< PointInT, PointOutT >::setPolynomialOrder().

## polynomial_fit_

template<typename PointInT, typename PointOutT>

bool pcl::MovingLeastSquares< PointInT, PointOutT >::polynomial_fit_

protected

True if the surface and normal be approximated using a polynomial, false if tangent estimation is sufficient.

Definition at line 315 of file mls.h.

Referenced by pcl::MovingLeastSquares< PointInT, PointOutT >::getPolynomialFit(), and pcl::MovingLeastSquares< PointInT, PointOutT >::setPolynomialFit().

## search_method_

template<typename PointInT, typename PointOutT>

SearchMethod pcl::MovingLeastSquares< PointInT, PointOutT >::search_method_

protected

The search method template for indices.

Definition at line 306 of file mls.h.

Referenced by pcl::MovingLeastSquares< PointInT, PointOutT >::setSearchMethod().

## search_radius_

template<typename PointInT, typename PointOutT>

double pcl::MovingLeastSquares< PointInT, PointOutT >::search_radius_

protected

The nearest neighbors search radius for each point.

Definition at line 318 of file mls.h.

Referenced by pcl::MovingLeastSquares< PointInT, PointOutT >::getSearchRadius(), and pcl::MovingLeastSquares< PointInT, PointOutT >::setSearchRadius().

## sqr_gauss_param_

template<typename PointInT, typename PointOutT>

double pcl::MovingLeastSquares< PointInT, PointOutT >::sqr_gauss_param_

protected

Parameter for distance based weighting of neighbors (search_radius_ * search_radius_ works fine)

Definition at line 321 of file mls.h.

Referenced by pcl::MovingLeastSquares< PointInT, PointOutT >::getSqrGaussParam(), pcl::MovingLeastSquares< PointInT, PointOutT >::setSearchRadius(), and pcl::MovingLeastSquares< PointInT, PointOutT >::setSqrGaussParam().

## tree_

template<typename PointInT, typename PointOutT>

KdTreePtr pcl::MovingLeastSquares< PointInT, PointOutT >::tree_

protected

A pointer to the spatial search object.

Definition at line 309 of file mls.h.

Referenced by pcl::MovingLeastSquares< PointInT, PointOutT >::getSearchMethod(), and pcl::MovingLeastSquares< PointInT, PointOutT >::setSearchMethod().

## upsample_method_

template<typename PointInT, typename PointOutT>

UpsamplingMethod pcl::MovingLeastSquares< PointInT, PointOutT >::upsample_method_

protected

Parameter that specifies the upsampling method to be used.

Definition at line 327 of file mls.h.

Referenced by pcl::MovingLeastSquares< PointInT, PointOutT >::setUpsamplingMethod().

## upsampling_radius_

template<typename PointInT, typename PointOutT>

double pcl::MovingLeastSquares< PointInT, PointOutT >::upsampling_radius_

protected

Radius of the circle in the local point plane that will be sampled.

Note
  Used only in the case of SAMPLE_LOCAL_PLANE upsampling

Definition at line 332 of file mls.h.

Referenced by pcl::MovingLeastSquares< PointInT, PointOutT >::getUpsamplingRadius(), and pcl::MovingLeastSquares< PointInT, PointOutT >::setUpsamplingRadius().

## upsampling_step_

template<typename PointInT, typename PointOutT>

double pcl::MovingLeastSquares< PointInT, PointOutT >::upsampling_step_

protected

Step size for the local plane sampling.

Note
  Used only in the case of SAMPLE_LOCAL_PLANE upsampling

Definition at line 337 of file mls.h.

Referenced by pcl::MovingLeastSquares< PointInT, PointOutT >::getUpsamplingStepSize(), and pcl::MovingLeastSquares< PointInT, PointOutT >::setUpsamplingStepSize().

## voxel_size_

template<typename PointInT, typename PointOutT>

float pcl::MovingLeastSquares< PointInT, PointOutT >::voxel_size_

protected

Voxel size for the VOXEL_GRID_DILATION upsampling method.

Definition at line 430 of file mls.h.

Referenced by pcl::MovingLeastSquares< PointInT, PointOutT >::MLSVoxelGrid::getCellIndex(), pcl::MovingLeastSquares< PointInT, PointOutT >::getDilationVoxelSize(), pcl::MovingLeastSquares< PointInT, PointOutT >::MLSVoxelGrid::getPosition(), and pcl::MovingLeastSquares< PointInT, PointOutT >::setDilationVoxelSize().

The documentation for this class was generated from the following files:

- /build/pcl-OilVEB/pcl-1.8.1+dfsg1/surface/include/pcl/surface/mls.h
- /build/pcl-OilVEB/pcl-1.8.1+dfsg1/surface/include/pcl/surface/impl/mls.hpp