Go to the documentation of this file.
73 return "Point cloud sampling and enhancement: compute geometric features saliencies throught Tensor Voting framework and use them to sample the point cloud. \\cite{Labussiere2020}";
79 {
"k",
"Number of neighbors to consider",
"50",
"6",
"4294967295", &P::Comp<std::size_t>},
80 {
"sigma",
"Scale of the vote in TensorVoting.",
"0.2",
"0.",
"+inf", &P::Comp<T>},
81 {
"radius",
"Radius to control the scale of the uniform distribution.",
"0.4",
"0.",
"+inf", &P::Comp<T>},
82 {
"itMax",
"Number max of iterations to do",
"10",
"1",
"4294967295", &P::Comp<std::size_t>},
83 {
"keepNormals",
"Flag to keep normals computed by TV.",
"1",
"0",
"1", P::Comp<bool>},
84 {
"keepLabels",
"Flag to keep labels computed by TV.",
"1",
"0",
"1", P::Comp<bool>},
85 {
"keepLambdas",
"Flag to keep lambdas computed by TV.",
"1",
"0",
"1", P::Comp<bool>},
86 {
"keepTensors",
"Flag to keep elements Tensors computed by TV.",
"1",
"0",
"1", P::Comp<bool>}
114 (std::sqrt(M_PI * sigma_) * std::erf(radius_ / std::sqrt(sigma_))) / (2. * radius_)
116 (sigma_ - sigma_ * std::exp(- radius_ * radius_ / sigma_)) / (radius_ * radius_)
118 3. * sigma_ * (std::sqrt(M_PI * sigma_) * std::erf(radius_ / std::sqrt(sigma_)) - 2. * radius_ * std::exp(- radius_ * radius_ / sigma_)) / (4. * radius_ * radius_ * radius_)
virtual void inPlaceFilter(DataPoints &cloud)
Apply these filters to a point cloud without copying.
SpectralDecompositionDataPointsFilter(const Parameters ¶ms=Parameters())
virtual ~SpectralDecompositionDataPointsFilter()
void filterCurveness(DataPoints &pts, T xi, std::size_t k) const
PM::DataPointsFilter DataPointsFilter
PM::DataPoints DataPoints
Functions and classes that are dependant on scalar type are defined in this templatized class.
PointMatcher< T >::DataPoints::InvalidField InvalidField
Parametrizable::InvalidParameter InvalidParameter
Parametrizable::ParameterDoc ParameterDoc
void addDescriptor(DataPoints &pts, const TensorVoting< T > &tv, bool keepNormals_, bool keepLabels_, bool keepLambdas_, bool keepTensors_) const
An exception thrown when one tries to access features or descriptors unexisting or of wrong dimension...
std::vector< ParameterDoc > ParametersDoc
The documentation of all parameters.
Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic > Matrix
A dense matrix over ScalarType.
A data filter takes a point cloud as input, transforms it, and produces another point cloud as output...
An exception thrown when one tries to fetch the value of an unexisting parameter.
static const std::string description()
Eigen::Matrix< T, Eigen::Dynamic, 1 > Vector
A vector over ScalarType.
Matrix::Index Index
An index to a row or a column.
void filterPointness(DataPoints &pts, T xi, std::size_t k) const
Parametrizable::Parameters Parameters
The superclass of classes that are constructed using generic parameters. This class provides the para...
PointMatcherSupport::Parametrizable P
Parametrizable::ParametersDoc ParametersDoc
The documentation of a parameter.
PointMatcherSupport::Parametrizable Parametrizable
void removeOutlier(DataPoints &pts, const TensorVoting< T > &tv) const
static T xi_expectation(const std::size_t D, const T sigma_, const T radius_)
virtual DataPoints filter(const DataPoints &input)
Apply filters to input point cloud. This is the non-destructive version and returns a copy.
void filterSurfaceness(DataPoints &pts, T xi, std::size_t k) const
std::map< std::string, Parameter > Parameters
Parameters stored as a map of string->string.
static const ParametersDoc availableParameters()