Point Cloud Library (PCL) 1.15.1-dev
Loading...
Searching...
No Matches
feature_types.hpp
1/*
2 * SPDX-License-Identifier: BSD-3-Clause
3 * * Point Cloud Library (PCL) - www.pointclouds.org
4 * Copyright (c) 2026-, Open Perception Inc.
5 * * All rights reserved
6 */
7
8#pragma once
9
10#include <pcl/pcl_macros.h> // for PCL_IF_CONSTEXPR
11#include <pcl/memory.h> // for PCL_MAKE_ALIGNED_OPERATOR_NEW
12#include <pcl/feature_types.h> // implementee
13#include <pcl/pcl_exports.h> // for PCL_EXPORTS
14#include <pcl/register_point_struct.h> // for POINT_CLOUD_REGISTER_POINT_STRUCT
15#include <pcl/type_traits.h> // for asEnum which is used internally in POINT_CLOUD_REGISTER_POINT_STRUCT
16
17#include <ostream> // for ostream, operator<<
18
19namespace pcl
20{
21 namespace detail
22 {
23 namespace traits
24 {
25 template<typename FeaturePointT> struct descriptorSize {};
26
27 template<> struct descriptorSize<SHOT352> { static constexpr const int value = 352; };
28 template<> struct descriptorSize<SHOT1344> { static constexpr const int value = 1344; };
29 template<> struct descriptorSize<ShapeContext1980> { static constexpr const int value = 1980; };
30 template<> struct descriptorSize<UniqueShapeContext1960> { static constexpr const int value = 1960; };
31 template<> struct descriptorSize<PFHSignature125> { static constexpr const int value = 125; };
32 template<> struct descriptorSize<PFHRGBSignature250> { static constexpr const int value = 250; };
33 template<> struct descriptorSize<NormalBasedSignature12> { static constexpr const int value = 12; };
34 template<> struct descriptorSize<FPFHSignature33> { static constexpr const int value = 33; };
35 template<> struct descriptorSize<VFHSignature308> { static constexpr const int value = 308; };
36 template<> struct descriptorSize<GRSDSignature21> { static constexpr const int value = 21; };
37 template<> struct descriptorSize<ESFSignature640> { static constexpr const int value = 640; };
38 template<> struct descriptorSize<GASDSignature512> { static constexpr const int value = 512; };
39 template<> struct descriptorSize<GASDSignature984> { static constexpr const int value = 984; };
40 template<> struct descriptorSize<GASDSignature7992> { static constexpr const int value = 7992; };
41 template<> struct descriptorSize<GFPFHSignature16> { static constexpr const int value = 16; };
42 template<> struct descriptorSize<BRISKSignature512> { static constexpr const int value = 64; };
43 template<> struct descriptorSize<Narf36> { static constexpr const int value = 36; };
44 template<int N> struct descriptorSize<Histogram<N>> { static constexpr const int value = N; };
45
46 template<typename FeaturePointT>
48 }
49 }
50 PCL_EXPORTS std::ostream& operator << (std::ostream& os, const MomentInvariants& p);
51 /** \brief A point structure representing the three moment invariants.
52 * \ingroup common
53 */
55 {
56 float j1 = 0.f, j2 = 0.f, j3 = 0.f;
57
58 inline constexpr MomentInvariants () = default;
59
60 inline constexpr MomentInvariants (float _j1, float _j2, float _j3): j1 (_j1), j2 (_j2), j3 (_j3) {}
61
62 friend std::ostream& operator << (std::ostream& os, const MomentInvariants& p);
63 };
64
65 PCL_EXPORTS std::ostream& operator << (std::ostream& os, const PrincipalRadiiRSD& p);
66 /** \brief A point structure representing the minimum and maximum surface radii (in meters) computed using RSD.
67 * \ingroup common
68 */
70 {
71 float r_min = 0.f, r_max = 0.f;
72
73 inline constexpr PrincipalRadiiRSD () = default;
74
75 inline constexpr PrincipalRadiiRSD (float _r_min, float _r_max): r_min (_r_min), r_max (_r_max) {}
76
77 friend std::ostream& operator << (std::ostream& os, const PrincipalRadiiRSD& p);
78 };
79
80 PCL_EXPORTS std::ostream& operator << (std::ostream& os, const Boundary& p);
81 /** \brief A point structure representing a description of whether a point is lying on a surface boundary or not.
82 * \ingroup common
83 */
84 struct Boundary
85 {
86 std::uint8_t boundary_point = 0;
87
88#if defined(_LIBCPP_VERSION) && _LIBCPP_VERSION <= 1101
89 constexpr operator unsigned char() const
90 {
91 return boundary_point;
92 }
93#endif
94
95 inline constexpr Boundary (std::uint8_t _boundary = 0): boundary_point (_boundary) {}
96
97 friend std::ostream& operator << (std::ostream& os, const Boundary& p);
98 };
99
100 PCL_EXPORTS std::ostream& operator << (std::ostream& os, const PrincipalCurvatures& p);
101 /** \brief A point structure representing the principal curvatures and their magnitudes.
102 * \ingroup common
103 */
105 {
106 union
107 {
109 struct
110 {
114 };
115 };
116 float pc1 = 0.f;
117 float pc2 = 0.f;
118
119 inline constexpr PrincipalCurvatures (): PrincipalCurvatures (0.f, 0.f) {}
120
121 inline constexpr PrincipalCurvatures (float _pc1, float _pc2): PrincipalCurvatures (0.f, 0.f, 0.f, _pc1, _pc2) {}
122
123 inline constexpr PrincipalCurvatures (float _x, float _y, float _z): PrincipalCurvatures (_x, _y, _z, 0.f, 0.f) {}
124
125 inline constexpr PrincipalCurvatures (float _x, float _y, float _z, float _pc1, float _pc2):
127
128 friend std::ostream& operator << (std::ostream& os, const PrincipalCurvatures& p);
129 };
130
131 PCL_EXPORTS std::ostream& operator << (std::ostream& os, const SHOT352& p);
132 /** \brief A point structure representing the generic Signature of Histograms of OrienTations (SHOT) - shape only.
133 * \ingroup common
134 */
135 struct SHOT352
136 {
137 float descriptor[352] = {0.f};
138 float rf[9] = {0.f};
139 static constexpr int descriptorSize () { return detail::traits::descriptorSize_v<SHOT352>; }
140
141 inline constexpr SHOT352 () = default;
142
143 friend std::ostream& operator << (std::ostream& os, const SHOT352& p);
144 };
145
146 PCL_EXPORTS std::ostream& operator << (std::ostream& os, const SHOT1344& p);
147 /** \brief A point structure representing the generic Signature of Histograms of OrienTations (SHOT) - shape+color.
148 * \ingroup common
149 */
150 struct SHOT1344
151 {
152 float descriptor[1344] = {0.f};
153 float rf[9] = {0.f};
154 static constexpr int descriptorSize () { return detail::traits::descriptorSize_v<SHOT1344>; }
155
156 inline constexpr SHOT1344 () = default;
157
158 friend std::ostream& operator << (std::ostream& os, const SHOT1344& p);
159 };
160
161 /** \brief A structure representing the Local Reference Frame of a point.
162 * \ingroup common
163 */
164 struct EIGEN_ALIGN16 _ReferenceFrame
165 {
166 union
167 {
168 float rf[9];
169 struct
170 {
171 float x_axis[3];
172 float y_axis[3];
173 float z_axis[3];
174 };
175 };
176
177 inline Eigen::Map<Eigen::Vector3f> getXAxisVector3fMap () { return (Eigen::Vector3f::Map (x_axis)); }
178 inline const Eigen::Map<const Eigen::Vector3f> getXAxisVector3fMap () const { return (Eigen::Vector3f::Map (x_axis)); }
179 inline Eigen::Map<Eigen::Vector3f> getYAxisVector3fMap () { return (Eigen::Vector3f::Map (y_axis)); }
180 inline const Eigen::Map<const Eigen::Vector3f> getYAxisVector3fMap () const { return (Eigen::Vector3f::Map (y_axis)); }
181 inline Eigen::Map<Eigen::Vector3f> getZAxisVector3fMap () { return (Eigen::Vector3f::Map (z_axis)); }
182 inline const Eigen::Map<const Eigen::Vector3f> getZAxisVector3fMap () const { return (Eigen::Vector3f::Map (z_axis)); }
183 inline Eigen::Map<Eigen::Matrix3f> getMatrix3fMap () { return (Eigen::Matrix3f::Map (rf)); }
184 inline const Eigen::Map<const Eigen::Matrix3f> getMatrix3fMap () const { return (Eigen::Matrix3f::Map (rf)); }
185
187 };
188
189 PCL_EXPORTS std::ostream& operator << (std::ostream& os, const ReferenceFrame& p);
190 struct EIGEN_ALIGN16 ReferenceFrame : public _ReferenceFrame
191 {
192 inline constexpr ReferenceFrame (const _ReferenceFrame &p) :
193 ReferenceFrame{p.rf}
194 {
195 //std::copy_n(p.rf, 9, rf); // this algorithm is constexpr starting from C++20
196 }
197
198 inline constexpr ReferenceFrame () :
199 _ReferenceFrame{ {{0.0f}} }
200 {
201 // this algorithm is constexpr starting from C++20
202 /*std::fill_n(x_axis, 3, 0.f);
203 std::fill_n(y_axis, 3, 0.f);
204 std::fill_n(z_axis, 3, 0.f);*/
205 }
206
207 inline constexpr ReferenceFrame (const float (&_rf)[9]) :
208 _ReferenceFrame{ {{_rf[0], _rf[1], _rf[2], _rf[3], _rf[4], _rf[5], _rf[6], _rf[7], _rf[8]}} } {}
209
210 friend std::ostream& operator << (std::ostream& os, const ReferenceFrame& p);
212 };
213
214 PCL_EXPORTS std::ostream& operator << (std::ostream& os, const ShapeContext1980& p);
215 /** \brief A point structure representing a Shape Context.
216 * \ingroup common
217 */
219 {
220 float descriptor[1980] = {0.f};
221 float rf[9] = {0.f};
222 static constexpr int descriptorSize () { return detail::traits::descriptorSize_v<ShapeContext1980>; }
223
224 inline constexpr ShapeContext1980 () = default;
225
226 friend std::ostream& operator << (std::ostream& os, const ShapeContext1980& p);
227 };
228
229 PCL_EXPORTS std::ostream& operator << (std::ostream& os, const UniqueShapeContext1960& p);
230 /** \brief A point structure representing a Unique Shape Context.
231 * \ingroup common
232 */
234 {
235 float descriptor[1960] = {0.f};
236 float rf[9] = {0.f};
237 static constexpr int descriptorSize () { return detail::traits::descriptorSize_v<UniqueShapeContext1960>; }
238
239 inline constexpr UniqueShapeContext1960 () = default;
240
241 friend std::ostream& operator << (std::ostream& os, const UniqueShapeContext1960& p);
242 };
243
244 PCL_EXPORTS std::ostream& operator << (std::ostream& os, const PFHSignature125& p);
245 /** \brief A point structure representing the Point Feature Histogram (PFH).
246 * \ingroup common
247 */
249 {
250 float histogram[125] = {0.f};
251 static constexpr int descriptorSize () { return detail::traits::descriptorSize_v<PFHSignature125>; }
252
253 inline constexpr PFHSignature125 () = default;
254
255 friend std::ostream& operator << (std::ostream& os, const PFHSignature125& p);
256 };
257
258 PCL_EXPORTS std::ostream& operator << (std::ostream& os, const PFHRGBSignature250& p);
259 /** \brief A point structure representing the Point Feature Histogram with colors (PFHRGB).
260 * \ingroup common
261 */
263 {
264 float histogram[250] = {0.f};
265 static constexpr int descriptorSize () { return detail::traits::descriptorSize_v<PFHRGBSignature250>; }
266
267 inline constexpr PFHRGBSignature250 () = default;
268
269 friend std::ostream& operator << (std::ostream& os, const PFHRGBSignature250& p);
270 };
271
272 PCL_EXPORTS std::ostream& operator << (std::ostream& os, const PPFSignature& p);
273 /** \brief A point structure for storing the Point Pair Feature (PPF) values
274 * \ingroup common
275 */
277 {
278 float f1 = 0.f, f2 = 0.f, f3 = 0.f, f4 = 0.f;
279 float alpha_m = 0.f;
280
281 inline constexpr PPFSignature (float _alpha = 0.f): PPFSignature (0.f, 0.f, 0.f, 0.f, _alpha) {}
282
283 inline constexpr PPFSignature (float _f1, float _f2, float _f3, float _f4, float _alpha = 0.f):
284 f1 (_f1), f2 (_f2), f3 (_f3), f4 (_f4), alpha_m (_alpha) {}
285
286 friend std::ostream& operator << (std::ostream& os, const PPFSignature& p);
287 };
288
289 PCL_EXPORTS std::ostream& operator << (std::ostream& os, const CPPFSignature& p);
290 /** \brief A point structure for storing the Point Pair Feature (CPPF) values
291 * \ingroup common
292 */
294 {
295 float f1, f2, f3, f4, f5, f6, f7, f8, f9, f10;
296 float alpha_m;
297
298 inline constexpr CPPFSignature (float _alpha = 0.f):
299 CPPFSignature (0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, _alpha) {}
300
301 inline constexpr CPPFSignature (float _f1, float _f2, float _f3, float _f4, float _f5, float _f6,
302 float _f7, float _f8, float _f9, float _f10, float _alpha = 0.f):
303 f1 (_f1), f2 (_f2), f3 (_f3), f4 (_f4), f5 (_f5), f6 (_f6),
304 f7 (_f7), f8 (_f8), f9 (_f9), f10 (_f10), alpha_m (_alpha) {}
305
306 friend std::ostream& operator << (std::ostream& os, const CPPFSignature& p);
307 };
308
309 PCL_EXPORTS std::ostream& operator << (std::ostream& os, const PPFRGBSignature& p);
310 /** \brief A point structure for storing the Point Pair Color Feature (PPFRGB) values
311 * \ingroup common
312 */
314 {
315 float f1 = 0.f, f2 = 0.f, f3 = 0.f, f4 = 0.f;
316 float r_ratio = 0.f, g_ratio = 0.f, b_ratio = 0.f;
317 float alpha_m = 0.f;
318
319 inline constexpr PPFRGBSignature (float _alpha = 0.f): PPFRGBSignature (0.f, 0.f, 0.f, 0.f, _alpha) {}
320
321 inline constexpr PPFRGBSignature (float _f1, float _f2, float _f3, float _f4, float _alpha = 0.f):
322 PPFRGBSignature (_f1, _f2, _f3, _f4, _alpha, 0.f, 0.f, 0.f) {}
323
324 inline constexpr PPFRGBSignature (float _f1, float _f2, float _f3, float _f4, float _alpha, float _r, float _g, float _b):
325 f1 (_f1), f2 (_f2), f3 (_f3), f4 (_f4), r_ratio (_r), g_ratio (_g), b_ratio (_b), alpha_m (_alpha) {}
326
327 friend std::ostream& operator << (std::ostream& os, const PPFRGBSignature& p);
328 };
329
330 PCL_EXPORTS std::ostream& operator << (std::ostream& os, const NormalBasedSignature12& p);
331 /** \brief A point structure representing the Normal Based Signature for
332 * a feature matrix of 4-by-3
333 * \ingroup common
334 */
336 {
337 float values[12] = {0.f};
338
339 inline constexpr NormalBasedSignature12 () = default;
340
341 friend std::ostream& operator << (std::ostream& os, const NormalBasedSignature12& p);
342 };
343
344 PCL_EXPORTS std::ostream& operator << (std::ostream& os, const FPFHSignature33& p);
345 /** \brief A point structure representing the Fast Point Feature Histogram (FPFH).
346 * \ingroup common
347 */
349 {
350 float histogram[33] = {0.f};
351 static constexpr int descriptorSize () { return detail::traits::descriptorSize_v<FPFHSignature33>; }
352
353 inline constexpr FPFHSignature33 () = default;
354
355 friend std::ostream& operator << (std::ostream& os, const FPFHSignature33& p);
356 };
357
358 PCL_EXPORTS std::ostream& operator << (std::ostream& os, const VFHSignature308& p);
359 /** \brief A point structure representing the Viewpoint Feature Histogram (VFH).
360 * \ingroup common
361 */
363 {
364 float histogram[308] = {0.f};
365 static constexpr int descriptorSize () { return detail::traits::descriptorSize_v<VFHSignature308>; }
366
367 inline constexpr VFHSignature308 () = default;
368
369 friend std::ostream& operator << (std::ostream& os, const VFHSignature308& p);
370 };
371
372 PCL_EXPORTS std::ostream& operator << (std::ostream& os, const GRSDSignature21& p);
373 /** \brief A point structure representing the Global Radius-based Surface Descriptor (GRSD).
374 * \ingroup common
375 */
377 {
378 float histogram[21] = {0.f};
379 static constexpr int descriptorSize () { return detail::traits::descriptorSize_v<GRSDSignature21>; }
380
381 inline constexpr GRSDSignature21 () = default;
382
383 friend std::ostream& operator << (std::ostream& os, const GRSDSignature21& p);
384 };
385
386 PCL_EXPORTS std::ostream& operator << (std::ostream& os, const ESFSignature640& p);
387 /** \brief A point structure representing the Ensemble of Shape Functions (ESF).
388 * \ingroup common
389 */
391 {
392 float histogram[640] = {0.f};
393 static constexpr int descriptorSize () { return detail::traits::descriptorSize_v<ESFSignature640>; }
394
395 inline constexpr ESFSignature640 () = default;
396
397 friend std::ostream& operator << (std::ostream& os, const ESFSignature640& p);
398 };
399
400 PCL_EXPORTS std::ostream& operator << (std::ostream& os, const GASDSignature512& p);
401 /** \brief A point structure representing the Globally Aligned Spatial Distribution (GASD) shape descriptor.
402 * \ingroup common
403 */
405 {
406 float histogram[512] = {0.f};
407 static constexpr int descriptorSize() { return detail::traits::descriptorSize_v<GASDSignature512>; }
408
409 inline constexpr GASDSignature512 () = default;
410
411 friend std::ostream& operator << (std::ostream& os, const GASDSignature512& p);
412 };
413
414 PCL_EXPORTS std::ostream& operator << (std::ostream& os, const GASDSignature984& p);
415 /** \brief A point structure representing the Globally Aligned Spatial Distribution (GASD) shape and color descriptor.
416 * \ingroup common
417 */
419 {
420 float histogram[984] = {0.f};
421 static constexpr int descriptorSize() { return detail::traits::descriptorSize_v<GASDSignature984>; }
422
423 inline constexpr GASDSignature984 () = default;
424
425 friend std::ostream& operator << (std::ostream& os, const GASDSignature984& p);
426 };
427
428 PCL_EXPORTS std::ostream& operator << (std::ostream& os, const GASDSignature7992& p);
429 /** \brief A point structure representing the Globally Aligned Spatial Distribution (GASD) shape and color descriptor.
430 * \ingroup common
431 */
433 {
434 float histogram[7992] = {0.f};
435 static constexpr int descriptorSize() { return detail::traits::descriptorSize_v<GASDSignature7992>; }
436
437 inline constexpr GASDSignature7992 () = default;
438
439 friend std::ostream& operator << (std::ostream& os, const GASDSignature7992& p);
440 };
441
442 PCL_EXPORTS std::ostream& operator << (std::ostream& os, const GFPFHSignature16& p);
443 /** \brief A point structure representing the GFPFH descriptor with 16 bins.
444 * \ingroup common
445 */
447 {
448 float histogram[16] = {0.f};
449 static constexpr int descriptorSize () { return detail::traits::descriptorSize_v<GFPFHSignature16>; }
450
451 inline constexpr GFPFHSignature16 () = default;
452
453 friend std::ostream& operator << (std::ostream& os, const GFPFHSignature16& p);
454 };
455
456 PCL_EXPORTS std::ostream& operator << (std::ostream& os, const BRISKSignature512& p);
457 /** \brief A point structure representing the Binary Robust Invariant Scalable Keypoints (BRISK).
458 * \ingroup common
459 */
461 {
462 float scale = 0.f;
463 float orientation = 0.f;
464 unsigned char descriptor[64] = {0};
465 static constexpr int descriptorSize () { return detail::traits::descriptorSize_v<BRISKSignature512>; }
466
467 inline constexpr BRISKSignature512 () = default;
468
469 inline constexpr BRISKSignature512 (float _scale, float _orientation): scale (_scale), orientation (_orientation) {}
470
471 friend std::ostream& operator << (std::ostream& os, const BRISKSignature512& p);
472 };
473
474 PCL_EXPORTS std::ostream& operator << (std::ostream& os, const Narf36& p);
475 /** \brief A point structure representing the Narf descriptor.
476 * \ingroup common
477 */
478 struct Narf36
479 {
480 float x = 0.f, y = 0.f, z = 0.f, roll = 0.f, pitch = 0.f, yaw = 0.f;
481 float descriptor[36] = {0.f};
482 static constexpr int descriptorSize () { return detail::traits::descriptorSize_v<Narf36>; }
483
484 inline constexpr Narf36 () = default;
485
486 inline constexpr Narf36 (float _x, float _y, float _z): Narf36 (_x, _y, _z, 0.f, 0.f, 0.f) {}
487
488 inline constexpr Narf36 (float _x, float _y, float _z, float _roll, float _pitch, float _yaw):
489 x (_x), y (_y), z (_z), roll (_roll), pitch (_pitch), yaw (_yaw) {}
490
491 friend std::ostream& operator << (std::ostream& os, const Narf36& p);
492 };
493
494 // TODO: Maybe make other histogram based structs an alias for this
495 /** \brief A point structure representing an N-D histogram.
496 * \ingroup common
497 */
498 template <int N>
500 {
501 float histogram[N];
502 static constexpr int descriptorSize () { return detail::traits::descriptorSize_v<Histogram<N>>; }
503 };
504
505 template <int N> std::ostream&
506 operator << (std::ostream& os, const Histogram<N>& p)
507 {
508 // make constexpr
509 PCL_IF_CONSTEXPR(N > 0)
510 {
511 os << "(" << p.histogram[0];
512 std::for_each(p.histogram + 1, std::end(p.histogram),
513 [&os](const auto& hist) { os << ", " << hist; });
514 os << ")";
515 }
516 return (os);
517 }
518} // namespace pcl
519
520POINT_CLOUD_REGISTER_POINT_STRUCT (pcl::MomentInvariants,
521 (float, j1, j1)
522 (float, j2, j2)
523 (float, j3, j3)
524)
525
526POINT_CLOUD_REGISTER_POINT_STRUCT (pcl::PrincipalRadiiRSD,
527 (float, r_min, r_min)
528 (float, r_max, r_max)
529)
530
531POINT_CLOUD_REGISTER_POINT_STRUCT (pcl::Boundary,
532 (std::uint8_t, boundary_point, boundary_point)
533)
534
535POINT_CLOUD_REGISTER_POINT_STRUCT (pcl::PrincipalCurvatures,
536 (float, principal_curvature_x, principal_curvature_x)
537 (float, principal_curvature_y, principal_curvature_y)
538 (float, principal_curvature_z, principal_curvature_z)
539 (float, pc1, pc1)
540 (float, pc2, pc2)
541)
542
543POINT_CLOUD_REGISTER_POINT_STRUCT (pcl::SHOT352,
544 (float[352], descriptor, shot)
545 (float[9], rf, rf)
546)
547
548POINT_CLOUD_REGISTER_POINT_STRUCT (pcl::SHOT1344,
549 (float[1344], descriptor, shot)
550 (float[9], rf, rf)
551)
552
553POINT_CLOUD_REGISTER_POINT_STRUCT (pcl::_ReferenceFrame,
554 (float[3], x_axis, x_axis)
555 (float[3], y_axis, y_axis)
556 (float[3], z_axis, z_axis)
557)
558POINT_CLOUD_REGISTER_POINT_WRAPPER(pcl::ReferenceFrame, pcl::_ReferenceFrame)
559
560POINT_CLOUD_REGISTER_POINT_STRUCT (pcl::ShapeContext1980,
561 (float[1980], descriptor, shape_context)
562 (float[9], rf, rf)
563)
564
565POINT_CLOUD_REGISTER_POINT_STRUCT (pcl::UniqueShapeContext1960,
566 (float[1960], descriptor, shape_context)
567 (float[9], rf, rf)
568)
569
570POINT_CLOUD_REGISTER_POINT_STRUCT (pcl::PFHSignature125,
571 (float[125], histogram, pfh)
572)
573
574POINT_CLOUD_REGISTER_POINT_STRUCT (pcl::PFHRGBSignature250,
575 (float[250], histogram, pfhrgb)
576)
577
578POINT_CLOUD_REGISTER_POINT_STRUCT (pcl::PPFSignature,
579 (float, f1, f1)
580 (float, f2, f2)
581 (float, f3, f3)
582 (float, f4, f4)
583 (float, alpha_m, alpha_m)
584)
585
586POINT_CLOUD_REGISTER_POINT_STRUCT (pcl::CPPFSignature,
587 (float, f1, f1)
588 (float, f2, f2)
589 (float, f3, f3)
590 (float, f4, f4)
591 (float, f5, f5)
592 (float, f6, f6)
593 (float, f7, f7)
594 (float, f8, f8)
595 (float, f9, f9)
596 (float, f10, f10)
597 (float, alpha_m, alpha_m)
598)
599
600POINT_CLOUD_REGISTER_POINT_STRUCT (pcl::PPFRGBSignature,
601 (float, f1, f1)
602 (float, f2, f2)
603 (float, f3, f3)
604 (float, f4, f4)
605 (float, r_ratio, r_ratio)
606 (float, g_ratio, g_ratio)
607 (float, b_ratio, b_ratio)
608 (float, alpha_m, alpha_m)
609)
610
611POINT_CLOUD_REGISTER_POINT_STRUCT (pcl::NormalBasedSignature12,
612 (float[12], values, values)
613)
614
615POINT_CLOUD_REGISTER_POINT_STRUCT (pcl::FPFHSignature33,
616 (float[33], histogram, fpfh)
617)
618
619POINT_CLOUD_REGISTER_POINT_STRUCT (pcl::VFHSignature308,
620 (float[308], histogram, vfh)
621)
622
623POINT_CLOUD_REGISTER_POINT_STRUCT (pcl::GRSDSignature21,
624 (float[21], histogram, grsd)
625)
626
627POINT_CLOUD_REGISTER_POINT_STRUCT (pcl::ESFSignature640,
628 (float[640], histogram, esf)
629)
630
631POINT_CLOUD_REGISTER_POINT_STRUCT(pcl::GASDSignature512,
632 (float[512], histogram, gasd)
633)
634
635POINT_CLOUD_REGISTER_POINT_STRUCT(pcl::GASDSignature984,
636 (float[984], histogram, gasd)
637)
638
639POINT_CLOUD_REGISTER_POINT_STRUCT(pcl::GASDSignature7992,
640 (float[7992], histogram, gasd)
641)
642
643POINT_CLOUD_REGISTER_POINT_STRUCT (pcl::GFPFHSignature16,
644 (float[16], histogram, gfpfh)
645)
646
647POINT_CLOUD_REGISTER_POINT_STRUCT (pcl::BRISKSignature512,
648 (float, scale, brisk_scale)
649 (float, orientation, brisk_orientation)
650 (unsigned char[64], descriptor, brisk_descriptor512)
651)
652
653POINT_CLOUD_REGISTER_POINT_STRUCT (pcl::Narf36,
654 (float[36], descriptor, descriptor)
655)
Defines all the PCL implemented PointT feature type structures.
#define PCL_MAKE_ALIGNED_OPERATOR_NEW
Macro to signal a class requires a custom allocator.
Definition memory.h:86
Defines functions, macros and traits for allocating and using memory.
static constexpr int descriptorSize_v
std::ostream & operator<<(std::ostream &os, const BivariatePolynomialT< real > &p)
Defines all the PCL and non-PCL macros used.
#define PCL_IF_CONSTEXPR(x)
Definition pcl_macros.h:452
A structure representing the Local Reference Frame of a point.
Eigen::Map< Eigen::Vector3f > getZAxisVector3fMap()
Eigen::Map< Eigen::Vector3f > getXAxisVector3fMap()
Eigen::Map< Eigen::Vector3f > getYAxisVector3fMap()
const Eigen::Map< const Eigen::Vector3f > getYAxisVector3fMap() const
Eigen::Map< Eigen::Matrix3f > getMatrix3fMap()
const Eigen::Map< const Eigen::Vector3f > getZAxisVector3fMap() const
const Eigen::Map< const Eigen::Vector3f > getXAxisVector3fMap() const
const Eigen::Map< const Eigen::Matrix3f > getMatrix3fMap() const
A point structure representing the Binary Robust Invariant Scalable Keypoints (BRISK).
constexpr BRISKSignature512()=default
static constexpr int descriptorSize()
constexpr BRISKSignature512(float _scale, float _orientation)
A point structure representing a description of whether a point is lying on a surface boundary or not...
constexpr Boundary(std::uint8_t _boundary=0)
friend std::ostream & operator<<(std::ostream &os, const Boundary &p)
std::uint8_t boundary_point
A point structure for storing the Point Pair Feature (CPPF) values.
constexpr CPPFSignature(float _alpha=0.f)
constexpr CPPFSignature(float _f1, float _f2, float _f3, float _f4, float _f5, float _f6, float _f7, float _f8, float _f9, float _f10, float _alpha=0.f)
A point structure representing the Ensemble of Shape Functions (ESF).
static constexpr int descriptorSize()
constexpr ESFSignature640()=default
A point structure representing the Fast Point Feature Histogram (FPFH).
static constexpr int descriptorSize()
constexpr FPFHSignature33()=default
A point structure representing the Globally Aligned Spatial Distribution (GASD) shape descriptor.
static constexpr int descriptorSize()
constexpr GASDSignature512()=default
A point structure representing the Globally Aligned Spatial Distribution (GASD) shape and color descr...
static constexpr int descriptorSize()
constexpr GASDSignature7992()=default
A point structure representing the Globally Aligned Spatial Distribution (GASD) shape and color descr...
constexpr GASDSignature984()=default
static constexpr int descriptorSize()
A point structure representing the GFPFH descriptor with 16 bins.
constexpr GFPFHSignature16()=default
static constexpr int descriptorSize()
A point structure representing the Global Radius-based Surface Descriptor (GRSD).
static constexpr int descriptorSize()
constexpr GRSDSignature21()=default
Members: float histogram[N].
static constexpr int descriptorSize()
A point structure representing the three moment invariants.
constexpr MomentInvariants()=default
constexpr MomentInvariants(float _j1, float _j2, float _j3)
friend std::ostream & operator<<(std::ostream &os, const MomentInvariants &p)
A point structure representing the Narf descriptor.
constexpr Narf36(float _x, float _y, float _z, float _roll, float _pitch, float _yaw)
static constexpr int descriptorSize()
constexpr Narf36(float _x, float _y, float _z)
constexpr Narf36()=default
A point structure representing the Normal Based Signature for a feature matrix of 4-by-3.
constexpr NormalBasedSignature12()=default
A point structure representing the Point Feature Histogram with colors (PFHRGB).
constexpr PFHRGBSignature250()=default
static constexpr int descriptorSize()
A point structure representing the Point Feature Histogram (PFH).
constexpr PFHSignature125()=default
static constexpr int descriptorSize()
A point structure for storing the Point Pair Color Feature (PPFRGB) values.
constexpr PPFRGBSignature(float _f1, float _f2, float _f3, float _f4, float _alpha, float _r, float _g, float _b)
constexpr PPFRGBSignature(float _f1, float _f2, float _f3, float _f4, float _alpha=0.f)
constexpr PPFRGBSignature(float _alpha=0.f)
A point structure for storing the Point Pair Feature (PPF) values.
constexpr PPFSignature(float _f1, float _f2, float _f3, float _f4, float _alpha=0.f)
constexpr PPFSignature(float _alpha=0.f)
A point structure representing the principal curvatures and their magnitudes.
constexpr PrincipalCurvatures(float _pc1, float _pc2)
constexpr PrincipalCurvatures(float _x, float _y, float _z)
friend std::ostream & operator<<(std::ostream &os, const PrincipalCurvatures &p)
constexpr PrincipalCurvatures(float _x, float _y, float _z, float _pc1, float _pc2)
A point structure representing the minimum and maximum surface radii (in meters) computed using RSD.
friend std::ostream & operator<<(std::ostream &os, const PrincipalRadiiRSD &p)
constexpr PrincipalRadiiRSD(float _r_min, float _r_max)
constexpr PrincipalRadiiRSD()=default
constexpr ReferenceFrame(const float(&_rf)[9])
constexpr ReferenceFrame(const _ReferenceFrame &p)
A point structure representing the generic Signature of Histograms of OrienTations (SHOT) - shape+col...
float descriptor[1344]
static constexpr int descriptorSize()
constexpr SHOT1344()=default
friend std::ostream & operator<<(std::ostream &os, const SHOT1344 &p)
A point structure representing the generic Signature of Histograms of OrienTations (SHOT) - shape onl...
float descriptor[352]
constexpr SHOT352()=default
friend std::ostream & operator<<(std::ostream &os, const SHOT352 &p)
static constexpr int descriptorSize()
A point structure representing a Shape Context.
static constexpr int descriptorSize()
constexpr ShapeContext1980()=default
A point structure representing a Unique Shape Context.
static constexpr int descriptorSize()
constexpr UniqueShapeContext1960()=default
A point structure representing the Viewpoint Feature Histogram (VFH).
static constexpr int descriptorSize()
constexpr VFHSignature308()=default