Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 #pragma once
00036
00037 #include "PointMatcher.h"
00038
00040 template<typename T>
00041 struct FixStepSamplingDataPointsFilter: public PointMatcher<T>::DataPointsFilter
00042 {
00043 typedef PointMatcherSupport::Parametrizable Parametrizable;
00044 typedef PointMatcherSupport::Parametrizable P;
00045 typedef Parametrizable::Parameters Parameters;
00046 typedef Parametrizable::ParameterDoc ParameterDoc;
00047 typedef Parametrizable::ParametersDoc ParametersDoc;
00048 typedef Parametrizable::InvalidParameter InvalidParameter;
00049
00050 typedef typename PointMatcher<T>::DataPoints DataPoints;
00051
00052 inline static const std::string description()
00053 {
00054 return "Subsampling. This filter reduces the size of the point cloud by only keeping one point over step ones; with step varying in time from startStep to endStep, each iteration getting multiplied by stepMult. If use as prefilter (i.e. before the iterations), only startStep is used.";
00055 }
00056 inline static const ParametersDoc availableParameters()
00057 {
00058 return {
00059 {"startStep", "initial number of point to skip (initial decimation factor)", "10", "1", "2147483647", &P::Comp<unsigned>},
00060 {"endStep", "maximal or minimal number of points to skip (final decimation factor)", "10", "1", "2147483647", &P::Comp<unsigned>},
00061 {"stepMult", "multiplication factor to compute the new decimation factor for each iteration", "1", "0.0000001", "inf", &P::Comp<double>}
00062 };
00063 }
00064
00065
00066 const unsigned startStep;
00067 const unsigned endStep;
00068 const double stepMult;
00069
00070 protected:
00071 double step;
00072
00073 public:
00074 FixStepSamplingDataPointsFilter(const Parameters& params = Parameters());
00075 virtual ~FixStepSamplingDataPointsFilter() {};
00076 virtual void init();
00077 virtual DataPoints filter(const DataPoints& input);
00078 virtual void inPlaceFilter(DataPoints& cloud);
00079 };