48 #include <pcl/for_each_type.h> 58 template <
typename Po
intT>
78 using Ptr = shared_ptr<PointRepresentation<PointT> >;
79 using ConstPtr = shared_ptr<const PointRepresentation<PointT> >;
106 bool is_valid =
true;
110 const float* temp =
reinterpret_cast<const float*
>(&p);
114 if (!std::isfinite (temp[i]))
128 if (!std::isfinite (temp[i]))
143 template <
typename OutputType>
void 156 out[i] = temp[i] *
alpha_[i];
178 template <
typename Po
intDefault>
186 using Ptr = shared_ptr<DefaultPointRepresentation<PointDefault> >;
187 using ConstPtr = shared_ptr<const DefaultPointRepresentation<PointDefault> >;
211 const float* ptr =
reinterpret_cast<const float*
> (&p);
220 template <
typename Po
intDefault>
227 struct IncrementFunctor
229 IncrementFunctor (
int &n) : n_ (n)
234 template<
typename Key>
inline void operator () ()
236 n_ += pcl::traits::datatype<PointDefault, Key>::size;
243 struct NdCopyPointFunctor
245 using Pod =
typename traits::POD<PointDefault>::type;
247 NdCopyPointFunctor (
const PointDefault &p1,
float * p2)
248 : p1_ (reinterpret_cast<const Pod&>(p1)), p2_ (p2), f_idx_ (0) { }
250 template<
typename Key>
inline void operator() ()
252 using FieldT =
typename pcl::traits::datatype<PointDefault, Key>::type;
253 const int NrDims = pcl::traits::datatype<PointDefault, Key>::size;
258 template <
typename Key,
typename FieldT,
int NrDims>
261 static void copyPoint (
const Pod &p1,
float * p2,
int &f_idx)
264 pcl::traits::offset<PointDefault, Key>::value;
265 p2[f_idx++] = *
reinterpret_cast<const FieldT*
> (data_ptr);
269 template <
typename Key,
typename FieldT,
int NrDims>
270 struct Helper<Key, FieldT[NrDims], NrDims>
272 static void copyPoint (
const Pod &p1,
float * p2,
int &f_idx)
275 pcl::traits::offset<PointDefault, Key>::value;
276 int nr_dims = NrDims;
277 const FieldT * array =
reinterpret_cast<const FieldT *
> (data_ptr);
278 for (
int i = 0; i < nr_dims; ++i)
280 p2[f_idx++] = array[i];
293 using Ptr = shared_ptr<DefaultFeatureRepresentation<PointDefault>>;
294 using ConstPtr = shared_ptr<const DefaultFeatureRepresentation<PointDefault>>;
295 using FieldList =
typename pcl::traits::fieldList<PointDefault>::type;
300 pcl::for_each_type <FieldList> (IncrementFunctor (
nr_dimensions_));
312 pcl::for_each_type <FieldList> (NdCopyPointFunctor (p, out));
532 template <
typename Po
intDefault>
539 using Ptr = shared_ptr<CustomPointRepresentation<PointDefault> >;
540 using ConstPtr = shared_ptr<const CustomPointRepresentation<PointDefault> >;
570 const float *ptr = (
reinterpret_cast<const float*
> (&p)) +
start_dim_;
DefaultPointRepresentation()
DefaultPointRepresentation()
DefaultPointRepresentation()
virtual void copyToFloatArray(const PointT &p, float *out) const =0
Copy point data from input point to a float array.
A point structure representing a Shape Context.
shared_ptr< DefaultPointRepresentation< PointDefault > > Ptr
Defines functions, macros and traits for allocating and using memory.
void copyToFloatArray(const PointXYZI &p, float *out) const override
Copy point data from input point to a float array.
void vectorize(const PointT &p, OutputType &out) const
Convert input point into a vector representation, rescaling by alpha.
A point structure representing the Normal Based Signature for a feature matrix of 4-by-3...
A point structure representing a Unique Shape Context.
bool isTrivial() const
Returns whether this point representation is trivial.
DefaultPointRepresentation()
CustomPointRepresentation(const int max_dim=3, const int start_dim=0)
Constructor.
virtual bool isValid(const PointT &p) const
Verify that the input point is valid.
shared_ptr< const DefaultPointRepresentation< PointDefault > > ConstPtr
int getNumberOfDimensions() const
Return the number of dimensions in the point's vector representation.
A point structure representing the Fast Point Feature Histogram (FPFH).
void copyToFloatArray(const UniqueShapeContext1960 &p, float *out) const override
Copy point data from input point to a float array.
void copyToFloatArray(const SHOT1344 &p, float *out) const override
Copy point data from input point to a float array.
int max_dim_
Use at most this many dimensions (i.e.
DefaultFeatureRepresentation()
PointRepresentation provides a set of methods for converting a point structs/object into an n-dimensi...
CustomPointRepresentation extends PointRepresentation to allow for sub-part selection on the point...
A point structure representing the Point Feature Histogram with colors (PFHRGB).
int start_dim_
Use dimensions only starting with this one (i.e.
int nr_dimensions_
The number of dimensions in this point's vector (i.e.
void copyToFloatArray(const PointDefault &p, float *out) const override
Copy point data from input point to a float array.
Defines all the PCL implemented PointT point type structures.
void copyToFloatArray(const Narf36 &p, float *out) const override
Copy point data from input point to a float array.
shared_ptr< const PointRepresentation< SHOT352 > > ConstPtr
shared_ptr< CustomPointRepresentation< PointDefault > > Ptr
~DefaultPointRepresentation()
A point structure representing Euclidean xyz coordinates.
A point structure representing the Globally Aligned Spatial Distribution (GASD) shape and color descr...
void copyToFloatArray(const PointDefault &p, float *out) const override
Copy point data from input point to a float array.
virtual ~PointRepresentation()=default
Empty destructor.
DefaultPointRepresentation()
virtual void copyToFloatArray(const PointDefault &p, float *out) const
Copy the point data into a float array.
DefaultPointRepresentation()
static void copyPoint(const Pod &p1, float *p2, int &f_idx)
A point structure representing the generic Signature of Histograms of OrienTations (SHOT) - shape onl...
std::vector< float > alpha_
A vector containing the rescale factor to apply to each dimension.
bool trivial_
Indicates whether this point representation is trivial.
static void copyPoint(const Pod &p1, float *p2, int &f_idx)
shared_ptr< DefaultFeatureRepresentation< PointDefault > > Ptr
A point structure representing Euclidean xyz coordinates, together with normal coordinates and the su...
DefaultPointRepresentation()
void copyToFloatArray(const PointNormal &p, float *out) const override
Copy point data from input point to a float array.
DefaultPointRepresentation()
A point structure representing the Globally Aligned Spatial Distribution (GASD) shape and color descr...
DefaultPointRepresentation extends PointRepresentation to define default behavior for common point ty...
DefaulFeatureRepresentation extends PointRepresentation and is intended to be used when defining the ...
shared_ptr< const CustomPointRepresentation< PointDefault > > ConstPtr
A point structure representing the generic Signature of Histograms of OrienTations (SHOT) - shape+col...
void copyToFloatArray(const SHOT352 &p, float *out) const override
Copy point data from input point to a float array.
A point structure representing the Viewpoint Feature Histogram (VFH).
A point structure representing the Narf descriptor.
A point structure representing Euclidean xyz coordinates, and the RGB color.
A point structure representing the Point Feature Histogram (PFH).
void setRescaleValues(const float *rescale_array)
Set the rescale values to use when vectorizing points.
void copyToFloatArray(const PointXYZ &p, float *out) const override
Copy point data from input point to a float array.
shared_ptr< PointRepresentation< SHOT352 > > Ptr
A point structure representing the Globally Aligned Spatial Distribution (GASD) shape descriptor...
DefaultPointRepresentation()
void copyToFloatArray(const ShapeContext1980 &p, float *out) const override
Copy point data from input point to a float array.
DefaultPointRepresentation()
Defines all the PCL and non-PCL macros used.
A point structure for storing the Point Pair Feature (PPF) values.
typename pcl::traits::fieldList< PFHSignature125 >::type FieldList
void copyToFloatArray(const PPFSignature &p, float *out) const override
Copy point data from input point to a float array.