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 BoundingBoxDataPointsFilter: 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>::Vector Vector;
00051 typedef typename PointMatcher<T>::DataPoints DataPoints;
00052
00053 inline static const std::string description()
00054 {
00055 return "Subsampling. Remove points laying in a bounding box which is axis aligned.";
00056 }
00057 inline static const ParametersDoc availableParameters()
00058 {
00059 return {
00060 {"xMin", "minimum value on x-axis defining one side of the bounding box", "-1", "-inf", "inf", &P::Comp<T>},
00061 {"xMax", "maximum value on x-axis defining one side of the bounding box", "1", "-inf", "inf", &P::Comp<T>},
00062 {"yMin", "minimum value on y-axis defining one side of the bounding box", "-1", "-inf", "inf", &P::Comp<T>},
00063 {"yMax", "maximum value on y-axis defining one side of the bounding box", "1", "-inf", "inf", &P::Comp<T>},
00064 {"zMin", "minimum value on z-axis defining one side of the bounding box", "-1", "-inf", "inf", &P::Comp<T>},
00065 {"zMax", "maximum value on z-axis defining one side of the bounding box", "1", "-inf", "inf", &P::Comp<T>},
00066 {"removeInside", "If set to true (1), remove points inside the bounding box; else (0), remove points outside the bounding box", "1", "0", "1", P::Comp<bool>}
00067 };
00068 }
00069
00070 const T xMin;
00071 const T xMax;
00072 const T yMin;
00073 const T yMax;
00074 const T zMin;
00075 const T zMax;
00076 const bool removeInside;
00077
00079 BoundingBoxDataPointsFilter(const Parameters& params = Parameters());
00080 virtual DataPoints filter(const DataPoints& input);
00081 virtual void inPlaceFilter(DataPoints& cloud);
00082 };