W3cubDocs

/PointCloudLibrary

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

#include <pcl/surface/mls.h>

Classes

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
}
using Ptr = shared_ptr< MovingLeastSquares< PointInT, PointOutT > >
using ConstPtr = shared_ptr< const MovingLeastSquares< PointInT, PointOutT > >
using KdTree = pcl::search::Search< PointInT >
using KdTreePtr = typename KdTree::Ptr
using NormalCloud = pcl::PointCloud< pcl::Normal >
using NormalCloudPtr = NormalCloud::Ptr
using PointCloudOut = pcl::PointCloud< PointOutT >
using PointCloudOutPtr = typename PointCloudOut::Ptr
using PointCloudOutConstPtr = typename PointCloudOut::ConstPtr
using PointCloudIn = pcl::PointCloud< PointInT >
using PointCloudInPtr = typename PointCloudIn::Ptr
using PointCloudInConstPtr = typename PointCloudIn::ConstPtr
using SearchMethod = std::function< int(pcl::index_t, double, pcl::Indices &, std::vector< float > &)>
- Public Types inherited from pcl::CloudSurfaceProcessing< PointInT, PointOutT >
using Ptr = shared_ptr< CloudSurfaceProcessing< PointInT, PointOutT > >
using ConstPtr = shared_ptr< const CloudSurfaceProcessing< PointInT, PointOutT > >
- Public Types inherited from pcl::PCLBase< PointInT >
using PointCloud = pcl::PointCloud< PointInT >
using PointCloudPtr = typename PointCloud::Ptr
using PointCloudConstPtr = typename PointCloud::ConstPtr
using PointIndicesPtr = PointIndices::Ptr
using PointIndicesConstPtr = PointIndices::ConstPtr

Public Member Functions

MovingLeastSquares ()
Empty constructor. More...
~MovingLeastSquares () override=default
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 () const
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 () const
Get the order of the polynomial to be fit. 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 () const
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 () const
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 () const
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 () const
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 () const
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 () const
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 () const
Get the number of dilation steps of the voxel grid. More...
void setCacheMLSResults (bool cache_mls_results)
Set whether the mls results should be stored for each point in the input cloud. More...
bool getCacheMLSResults () const
Get the cache_mls_results_ value (True if the mls results should be stored, otherwise false). More...
void setProjectionMethod (MLSResult::ProjectionMethod method)
Set the method to be used when projection the point on to the MLS surface. More...
MLSResult::ProjectionMethod getProjectionMethod () const
Get the current projection method being used. More...
const std::vector< MLSResult > & getMLSResults () const
Get the MLSResults for input cloud. More...
void setNumberOfThreads (unsigned int threads=1)
Set the maximum number of threads to use. More...
void process (PointCloudOut &output) override
Base method for surface reconstruction for all points given in <setInputCloud (), setIndices ()> More...
PointIndicesPtr getCorrespondingIndices () const
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...
~CloudSurfaceProcessing () override=default
Empty destructor. More...
- Public Member Functions inherited from pcl::PCLBase< PointInT >
PCLBase ()
Empty constructor. More...
PCLBase (const PCLBase &base)
Copy constructor. More...
virtual ~PCLBase ()=default
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 (std::size_t row_start, std::size_t col_start, std::size_t nb_rows, std::size_t nb_cols)
Set the indices for the points laying within an interest region of the point cloud. More...
IndicesPtr 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[] (std::size_t pos) const
Override PointCloud operator[] to shorten code. More...

Protected Member Functions

int searchForNeighbors (pcl::index_t index, pcl::Indices &indices, std::vector< float > &sqr_distances) const
Search for the nearest neighbors of a given point using a radius search. More...
void computeMLSPointNormal (pcl::index_t index, const pcl::Indices &nn_indices, 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 addProjectedPointNormal (pcl::index_t index, const Eigen::Vector3d &point, const Eigen::Vector3d &normal, double curvature, PointCloudOut &projected_points, NormalCloud &projected_points_normals, PointIndices &corresponding_input_indices) const
This is a helper function for adding projected points. More...
void copyMissingFields (const PointInT &point_in, PointOutT &point_out) const
void performProcessing (PointCloudOut &output) override
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_ {nullptr}
The point cloud that will hold the estimated normals, if set. More...
PointCloudInConstPtr distinct_cloud_ {nullptr}
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_ {nullptr}
A pointer to the spatial search object. More...
int order_ {2}
The order of the polynomial to be fit. More...
double search_radius_ {0.0}
The nearest neighbors search radius for each point. More...
double sqr_gauss_param_ {0.0}
Parameter for distance based weighting of neighbors (search_radius_ * search_radius_ works fine) More...
bool compute_normals_ {false}
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_ {0.0}
Radius of the circle in the local point plane that will be sampled. More...
double upsampling_step_ {0.0}
Step size for the local plane sampling. More...
int desired_num_points_in_radius_ {0}
Parameter that specifies the desired number of points within the search radius. More...
bool cache_mls_results_ {true}
True if the mls results for the input cloud should be stored. More...
std::vector< MLSResult > mls_results_ {}
Stores the MLS result for each point in the input cloud. More...
MLSResult::ProjectionMethod projection_method_ {MLSResult::SIMPLE}
Parameter that specifies the projection method to be used. More...
unsigned int threads_ {1}
The maximum number of threads the scheduler should use. More...
float voxel_size_ {1.0f}
Voxel size for the VOXEL_GRID_DILATION upsampling method. More...
int dilation_iteration_num_ {0}
Number of dilation steps for the VOXEL_GRID_DILATION upsampling method. More...
int nr_coeff_ {0}
Number of coefficients, to be computed from the requested order. More...
PointIndicesPtr corresponding_input_indices_ {nullptr}
Collects for each point in output the corresponding 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

Note
There is a parallelized version of the processing step, using the OpenMP standard. Compared to the standard version, an overhead is incurred in terms of runtime and memory usage. The upsampling methods DISTINCT_CLOUD and VOXEL_GRID_DILATION are not parallelized completely, i.e. parts of the algorithm run on a single thread only.
Author
Zoltan Csaba Marton, Radu B. Rusu, Alexandru E. Ichim, Suat Gedikli, Robert Huitl

Definition at line 252 of file mls.h.

Member Typedef Documentation

ConstPtr

template<typename PointInT , typename PointOutT >
using pcl::MovingLeastSquares< PointInT, PointOutT >::ConstPtr = shared_ptr<const MovingLeastSquares<PointInT, PointOutT> >

Definition at line 256 of file mls.h.

KdTree

template<typename PointInT , typename PointOutT >
using pcl::MovingLeastSquares< PointInT, PointOutT >::KdTree = pcl::search::Search<PointInT>

Definition at line 264 of file mls.h.

KdTreePtr

template<typename PointInT , typename PointOutT >
using pcl::MovingLeastSquares< PointInT, PointOutT >::KdTreePtr = typename KdTree::Ptr

Definition at line 265 of file mls.h.

NormalCloud

template<typename PointInT , typename PointOutT >
using pcl::MovingLeastSquares< PointInT, PointOutT >::NormalCloud = pcl::PointCloud<pcl::Normal>

Definition at line 266 of file mls.h.

NormalCloudPtr

template<typename PointInT , typename PointOutT >
using pcl::MovingLeastSquares< PointInT, PointOutT >::NormalCloudPtr = NormalCloud::Ptr

Definition at line 267 of file mls.h.

PointCloudIn

template<typename PointInT , typename PointOutT >
using pcl::MovingLeastSquares< PointInT, PointOutT >::PointCloudIn = pcl::PointCloud<PointInT>

Definition at line 273 of file mls.h.

PointCloudInConstPtr

template<typename PointInT , typename PointOutT >
using pcl::MovingLeastSquares< PointInT, PointOutT >::PointCloudInConstPtr = typename PointCloudIn::ConstPtr

Definition at line 275 of file mls.h.

PointCloudInPtr

template<typename PointInT , typename PointOutT >
using pcl::MovingLeastSquares< PointInT, PointOutT >::PointCloudInPtr = typename PointCloudIn::Ptr

Definition at line 274 of file mls.h.

PointCloudOut

template<typename PointInT , typename PointOutT >
using pcl::MovingLeastSquares< PointInT, PointOutT >::PointCloudOut = pcl::PointCloud<PointOutT>

Definition at line 269 of file mls.h.

PointCloudOutConstPtr

template<typename PointInT , typename PointOutT >
using pcl::MovingLeastSquares< PointInT, PointOutT >::PointCloudOutConstPtr = typename PointCloudOut::ConstPtr

Definition at line 271 of file mls.h.

PointCloudOutPtr

template<typename PointInT , typename PointOutT >
using pcl::MovingLeastSquares< PointInT, PointOutT >::PointCloudOutPtr = typename PointCloudOut::Ptr

Definition at line 270 of file mls.h.

Ptr

template<typename PointInT , typename PointOutT >
using pcl::MovingLeastSquares< PointInT, PointOutT >::Ptr = shared_ptr<MovingLeastSquares<PointInT, PointOutT> >

Definition at line 255 of file mls.h.

SearchMethod

template<typename PointInT , typename PointOutT >
using pcl::MovingLeastSquares< PointInT, PointOutT >::SearchMethod = std::function<int (pcl::index_t, double, pcl::Indices &, std::vector<float> &)>

Definition at line 277 of file mls.h.

Member Enumeration Documentation

UpsamplingMethod

template<typename PointInT , typename PointOutT >
enum pcl::MovingLeastSquares::UpsamplingMethod
Enumerator
NONE

No upsampling will be done, only the input points will be projected to their own MLS surfaces.

DISTINCT_CLOUD

Project the points of the distinct cloud to 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 279 of file mls.h.

Constructor & Destructor Documentation

MovingLeastSquares()

template<typename PointInT , typename PointOutT >
pcl::MovingLeastSquares< PointInT, PointOutT >::MovingLeastSquares ( )
inline

Empty constructor.

Definition at line 297 of file mls.h.

~MovingLeastSquares()

template<typename PointInT , typename PointOutT >
pcl::MovingLeastSquares< PointInT, PointOutT >::~MovingLeastSquares ( )
overridedefault

Empty destructor.

Member Function Documentation

addProjectedPointNormal()

template<typename PointInT , typename PointOutT >
void pcl::MovingLeastSquares< PointInT, PointOutT >::addProjectedPointNormal ( pcl::index_t index,
const Eigen::Vector3d & point,
const Eigen::Vector3d & normal,
double curvature,
PointCloudOut & projected_points,
NormalCloud & projected_points_normals,
PointIndices & corresponding_input_indices
) const
protected

This is a helper function for adding projected points.

Parameters
[in] index the index of the query point in the input cloud
[in] point the projected point to be added
[in] normal the projected point's normal to be added
[in] curvature the projected point's curvature
[out] projected_points the set of projected points around the query point
[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

Definition at line 254 of file mls.hpp.

References pcl::_Normal::curvature, pcl::PointIndices::indices, and pcl::PointCloud< PointT >::push_back().

computeMLSPointNormal()

template<typename PointInT , typename PointOutT >
void pcl::MovingLeastSquares< PointInT, PointOutT >::computeMLSPointNormal ( pcl::index_t index,
const pcl::Indices & nn_indices,
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 index of the query point in the input cloud
[in] nn_indices the set of nearest neighbors indices for pt
[out] projected_points the set of 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 176 of file mls.hpp.

References pcl::MLSResult::computeMLSSurface(), pcl::MLSResult::curvature, pcl::MLSResult::MLSProjectionResults::normal, pcl::MLSResult::num_neighbors, pcl::MLSResult::MLSProjectionResults::point, pcl::MLSResult::projectPointSimpleToPolynomialSurface(), pcl::MLSResult::projectPointToMLSPlane(), and pcl::MLSResult::projectQueryPoint().

copyMissingFields()

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

Definition at line 866 of file mls.hpp.

References pcl::copyPoint().

getCacheMLSResults()

template<typename PointInT , typename PointOutT >
bool pcl::MovingLeastSquares< PointInT, PointOutT >::getCacheMLSResults ( ) const
inline

Get the cache_mls_results_ value (True if the mls results should be stored, otherwise false).

Definition at line 461 of file mls.h.

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

getCorrespondingIndices()

template<typename PointInT , typename PointOutT >
PointIndicesPtr pcl::MovingLeastSquares< PointInT, PointOutT >::getCorrespondingIndices ( ) const
inline

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

Definition at line 501 of file mls.h.

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

getDilationIterations()

template<typename PointInT , typename PointOutT >
int pcl::MovingLeastSquares< PointInT, PointOutT >::getDilationIterations ( ) const
inline

Get the number of dilation steps of the voxel grid.

Note
Used only in the VOXEL_GRID_DILATION upsampling method

Definition at line 449 of file mls.h.

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

getDilationVoxelSize()

template<typename PointInT , typename PointOutT >
float pcl::MovingLeastSquares< PointInT, PointOutT >::getDilationVoxelSize ( ) const
inline

Get the voxel size for the voxel grid.

Note
Used only in the VOXEL_GRID_DILATION upsampling method

Definition at line 436 of file mls.h.

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

getDistinctCloud()

template<typename PointInT , typename PointOutT >
PointCloudInConstPtr pcl::MovingLeastSquares< PointInT, PointOutT >::getDistinctCloud ( ) const
inline

Get the distinct cloud used for the DISTINCT_CLOUD upsampling method.

Definition at line 379 of file mls.h.

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

getMLSResults()

template<typename PointInT , typename PointOutT >
const std::vector<MLSResult>& pcl::MovingLeastSquares< PointInT, PointOutT >::getMLSResults ( ) const
inline

Get the MLSResults for input cloud.

Note
The results are only stored if setCacheMLSResults(true) was called or when using the upsampling method DISTINCT_CLOUD or VOXEL_GRID_DILATION.
This vector is aligned with the input cloud indices, so use getCorrespondingIndices to get the correct results when using output cloud indices.

Definition at line 480 of file mls.h.

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

getPointDensity()

template<typename PointInT , typename PointOutT >
int pcl::MovingLeastSquares< PointInT, PointOutT >::getPointDensity ( ) const
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 422 of file mls.h.

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

getPolynomialOrder()

template<typename PointInT , typename PointOutT >
int pcl::MovingLeastSquares< PointInT, PointOutT >::getPolynomialOrder ( ) const
inline

Get the order of the polynomial to be fit.

Definition at line 343 of file mls.h.

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

getProjectionMethod()

template<typename PointInT , typename PointOutT >
MLSResult::ProjectionMethod pcl::MovingLeastSquares< PointInT, PointOutT >::getProjectionMethod ( ) const
inline

Get the current projection method being used.

Definition at line 473 of file mls.h.

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

getSearchMethod()

template<typename PointInT , typename PointOutT >
KdTreePtr pcl::MovingLeastSquares< PointInT, PointOutT >::getSearchMethod ( ) const
inline

Get a pointer to the search method used.

Definition at line 332 of file mls.h.

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

getSearchRadius()

template<typename PointInT , typename PointOutT >
double pcl::MovingLeastSquares< PointInT, PointOutT >::getSearchRadius ( ) const
inline

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

Definition at line 354 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 365 of file mls.h.

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

getUpsamplingRadius()

template<typename PointInT , typename PointOutT >
double pcl::MovingLeastSquares< PointInT, PointOutT >::getUpsamplingRadius ( ) const
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 393 of file mls.h.

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

getUpsamplingStepSize()

template<typename PointInT , typename PointOutT >
double pcl::MovingLeastSquares< PointInT, PointOutT >::getUpsamplingStepSize ( ) const
inline

Get the step size for the local plane sampling.

Note
Used only in the case of SAMPLE_LOCAL_PLANE upsampling

Definition at line 407 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 )
overrideprotectedvirtual

Abstract surface reconstruction method.

Parameters
[out] output the result of the reconstruction

Implements pcl::CloudSurfaceProcessing< PointInT, PointOutT >.

Definition at line 286 of file mls.hpp.

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

performUpsampling()

template<typename PointInT , typename PointOutT >
void pcl::MovingLeastSquares< PointInT, PointOutT >::performUpsampling ( PointCloudOut & output )
protected

process()

template<typename PointInT , typename PointOutT >
void pcl::MovingLeastSquares< PointInT, PointOutT >::process ( PointCloudOut & output )
overridevirtual

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 63 of file mls.hpp.

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

searchForNeighbors()

template<typename PointInT , typename PointOutT >
int pcl::MovingLeastSquares< PointInT, PointOutT >::searchForNeighbors ( pcl::index_t index,
pcl::Indices & indices,
std::vector< float > & sqr_distances
) const
inlineprotected

Search for the 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 neighbors within search_radius_
[out] sqr_distances the resultant squared distances from the query point to the neighbors within search_radius_

Definition at line 639 of file mls.h.

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

setCacheMLSResults()

template<typename PointInT , typename PointOutT >
void pcl::MovingLeastSquares< PointInT, PointOutT >::setCacheMLSResults ( bool cache_mls_results )
inline

Set whether the mls results should be stored for each point in the input cloud.

Parameters
[in] cache_mls_results True if the mls results should be stored, otherwise false.
Note
The cache_mls_results_ is forced to be true when using upsampling method VOXEL_GRID_DILATION or DISTINCT_CLOUD.
If memory consumption is a concern, then set it to false when not using upsampling method VOXEL_GRID_DILATION or DISTINCT_CLOUD.

Definition at line 457 of file mls.h.

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

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 314 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 443 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 429 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 375 of file mls.h.

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

setNumberOfThreads()

template<typename PointInT , typename PointOutT >
void pcl::MovingLeastSquares< PointInT, PointOutT >::setNumberOfThreads ( unsigned int threads = 1 )
inline

Set the maximum number of threads to use.

Parameters
threads the maximum number of hardware threads to use (0 sets the value to 1)

Definition at line 486 of file mls.h.

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

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 415 of file mls.h.

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

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
Note
Setting order > 1 indicates using a polynomial fit.

Definition at line 339 of file mls.h.

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

setProjectionMethod()

template<typename PointInT , typename PointOutT >
void pcl::MovingLeastSquares< PointInT, PointOutT >::setProjectionMethod ( MLSResult::ProjectionMethod method )
inline

Set the method to be used when projection the point on to the MLS surface.

Parameters
method
Note
This is only used when polynomial fit is enabled.

Definition at line 468 of file mls.h.

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

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 320 of file mls.h.

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

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 350 of file mls.h.

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

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 361 of file mls.h.

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

setUpsamplingMethod()

template<typename PointInT , typename PointOutT >
void pcl::MovingLeastSquares< PointInT, PointOutT >::setUpsamplingMethod ( UpsamplingMethod method )
inline

Set the upsampling method to be used.

Parameters
method

Definition at line 371 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 387 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 400 of file mls.h.

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

Member Data Documentation

cache_mls_results_

template<typename PointInT , typename PointOutT >
bool pcl::MovingLeastSquares< PointInT, PointOutT >::cache_mls_results_ {true}
protected

True if the mls results for the input cloud should be stored.

Note
This is forced to be true when using upsampling methods VOXEL_GRID_DILATION or DISTINCT_CLOUD.

Definition at line 549 of file mls.h.

Referenced by pcl::MovingLeastSquares< PointInT, PointOutT >::getCacheMLSResults(), and pcl::MovingLeastSquares< PointInT, PointOutT >::setCacheMLSResults().

compute_normals_

template<typename PointInT , typename PointOutT >
bool pcl::MovingLeastSquares< PointInT, PointOutT >::compute_normals_ {false}
protected

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

Definition at line 526 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_ {nullptr}
protected

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

Definition at line 631 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_ {0}
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 544 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_ {0}
protected

Number of dilation steps for the VOXEL_GRID_DILATION upsampling method.

Definition at line 625 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_ {nullptr}
protected

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

Definition at line 508 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 554 of file mls.h.

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

normals_

template<typename PointInT , typename PointOutT >
NormalCloudPtr pcl::MovingLeastSquares< PointInT, PointOutT >::normals_ {nullptr}
protected

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

Definition at line 505 of file mls.h.

nr_coeff_

template<typename PointInT , typename PointOutT >
int pcl::MovingLeastSquares< PointInT, PointOutT >::nr_coeff_ {0}
protected

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

Definition at line 628 of file mls.h.

order_

template<typename PointInT , typename PointOutT >
int pcl::MovingLeastSquares< PointInT, PointOutT >::order_ {2}
protected

projection_method_

template<typename PointInT , typename PointOutT >
MLSResult::ProjectionMethod pcl::MovingLeastSquares< PointInT, PointOutT >::projection_method_ {MLSResult::SIMPLE}
protected

Parameter that specifies the projection method to be used.

Definition at line 557 of file mls.h.

Referenced by pcl::MovingLeastSquares< PointInT, PointOutT >::getProjectionMethod(), and pcl::MovingLeastSquares< PointInT, PointOutT >::setProjectionMethod().

search_method_

template<typename PointInT , typename PointOutT >
SearchMethod pcl::MovingLeastSquares< PointInT, PointOutT >::search_method_
protected

search_radius_

template<typename PointInT , typename PointOutT >
double pcl::MovingLeastSquares< PointInT, PointOutT >::search_radius_ {0.0}
protected

sqr_gauss_param_

template<typename PointInT , typename PointOutT >
double pcl::MovingLeastSquares< PointInT, PointOutT >::sqr_gauss_param_ {0.0}
protected

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

Definition at line 523 of file mls.h.

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

threads_

template<typename PointInT , typename PointOutT >
unsigned int pcl::MovingLeastSquares< PointInT, PointOutT >::threads_ {1}
protected

The maximum number of threads the scheduler should use.

Definition at line 560 of file mls.h.

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

tree_

template<typename PointInT , typename PointOutT >
KdTreePtr pcl::MovingLeastSquares< PointInT, PointOutT >::tree_ {nullptr}
protected

A pointer to the spatial search object.

Definition at line 514 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 529 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_ {0.0}
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 534 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_ {0.0}
protected

Step size for the local plane sampling.

Note
Used only in the case of SAMPLE_LOCAL_PLANE upsampling

Definition at line 539 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_ {1.0f}
protected

Voxel size for the VOXEL_GRID_DILATION upsampling method.

Definition at line 622 of file mls.h.

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


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

© 2009–2012, Willow Garage, Inc.
© 2012–, Open Perception, Inc.
Licensed under the BSD License.
https://pointclouds.org/documentation/classpcl_1_1_moving_least_squares.html