Point Cloud Library (PCL)  1.10.1
point_types.hpp
1 /*
2  * Software License Agreement (BSD License)
3  *
4  * Point Cloud Library (PCL) - www.pointclouds.org
5  * Copyright (c) 2010, Willow Garage, Inc.
6  * Copyright (c) 2012-, Open Perception, Inc.
7  *
8  * All rights reserved.
9  *
10  * Redistribution and use in source and binary forms, with or without
11  * modification, are permitted provided that the following conditions
12  * are met:
13  *
14  * * Redistributions of source code must retain the above copyright
15  * notice, this list of conditions and the following disclaimer.
16  * * Redistributions in binary form must reproduce the above
17  * copyright notice, this list of conditions and the following
18  * disclaimer in the documentation and/or other materials provided
19  * with the distribution.
20  * * Neither the name of the copyright holder(s) nor the names of its
21  * contributors may be used to endorse or promote products derived
22  * from this software without specific prior written permission.
23  *
24  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
25  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
26  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
27  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
28  * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
29  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
30  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
31  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
32  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
33  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
34  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
35  * POSSIBILITY OF SUCH DAMAGE.
36  *
37  */
38 
39 #ifndef PCL_IMPL_POINT_TYPES_HPP_
40 #define PCL_IMPL_POINT_TYPES_HPP_
41 
42 #include <cstdint>
43 #if defined __GNUC__
44 # pragma GCC system_header
45 #endif
46 
47 #include <algorithm>
48 #include <ostream>
49 
50 #include <Eigen/Core>
51 
52 #include <pcl/pcl_macros.h>
53 
54 // Define all PCL point types
55 #define PCL_POINT_TYPES \
56  (pcl::PointXYZ) \
57  (pcl::PointXYZI) \
58  (pcl::PointXYZL) \
59  (pcl::Label) \
60  (pcl::PointXYZRGBA) \
61  (pcl::PointXYZRGB) \
62  (pcl::PointXYZRGBL) \
63  (pcl::PointXYZHSV) \
64  (pcl::PointXY) \
65  (pcl::InterestPoint) \
66  (pcl::Axis) \
67  (pcl::Normal) \
68  (pcl::PointNormal) \
69  (pcl::PointXYZRGBNormal) \
70  (pcl::PointXYZINormal) \
71  (pcl::PointXYZLNormal) \
72  (pcl::PointWithRange) \
73  (pcl::PointWithViewpoint) \
74  (pcl::MomentInvariants) \
75  (pcl::PrincipalRadiiRSD) \
76  (pcl::Boundary) \
77  (pcl::PrincipalCurvatures) \
78  (pcl::PFHSignature125) \
79  (pcl::PFHRGBSignature250) \
80  (pcl::PPFSignature) \
81  (pcl::CPPFSignature) \
82  (pcl::PPFRGBSignature) \
83  (pcl::NormalBasedSignature12) \
84  (pcl::FPFHSignature33) \
85  (pcl::VFHSignature308) \
86  (pcl::GASDSignature512) \
87  (pcl::GASDSignature984) \
88  (pcl::GASDSignature7992) \
89  (pcl::GRSDSignature21) \
90  (pcl::ESFSignature640) \
91  (pcl::BRISKSignature512) \
92  (pcl::Narf36) \
93  (pcl::IntensityGradient) \
94  (pcl::PointWithScale) \
95  (pcl::PointSurfel) \
96  (pcl::ShapeContext1980) \
97  (pcl::UniqueShapeContext1960) \
98  (pcl::SHOT352) \
99  (pcl::SHOT1344) \
100  (pcl::PointUV) \
101  (pcl::ReferenceFrame) \
102  (pcl::PointDEM)
103 
104 // Define all point types that include RGB data
105 #define PCL_RGB_POINT_TYPES \
106  (pcl::PointXYZRGBA) \
107  (pcl::PointXYZRGB) \
108  (pcl::PointXYZRGBL) \
109  (pcl::PointXYZRGBNormal) \
110  (pcl::PointSurfel) \
111 
112 // Define all point types that include XYZ data
113 #define PCL_XYZ_POINT_TYPES \
114  (pcl::PointXYZ) \
115  (pcl::PointXYZI) \
116  (pcl::PointXYZL) \
117  (pcl::PointXYZRGBA) \
118  (pcl::PointXYZRGB) \
119  (pcl::PointXYZRGBL) \
120  (pcl::PointXYZHSV) \
121  (pcl::InterestPoint) \
122  (pcl::PointNormal) \
123  (pcl::PointXYZRGBNormal) \
124  (pcl::PointXYZINormal) \
125  (pcl::PointXYZLNormal) \
126  (pcl::PointWithRange) \
127  (pcl::PointWithViewpoint) \
128  (pcl::PointWithScale) \
129  (pcl::PointSurfel) \
130  (pcl::PointDEM)
131 
132 // Define all point types with XYZ and label
133 #define PCL_XYZL_POINT_TYPES \
134  (pcl::PointXYZL) \
135  (pcl::PointXYZRGBL) \
136  (pcl::PointXYZLNormal)
137 
138 // Define all point types that include normal[3] data
139 #define PCL_NORMAL_POINT_TYPES \
140  (pcl::Normal) \
141  (pcl::PointNormal) \
142  (pcl::PointXYZRGBNormal) \
143  (pcl::PointXYZINormal) \
144  (pcl::PointXYZLNormal) \
145  (pcl::PointSurfel)
146 
147 // Define all point types that represent features
148 #define PCL_FEATURE_POINT_TYPES \
149  (pcl::PFHSignature125) \
150  (pcl::PFHRGBSignature250) \
151  (pcl::PPFSignature) \
152  (pcl::CPPFSignature) \
153  (pcl::PPFRGBSignature) \
154  (pcl::NormalBasedSignature12) \
155  (pcl::FPFHSignature33) \
156  (pcl::VFHSignature308) \
157  (pcl::GASDSignature512) \
158  (pcl::GASDSignature984) \
159  (pcl::GASDSignature7992) \
160  (pcl::GRSDSignature21) \
161  (pcl::ESFSignature640) \
162  (pcl::BRISKSignature512) \
163  (pcl::Narf36)
164 
165 namespace pcl
166 {
167 
168  using Array3fMap = Eigen::Map<Eigen::Array3f>;
169  using Array3fMapConst = const Eigen::Map<const Eigen::Array3f>;
170  using Array4fMap = Eigen::Map<Eigen::Array4f, Eigen::Aligned>;
171  using Array4fMapConst = const Eigen::Map<const Eigen::Array4f, Eigen::Aligned>;
172  using Vector3fMap = Eigen::Map<Eigen::Vector3f>;
173  using Vector3fMapConst = const Eigen::Map<const Eigen::Vector3f>;
174  using Vector4fMap = Eigen::Map<Eigen::Vector4f, Eigen::Aligned>;
175  using Vector4fMapConst = const Eigen::Map<const Eigen::Vector4f, Eigen::Aligned>;
176 
177  using Vector3c = Eigen::Matrix<std::uint8_t, 3, 1>;
178  using Vector3cMap = Eigen::Map<Vector3c>;
179  using Vector3cMapConst = const Eigen::Map<const Vector3c>;
180  using Vector4c = Eigen::Matrix<std::uint8_t, 4, 1>;
181  using Vector4cMap = Eigen::Map<Vector4c, Eigen::Aligned>;
182  using Vector4cMapConst = const Eigen::Map<const Vector4c, Eigen::Aligned>;
183 
184 #define PCL_ADD_UNION_POINT4D \
185  union EIGEN_ALIGN16 { \
186  float data[4]; \
187  struct { \
188  float x; \
189  float y; \
190  float z; \
191  }; \
192  };
193 
194 #define PCL_ADD_EIGEN_MAPS_POINT4D \
195  inline pcl::Vector3fMap getVector3fMap () { return (pcl::Vector3fMap (data)); } \
196  inline pcl::Vector3fMapConst getVector3fMap () const { return (pcl::Vector3fMapConst (data)); } \
197  inline pcl::Vector4fMap getVector4fMap () { return (pcl::Vector4fMap (data)); } \
198  inline pcl::Vector4fMapConst getVector4fMap () const { return (pcl::Vector4fMapConst (data)); } \
199  inline pcl::Array3fMap getArray3fMap () { return (pcl::Array3fMap (data)); } \
200  inline pcl::Array3fMapConst getArray3fMap () const { return (pcl::Array3fMapConst (data)); } \
201  inline pcl::Array4fMap getArray4fMap () { return (pcl::Array4fMap (data)); } \
202  inline pcl::Array4fMapConst getArray4fMap () const { return (pcl::Array4fMapConst (data)); }
203 
204 #define PCL_ADD_POINT4D \
205  PCL_ADD_UNION_POINT4D \
206  PCL_ADD_EIGEN_MAPS_POINT4D
207 
208 #define PCL_ADD_UNION_NORMAL4D \
209  union EIGEN_ALIGN16 { \
210  float data_n[4]; \
211  float normal[3]; \
212  struct { \
213  float normal_x; \
214  float normal_y; \
215  float normal_z; \
216  }; \
217  };
218 
219 #define PCL_ADD_EIGEN_MAPS_NORMAL4D \
220  inline pcl::Vector3fMap getNormalVector3fMap () { return (pcl::Vector3fMap (data_n)); } \
221  inline pcl::Vector3fMapConst getNormalVector3fMap () const { return (pcl::Vector3fMapConst (data_n)); } \
222  inline pcl::Vector4fMap getNormalVector4fMap () { return (pcl::Vector4fMap (data_n)); } \
223  inline pcl::Vector4fMapConst getNormalVector4fMap () const { return (pcl::Vector4fMapConst (data_n)); }
224 
225 #define PCL_ADD_NORMAL4D \
226  PCL_ADD_UNION_NORMAL4D \
227  PCL_ADD_EIGEN_MAPS_NORMAL4D
228 
229 #define PCL_ADD_UNION_RGB \
230  union \
231  { \
232  union \
233  { \
234  struct \
235  { \
236  std::uint8_t b; \
237  std::uint8_t g; \
238  std::uint8_t r; \
239  std::uint8_t a; \
240  }; \
241  float rgb; \
242  }; \
243  std::uint32_t rgba; \
244  };
245 
246 #define PCL_ADD_EIGEN_MAPS_RGB \
247  inline Eigen::Vector3i getRGBVector3i () { return (Eigen::Vector3i (r, g, b)); } \
248  inline const Eigen::Vector3i getRGBVector3i () const { return (Eigen::Vector3i (r, g, b)); } \
249  inline Eigen::Vector4i getRGBVector4i () { return (Eigen::Vector4i (r, g, b, a)); } \
250  inline const Eigen::Vector4i getRGBVector4i () const { return (Eigen::Vector4i (r, g, b, a)); } \
251  inline Eigen::Vector4i getRGBAVector4i () { return (Eigen::Vector4i (r, g, b, a)); } \
252  inline const Eigen::Vector4i getRGBAVector4i () const { return (Eigen::Vector4i (r, g, b, a)); } \
253  inline pcl::Vector3cMap getBGRVector3cMap () { return (pcl::Vector3cMap (reinterpret_cast<std::uint8_t*> (&rgba))); } \
254  inline pcl::Vector3cMapConst getBGRVector3cMap () const { return (pcl::Vector3cMapConst (reinterpret_cast<const std::uint8_t*> (&rgba))); } \
255  inline pcl::Vector4cMap getBGRAVector4cMap () { return (pcl::Vector4cMap (reinterpret_cast<std::uint8_t*> (&rgba))); } \
256  inline pcl::Vector4cMapConst getBGRAVector4cMap () const { return (pcl::Vector4cMapConst (reinterpret_cast<const std::uint8_t*> (&rgba))); }
257 
258 #define PCL_ADD_RGB \
259  PCL_ADD_UNION_RGB \
260  PCL_ADD_EIGEN_MAPS_RGB
261 
262 #define PCL_ADD_INTENSITY \
263  struct \
264  { \
265  float intensity; \
266  }; \
267 
268 #define PCL_ADD_INTENSITY_8U \
269  struct \
270  { \
271  std::uint8_t intensity; \
272  }; \
273 
274 #define PCL_ADD_INTENSITY_32U \
275  struct \
276  { \
277  std::uint32_t intensity; \
278  }; \
279 
280 
281  struct _PointXYZ
282  {
283  PCL_ADD_POINT4D; // This adds the members x,y,z which can also be accessed using the point (which is float[4])
284 
286  };
287 
288  PCL_EXPORTS std::ostream& operator << (std::ostream& os, const PointXYZ& p);
289  /** \brief A point structure representing Euclidean xyz coordinates. (SSE friendly)
290  * \ingroup common
291  */
292  struct EIGEN_ALIGN16 PointXYZ : public _PointXYZ
293  {
294  inline PointXYZ (const _PointXYZ &p): PointXYZ(p.x, p.y, p.z) {}
295 
296  inline PointXYZ (): PointXYZ(0.f, 0.f, 0.f) {}
297 
298  inline PointXYZ (float _x, float _y, float _z)
299  {
300  x = _x; y = _y; z = _z;
301  data[3] = 1.0f;
302  }
303 
304  friend std::ostream& operator << (std::ostream& os, const PointXYZ& p);
306  };
307 
308 
309 #ifdef RGB
310 #undef RGB
311 #endif
312  struct _RGB
313  {
315  };
316 
317  PCL_EXPORTS std::ostream& operator << (std::ostream& os, const RGB& p);
318  /** \brief A structure representing RGB color information.
319  *
320  * The RGBA information is available either as separate r, g, b, or as a
321  * packed std::uint32_t rgba value. To pack it, use:
322  *
323  * \code
324  * int rgb = ((int)r) << 16 | ((int)g) << 8 | ((int)b);
325  * \endcode
326  *
327  * To unpack it use:
328  *
329  * \code
330  * int rgb = ...;
331  * std::uint8_t r = (rgb >> 16) & 0x0000ff;
332  * std::uint8_t g = (rgb >> 8) & 0x0000ff;
333  * std::uint8_t b = (rgb) & 0x0000ff;
334  * \endcode
335  *
336  */
337  struct RGB: public _RGB
338  {
339  inline RGB (const _RGB &p)
340  {
341  rgba = p.rgba;
342  }
343 
344  inline RGB (): RGB(0, 0, 0) {}
345 
346  inline RGB (std::uint8_t _r, std::uint8_t _g, std::uint8_t _b)
347  {
348  r = _r; g = _g; b = _b;
349  a = 255;
350  }
351 
352  friend std::ostream& operator << (std::ostream& os, const RGB& p);
353  };
354 
355  struct _Intensity
356  {
358  };
359 
360  PCL_EXPORTS std::ostream& operator << (std::ostream& os, const Intensity& p);
361  /** \brief A point structure representing the grayscale intensity in single-channel images.
362  * Intensity is represented as a float value.
363  * \ingroup common
364  */
365  struct Intensity: public _Intensity
366  {
367  inline Intensity (const _Intensity &p)
368  {
369  intensity = p.intensity;
370  }
371 
372  inline Intensity (float _intensity = 0.f)
373  {
374  intensity = _intensity;
375  }
376 
377  friend std::ostream& operator << (std::ostream& os, const Intensity& p);
378  };
379 
380 
382  {
384  };
385 
386  PCL_EXPORTS std::ostream& operator << (std::ostream& os, const Intensity8u& p);
387  /** \brief A point structure representing the grayscale intensity in single-channel images.
388  * Intensity is represented as a std::uint8_t value.
389  * \ingroup common
390  */
391  struct Intensity8u: public _Intensity8u
392  {
393  inline Intensity8u (const _Intensity8u &p)
394  {
395  intensity = p.intensity;
396  }
397 
398  inline Intensity8u (std::uint8_t _intensity = 0)
399  {
400  intensity = _intensity;
401  }
402 
403 #if defined(_LIBCPP_VERSION) && _LIBCPP_VERSION <= 1101
404  operator unsigned char() const
405  {
406  return intensity;
407  }
408 #endif
409 
410  friend std::ostream& operator << (std::ostream& os, const Intensity8u& p);
411  };
412 
414  {
416  };
417 
418  PCL_EXPORTS std::ostream& operator << (std::ostream& os, const Intensity32u& p);
419  /** \brief A point structure representing the grayscale intensity in single-channel images.
420  * Intensity is represented as a std::uint32_t value.
421  * \ingroup common
422  */
424  {
425  inline Intensity32u (const _Intensity32u &p)
426  {
427  intensity = p.intensity;
428  }
429 
430  inline Intensity32u (std::uint32_t _intensity = 0)
431  {
432  intensity = _intensity;
433  }
434 
435  friend std::ostream& operator << (std::ostream& os, const Intensity32u& p);
436  };
437 
438  /** \brief A point structure representing Euclidean xyz coordinates, and the intensity value.
439  * \ingroup common
440  */
441  struct EIGEN_ALIGN16 _PointXYZI
442  {
443  PCL_ADD_POINT4D; // This adds the members x,y,z which can also be accessed using the point (which is float[4])
444  union
445  {
446  struct
447  {
448  float intensity;
449  };
450  float data_c[4];
451  };
453  };
454 
455  PCL_EXPORTS std::ostream& operator << (std::ostream& os, const PointXYZI& p);
456  struct PointXYZI : public _PointXYZI
457  {
458  inline PointXYZI (const _PointXYZI &p)
459  {
460  x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
461  intensity = p.intensity;
462  }
463 
464  inline PointXYZI (float _intensity = 0.f): PointXYZI(0.f, 0.f, 0.f, _intensity) {}
465 
466  inline PointXYZI (float _x, float _y, float _z, float _intensity = 0.f)
467  {
468  x = _x; y = _y; z = _z;
469  data[3] = 1.0f;
470  intensity = _intensity;
471  }
472 
473  friend std::ostream& operator << (std::ostream& os, const PointXYZI& p);
474  };
475 
476 
477  struct EIGEN_ALIGN16 _PointXYZL
478  {
479  PCL_ADD_POINT4D; // This adds the members x,y,z which can also be accessed using the point (which is float[4])
480  std::uint32_t label;
482  };
483 
484  PCL_EXPORTS std::ostream& operator << (std::ostream& os, const PointXYZL& p);
485  struct PointXYZL : public _PointXYZL
486  {
487  inline PointXYZL (const _PointXYZL &p)
488  {
489  x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
490  label = p.label;
491  }
492 
493  inline PointXYZL (std::uint32_t _label = 0): PointXYZL(0.f, 0.f, 0.f, _label) {}
494 
495  inline PointXYZL (float _x, float _y, float _z, std::uint32_t _label = 0)
496  {
497  x = _x; y = _y; z = _z;
498  data[3] = 1.0f;
499  label = _label;
500  }
501 
502  friend std::ostream& operator << (std::ostream& os, const PointXYZL& p);
503  };
504 
505 
506  PCL_EXPORTS std::ostream& operator << (std::ostream& os, const Label& p);
507  struct Label
508  {
509  std::uint32_t label = 0;
510 
511  Label (std::uint32_t _label = 0): label(_label) {}
512 
513  friend std::ostream& operator << (std::ostream& os, const Label& p);
514  };
515 
516 
517  struct EIGEN_ALIGN16 _PointXYZRGBA
518  {
519  PCL_ADD_POINT4D; // This adds the members x,y,z which can also be accessed using the point (which is float[4])
522  };
523 
524  PCL_EXPORTS std::ostream& operator << (std::ostream& os, const PointXYZRGBA& p);
525  /** \brief A point structure representing Euclidean xyz coordinates, and the RGBA color.
526  *
527  * The RGBA information is available either as separate r, g, b, or as a
528  * packed std::uint32_t rgba value. To pack it, use:
529  *
530  * \code
531  * int rgb = ((int)r) << 16 | ((int)g) << 8 | ((int)b);
532  * \endcode
533  *
534  * To unpack it use:
535  *
536  * \code
537  * int rgb = ...;
538  * std::uint8_t r = (rgb >> 16) & 0x0000ff;
539  * std::uint8_t g = (rgb >> 8) & 0x0000ff;
540  * std::uint8_t b = (rgb) & 0x0000ff;
541  * \endcode
542  *
543  * \ingroup common
544  */
545  struct EIGEN_ALIGN16 PointXYZRGBA : public _PointXYZRGBA
546  {
547  inline PointXYZRGBA (const _PointXYZRGBA &p)
548  {
549  x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
550  rgba = p.rgba;
551  }
552 
553  inline PointXYZRGBA (): PointXYZRGBA (0, 0, 0, 0) {}
554 
555  inline PointXYZRGBA (std::uint8_t _r, std::uint8_t _g, std::uint8_t _b, std::uint8_t _a):
556  PointXYZRGBA (0.f, 0.f, 0.f, _r, _g, _b, _a) {}
557 
558  inline PointXYZRGBA (float _x, float _y, float _z):
559  PointXYZRGBA (_x, _y, _z, 0, 0, 0, 0) {}
560 
561  inline PointXYZRGBA (float _x, float _y, float _z, std::uint8_t _r,
562  std::uint8_t _g, std::uint8_t _b, std::uint8_t _a)
563  {
564  x = _x; y = _y; z = _z;
565  data[3] = 1.0f;
566  r = _r; g = _g; b = _b; a = _a;
567  }
568 
569  friend std::ostream& operator << (std::ostream& os, const PointXYZRGBA& p);
570  };
571 
572 
573  struct EIGEN_ALIGN16 _PointXYZRGB
574  {
575  PCL_ADD_POINT4D; // This adds the members x,y,z which can also be accessed using the point (which is float[4])
578  };
579 
580  struct EIGEN_ALIGN16 _PointXYZRGBL
581  {
582  PCL_ADD_POINT4D; // This adds the members x,y,z which can also be accessed using the point (which is float[4])
584  std::uint32_t label;
586  };
587 
588  PCL_EXPORTS std::ostream& operator << (std::ostream& os, const PointXYZRGB& p);
589  /** \brief A point structure representing Euclidean xyz coordinates, and the RGB color.
590  *
591  * Due to historical reasons (PCL was first developed as a ROS package), the
592  * RGB information is packed into an integer and casted to a float. This is
593  * something we wish to remove in the near future, but in the meantime, the
594  * following code snippet should help you pack and unpack RGB colors in your
595  * PointXYZRGB structure:
596  *
597  * \code
598  * // pack r/g/b into rgb
599  * std::uint8_t r = 255, g = 0, b = 0; // Example: Red color
600  * std::uint32_t rgb = ((std::uint32_t)r << 16 | (std::uint32_t)g << 8 | (std::uint32_t)b);
601  * p.rgb = *reinterpret_cast<float*>(&rgb);
602  * \endcode
603  *
604  * To unpack the data into separate values, use:
605  *
606  * \code
607  * PointXYZRGB p;
608  * // unpack rgb into r/g/b
609  * std::uint32_t rgb = *reinterpret_cast<int*>(&p.rgb);
610  * std::uint8_t r = (rgb >> 16) & 0x0000ff;
611  * std::uint8_t g = (rgb >> 8) & 0x0000ff;
612  * std::uint8_t b = (rgb) & 0x0000ff;
613  * \endcode
614  *
615  *
616  * Alternatively, from 1.1.0 onwards, you can use p.r, p.g, and p.b directly.
617  *
618  * \ingroup common
619  */
620  struct EIGEN_ALIGN16 PointXYZRGB : public _PointXYZRGB
621  {
622  inline PointXYZRGB (const _PointXYZRGB &p)
623  {
624  x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
625  rgb = p.rgb;
626  }
627 
628  inline PointXYZRGB (): PointXYZRGB (0.f, 0.f, 0.f) {}
629 
630  inline PointXYZRGB (std::uint8_t _r, std::uint8_t _g, std::uint8_t _b):
631  PointXYZRGB (0.f, 0.f, 0.f, _r, _g, _b) {}
632 
633  inline PointXYZRGB (float _x, float _y, float _z):
634  PointXYZRGB (_x, _y, _z, 0, 0, 0) {}
635 
636  inline PointXYZRGB (float _x, float _y, float _z,
637  std::uint8_t _r, std::uint8_t _g, std::uint8_t _b)
638  {
639  x = _x; y = _y; z = _z;
640  data[3] = 1.0f;
641  r = _r; g = _g; b = _b;
642  a = 255;
643  }
644 
645  friend std::ostream& operator << (std::ostream& os, const PointXYZRGB& p);
647  };
648 
649 
650  PCL_EXPORTS std::ostream& operator << (std::ostream& os, const PointXYZRGBL& p);
651  struct EIGEN_ALIGN16 PointXYZRGBL : public _PointXYZRGBL
652  {
653  inline PointXYZRGBL (const _PointXYZRGBL &p)
654  {
655  x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
656  rgba = p.rgba;
657  label = p.label;
658  }
659 
660  inline PointXYZRGBL (std::uint32_t _label = 0):
661  PointXYZRGBL (0.f, 0.f, 0.f, 0, 0, 0, _label) {}
662 
663  inline PointXYZRGBL (std::uint8_t _r, std::uint8_t _g, std::uint8_t _b):
664  PointXYZRGBL (0.f, 0.f, 0.f, _r, _g, _b) {}
665 
666  inline PointXYZRGBL (float _x, float _y, float _z):
667  PointXYZRGBL (_x, _y, _z, 0, 0, 0) {}
668 
669  inline PointXYZRGBL (float _x, float _y, float _z,
670  std::uint8_t _r, std::uint8_t _g, std::uint8_t _b,
671  std::uint32_t _label = 0)
672  {
673  x = _x; y = _y; z = _z;
674  data[3] = 1.0f;
675  r = _r; g = _g; b = _b;
676  a = 255;
677  label = _label;
678  }
679 
680  friend std::ostream& operator << (std::ostream& os, const PointXYZRGBL& p);
682  };
683 
684 
685  struct EIGEN_ALIGN16 _PointXYZHSV
686  {
687  PCL_ADD_POINT4D; // This adds the members x,y,z which can also be accessed using the point (which is float[4])
688  union
689  {
690  struct
691  {
692  float h;
693  float s;
694  float v;
695  };
696  float data_c[4];
697  };
699  };
700 
701  PCL_EXPORTS std::ostream& operator << (std::ostream& os, const PointXYZHSV& p);
702  struct EIGEN_ALIGN16 PointXYZHSV : public _PointXYZHSV
703  {
704  inline PointXYZHSV (const _PointXYZHSV &p)
705  {
706  x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
707  h = p.h; s = p.s; v = p.v;
708  }
709 
710  inline PointXYZHSV (): PointXYZHSV (0.f, 0.f, 0.f) {}
711 
712  // @TODO: Use strong types??
713  // This is a dangerous type, doesn't behave like others
714  inline PointXYZHSV (float _h, float _s, float _v):
715  PointXYZHSV (0.f, 0.f, 0.f, _h, _s, _v) {}
716 
717  inline PointXYZHSV (float _x, float _y, float _z,
718  float _h, float _s, float _v)
719  {
720  x = _x; y = _y; z = _z;
721  data[3] = 1.0f;
722  h = _h; s = _s; v = _v;
723  data_c[3] = 0;
724  }
725 
726  friend std::ostream& operator << (std::ostream& os, const PointXYZHSV& p);
728  };
729 
730 
731 
732  PCL_EXPORTS std::ostream& operator << (std::ostream& os, const PointXY& p);
733  /** \brief A 2D point structure representing Euclidean xy coordinates.
734  * \ingroup common
735  */
736  struct PointXY
737  {
738  float x = 0.f;
739  float y = 0.f;
740 
741  inline PointXY() = default;
742 
743  inline PointXY(float _x, float _y): x(_x), y(_y) {}
744 
745  friend std::ostream& operator << (std::ostream& os, const PointXY& p);
746  };
747 
748  PCL_EXPORTS std::ostream& operator << (std::ostream& os, const PointUV& p);
749  /** \brief A 2D point structure representing pixel image coordinates.
750  * \note We use float to be able to represent subpixels.
751  * \ingroup common
752  */
753  struct PointUV
754  {
755  float u = 0.f;
756  float v = 0.f;
757 
758  inline PointUV() = default;
759 
760  inline PointUV(float _u, float _v): u(_u), v(_v) {}
761 
762  friend std::ostream& operator << (std::ostream& os, const PointUV& p);
763  };
764 
765  PCL_EXPORTS std::ostream& operator << (std::ostream& os, const InterestPoint& p);
766  /** \brief A point structure representing an interest point with Euclidean xyz coordinates, and an interest value.
767  * \ingroup common
768  */
769  // @TODO: inheritance trick like on other PointTypes
770  struct EIGEN_ALIGN16 InterestPoint
771  {
772  PCL_ADD_POINT4D; // This adds the members x,y,z which can also be accessed using the point (which is float[4])
773  union
774  {
775  struct
776  {
777  float strength;
778  };
779  float data_c[4];
780  };
782 
783  friend std::ostream& operator << (std::ostream& os, const InterestPoint& p);
784  };
785 
786  struct EIGEN_ALIGN16 _Normal
787  {
788  PCL_ADD_NORMAL4D; // This adds the member normal[3] which can also be accessed using the point (which is float[4])
789  union
790  {
791  struct
792  {
793  float curvature;
794  };
795  float data_c[4];
796  };
798  };
799 
800  PCL_EXPORTS std::ostream& operator << (std::ostream& os, const Normal& p);
801  /** \brief A point structure representing normal coordinates and the surface curvature estimate. (SSE friendly)
802  * \ingroup common
803  */
804  struct Normal : public _Normal
805  {
806  inline Normal (const _Normal &p)
807  {
808  normal_x = p.normal_x; normal_y = p.normal_y; normal_z = p.normal_z;
809  data_n[3] = 0.0f;
810  curvature = p.curvature;
811  }
812 
813  inline Normal (float _curvature = 0.f): Normal (0.f, 0.f, 0.f, _curvature) {}
814 
815  inline Normal (float n_x, float n_y, float n_z, float _curvature = 0.f)
816  {
817  normal_x = n_x; normal_y = n_y; normal_z = n_z;
818  data_n[3] = 0.0f;
819  curvature = _curvature;
820  }
821 
822  friend std::ostream& operator << (std::ostream& os, const Normal& p);
824  };
825 
826 
827  struct EIGEN_ALIGN16 _Axis
828  {
831  };
832 
833  PCL_EXPORTS std::ostream& operator << (std::ostream& os, const Axis& p);
834  /** \brief A point structure representing an Axis using its normal coordinates. (SSE friendly)
835  * \ingroup common
836  */
837  struct EIGEN_ALIGN16 Axis : public _Axis
838  {
839  inline Axis (const _Axis &p)
840  {
841  normal_x = p.normal_x; normal_y = p.normal_y; normal_z = p.normal_z;
842  data_n[3] = 0.0f;
843  }
844 
845  inline Axis (): Axis (0.f, 0.f, 0.f) {}
846 
847  inline Axis (float n_x, float n_y, float n_z)
848  {
849  normal_x = n_x; normal_y = n_y; normal_z = n_z;
850  data_n[3] = 0.0f;
851  }
852 
853  friend std::ostream& operator << (std::ostream& os, const Axis& p);
855  };
856 
857 
858  struct EIGEN_ALIGN16 _PointNormal
859  {
860  PCL_ADD_POINT4D; // This adds the members x,y,z which can also be accessed using the point (which is float[4])
861  PCL_ADD_NORMAL4D; // This adds the member normal[3] which can also be accessed using the point (which is float[4])
862  union
863  {
864  struct
865  {
866  float curvature;
867  };
868  float data_c[4];
869  };
871  };
872 
873  PCL_EXPORTS std::ostream& operator << (std::ostream& os, const PointNormal& p);
874  /** \brief A point structure representing Euclidean xyz coordinates, together with normal coordinates and the surface curvature estimate. (SSE friendly)
875  * \ingroup common
876  */
877  struct PointNormal : public _PointNormal
878  {
879  inline PointNormal (const _PointNormal &p)
880  {
881  x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
882  normal_x = p.normal_x; normal_y = p.normal_y; normal_z = p.normal_z; data_n[3] = 0.0f;
883  curvature = p.curvature;
884  }
885 
886  inline PointNormal (float _curvature = 0.f): PointNormal (0.f, 0.f, 0.f, 0.f, 0.f, 0.f, _curvature) {}
887 
888  inline PointNormal (float _x, float _y, float _z):
889  PointNormal (_x, _y, _z, 0.f, 0.f, 0.f, 0.f) {}
890 
891  inline PointNormal (float _x, float _y, float _z, float n_x, float n_y, float n_z, float _curvature = 0.f)
892  {
893  x = _x; y = _y; z = _z;
894  data[3] = 1.0f;
895  normal_x = n_x; normal_y = n_y; normal_z = n_z;
896  data_n[3] = 0.0f;
897  curvature = _curvature;
898  }
899 
900  friend std::ostream& operator << (std::ostream& os, const PointNormal& p);
901  };
902 
903 
904  struct EIGEN_ALIGN16 _PointXYZRGBNormal
905  {
906  PCL_ADD_POINT4D; // This adds the members x,y,z which can also be accessed using the point (which is float[4])
907  PCL_ADD_NORMAL4D; // This adds the member normal[3] which can also be accessed using the point (which is float[4])
908  union
909  {
910  struct
911  {
913  float curvature;
914  };
915  float data_c[4];
916  };
919  };
920 
921  PCL_EXPORTS std::ostream& operator << (std::ostream& os, const PointXYZRGBNormal& p);
922  /** \brief A point structure representing Euclidean xyz coordinates, and the RGB color, together with normal coordinates and the surface curvature estimate.
923  * Due to historical reasons (PCL was first developed as a ROS package), the
924  * RGB information is packed into an integer and casted to a float. This is
925  * something we wish to remove in the near future, but in the meantime, the
926  * following code snippet should help you pack and unpack RGB colors in your
927  * PointXYZRGB structure:
928  *
929  * \code
930  * // pack r/g/b into rgb
931  * std::uint8_t r = 255, g = 0, b = 0; // Example: Red color
932  * std::uint32_t rgb = ((std::uint32_t)r << 16 | (std::uint32_t)g << 8 | (std::uint32_t)b);
933  * p.rgb = *reinterpret_cast<float*>(&rgb);
934  * \endcode
935  *
936  * To unpack the data into separate values, use:
937  *
938  * \code
939  * PointXYZRGB p;
940  * // unpack rgb into r/g/b
941  * std::uint32_t rgb = *reinterpret_cast<int*>(&p.rgb);
942  * std::uint8_t r = (rgb >> 16) & 0x0000ff;
943  * std::uint8_t g = (rgb >> 8) & 0x0000ff;
944  * std::uint8_t b = (rgb) & 0x0000ff;
945  * \endcode
946  *
947  *
948  * Alternatively, from 1.1.0 onwards, you can use p.r, p.g, and p.b directly.
949  * \ingroup common
950  */
952  {
954  {
955  x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
956  normal_x = p.normal_x; normal_y = p.normal_y; normal_z = p.normal_z; data_n[3] = 0.0f;
957  curvature = p.curvature;
958  rgba = p.rgba;
959  }
960 
961  inline PointXYZRGBNormal (float _curvature = 0.f):
962  PointXYZRGBNormal (0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, _curvature) {}
963 
964  inline PointXYZRGBNormal (float _x, float _y, float _z):
965  PointXYZRGBNormal (_x, _y, _z, 0, 0, 0) {}
966 
967  inline PointXYZRGBNormal (std::uint8_t _r, std::uint8_t _g, std::uint8_t _b):
968  PointXYZRGBNormal (0.f, 0.f, 0.f, _r, _g, _b) {}
969 
970  inline PointXYZRGBNormal (float _x, float _y, float _z, std::uint8_t _r, std::uint8_t _g, std::uint8_t _b):
971  PointXYZRGBNormal (_x, _y, _z, _r, _g, _b, 0.f, 0.f, 0.f) {}
972 
973  inline PointXYZRGBNormal (float _x, float _y, float _z, std::uint8_t _r, std::uint8_t _g, std::uint8_t _b,
974  float n_x, float n_y, float n_z, float _curvature = 0.f)
975  {
976  x = _x; y = _y; z = _z;
977  data[3] = 1.0f;
978  r = _r; g = _g; b = _b;
979  a = 255;
980  normal_x = n_x; normal_y = n_y; normal_z = n_z;
981  data_n[3] = 0.f;
982  curvature = _curvature;
983  }
984 
985  friend std::ostream& operator << (std::ostream& os, const PointXYZRGBNormal& p);
986  };
987 
988  struct EIGEN_ALIGN16 _PointXYZINormal
989  {
990  PCL_ADD_POINT4D; // This adds the members x,y,z which can also be accessed using the point (which is float[4])
991  PCL_ADD_NORMAL4D; // This adds the member normal[3] which can also be accessed using the point (which is float[4])
992  union
993  {
994  struct
995  {
996  float intensity;
997  float curvature;
998  };
999  float data_c[4];
1000  };
1002  };
1003 
1004  PCL_EXPORTS std::ostream& operator << (std::ostream& os, const PointXYZINormal& p);
1005  /** \brief A point structure representing Euclidean xyz coordinates, intensity, together with normal coordinates and the surface curvature estimate.
1006  * \ingroup common
1007  */
1009  {
1011  {
1012  x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
1013  normal_x = p.normal_x; normal_y = p.normal_y; normal_z = p.normal_z; data_n[3] = 0.0f;
1014  curvature = p.curvature;
1015  intensity = p.intensity;
1016  }
1017 
1018  inline PointXYZINormal (float _intensity = 0.f): PointXYZINormal (0.f, 0.f, 0.f, _intensity) {}
1019 
1020  inline PointXYZINormal (float _x, float _y, float _z, float _intensity = 0.f):
1021  PointXYZINormal (_x, _y, _z, _intensity, 0.f, 0.f, 0.f) {}
1022 
1023  inline PointXYZINormal (float _x, float _y, float _z, float _intensity,
1024  float n_x, float n_y, float n_z, float _curvature = 0.f)
1025  {
1026  x = _x; y = _y; z = _z;
1027  data[3] = 1.0f;
1028  intensity = _intensity;
1029  normal_x = n_x; normal_y = n_y; normal_z = n_z;
1030  data_n[3] = 0.f;
1031  curvature = _curvature;
1032  }
1033 
1034  friend std::ostream& operator << (std::ostream& os, const PointXYZINormal& p);
1035  };
1036 
1037 //----
1038  struct EIGEN_ALIGN16 _PointXYZLNormal
1039  {
1040  PCL_ADD_POINT4D; // This adds the members x,y,z which can also be accessed using the point (which is float[4])
1041  PCL_ADD_NORMAL4D; // This adds the member normal[3] which can also be accessed using the point (which is float[4])
1042  union
1043  {
1044  struct
1045  {
1046  std::uint32_t label;
1047  float curvature;
1048  };
1049  float data_c[4];
1050  };
1052  };
1053 
1054  PCL_EXPORTS std::ostream& operator << (std::ostream& os, const PointXYZLNormal& p);
1055  /** \brief A point structure representing Euclidean xyz coordinates, a label, together with normal coordinates and the surface curvature estimate.
1056  * \ingroup common
1057  */
1059  {
1061  {
1062  x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
1063  normal_x = p.normal_x; normal_y = p.normal_y; normal_z = p.normal_z; data_n[3] = 0.0f;
1064  curvature = p.curvature;
1065  label = p.label;
1066  }
1067 
1068  inline PointXYZLNormal (std::uint32_t _label = 0): PointXYZLNormal (0.f, 0.f, 0.f, _label) {}
1069 
1070  inline PointXYZLNormal (float _x, float _y, float _z, std::uint32_t _label = 0.f):
1071  PointXYZLNormal (_x, _y, _z, _label, 0.f, 0.f, 0.f) {}
1072 
1073  inline PointXYZLNormal (float _x, float _y, float _z, std::uint32_t _label,
1074  float n_x, float n_y, float n_z, float _curvature = 0.f)
1075  {
1076  x = _x; y = _y; z = _z;
1077  data[3] = 1.0f;
1078  label = _label;
1079  normal_x = n_x; normal_y = n_y; normal_z = n_z;
1080  data_n[3] = 0.f;
1081  curvature = _curvature;
1082  }
1083 
1084  friend std::ostream& operator << (std::ostream& os, const PointXYZLNormal& p);
1085  };
1086 
1087 // ---
1088 
1089 
1090  struct EIGEN_ALIGN16 _PointWithRange
1091  {
1092  PCL_ADD_POINT4D; // This adds the members x,y,z which can also be accessed using the point (which is float[4])
1093  union
1094  {
1095  struct
1096  {
1097  float range;
1098  };
1099  float data_c[4];
1100  };
1102  };
1103 
1104  PCL_EXPORTS std::ostream& operator << (std::ostream& os, const PointWithRange& p);
1105  /** \brief A point structure representing Euclidean xyz coordinates, padded with an extra range float.
1106  * \ingroup common
1107  */
1109  {
1111  {
1112  x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
1113  range = p.range;
1114  }
1115 
1116  inline PointWithRange (float _range = 0.f): PointWithRange (0.f, 0.f, 0.f, _range) {}
1117 
1118  inline PointWithRange (float _x, float _y, float _z, float _range = 0.f)
1119  {
1120  x = _x; y = _y; z = _z;
1121  data[3] = 1.0f;
1122  range = _range;
1123  }
1124 
1125  friend std::ostream& operator << (std::ostream& os, const PointWithRange& p);
1126  };
1127 
1128 
1129  struct EIGEN_ALIGN16 _PointWithViewpoint
1130  {
1131  PCL_ADD_POINT4D; // This adds the members x,y,z which can also be accessed using the point (which is float[4])
1132  union
1133  {
1134  struct
1135  {
1136  float vp_x;
1137  float vp_y;
1138  float vp_z;
1139  };
1140  float data_c[4];
1141  };
1143  };
1144 
1145  PCL_EXPORTS std::ostream& operator << (std::ostream& os, const PointWithViewpoint& p);
1146  /** \brief A point structure representing Euclidean xyz coordinates together with the viewpoint from which it was seen.
1147  * \ingroup common
1148  */
1149  struct EIGEN_ALIGN16 PointWithViewpoint : public _PointWithViewpoint
1150  {
1152  {
1153  x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
1154  vp_x = p.vp_x; vp_y = p.vp_y; vp_z = p.vp_z;
1155  }
1156 
1157  inline PointWithViewpoint (): PointWithViewpoint (0.f, 0.f, 0.f) {}
1158 
1159  PCL_DEPRECATED("Use ctor accepting all position (x, y, z) data")
1160  inline PointWithViewpoint (float _x, float _y = 0.f):
1161  PointWithViewpoint (_x, _y, 0.f) {}
1162 
1163  PCL_DEPRECATED("Use ctor accepting all viewpoint (vp_x, vp_y, vp_z) data")
1164  inline PointWithViewpoint (float _x, float _y, float _z, float _vp_x, float _vp_y = 0.f):
1165  PointWithViewpoint (_x, _y, _z, _vp_x, _vp_y, 0.f) {}
1166 
1167  inline PointWithViewpoint (float _x, float _y, float _z): PointWithViewpoint (_x, _y, _z, 0.f, 0.f, 0.f) {}
1168 
1169  inline PointWithViewpoint (float _x, float _y, float _z, float _vp_x, float _vp_y, float _vp_z)
1170  {
1171  x = _x; y = _y; z = _z;
1172  data[3] = 1.0f;
1173  vp_x = _vp_x; vp_y = _vp_y; vp_z = _vp_z;
1174  }
1175 
1176  friend std::ostream& operator << (std::ostream& os, const PointWithViewpoint& p);
1177  };
1178 
1179  PCL_EXPORTS std::ostream& operator << (std::ostream& os, const MomentInvariants& p);
1180  /** \brief A point structure representing the three moment invariants.
1181  * \ingroup common
1182  */
1184  {
1185  float j1 = 0.f, j2 = 0.f, j3 = 0.f;
1186 
1187  inline MomentInvariants () = default;
1188 
1189  inline MomentInvariants (float _j1, float _j2, float _j3): j1 (_j1), j2 (_j2), j3 (_j3) {}
1190 
1191  friend std::ostream& operator << (std::ostream& os, const MomentInvariants& p);
1192  };
1193 
1194  PCL_EXPORTS std::ostream& operator << (std::ostream& os, const PrincipalRadiiRSD& p);
1195  /** \brief A point structure representing the minimum and maximum surface radii (in meters) computed using RSD.
1196  * \ingroup common
1197  */
1199  {
1200  float r_min = 0.f, r_max = 0.f;
1201 
1202  inline PrincipalRadiiRSD () = default;
1203 
1204  inline PrincipalRadiiRSD (float _r_min, float _r_max): r_min (_r_min), r_max (_r_max) {}
1205 
1206  friend std::ostream& operator << (std::ostream& os, const PrincipalRadiiRSD& p);
1207  };
1208 
1209  PCL_EXPORTS std::ostream& operator << (std::ostream& os, const Boundary& p);
1210  /** \brief A point structure representing a description of whether a point is lying on a surface boundary or not.
1211  * \ingroup common
1212  */
1213  struct Boundary
1214  {
1215  std::uint8_t boundary_point = 0;
1216 
1217 #if defined(_LIBCPP_VERSION) && _LIBCPP_VERSION <= 1101
1218  operator unsigned char() const
1219  {
1220  return boundary_point;
1221  }
1222 #endif
1223 
1224  inline Boundary (std::uint8_t _boundary = 0): boundary_point (_boundary) {}
1225 
1226  friend std::ostream& operator << (std::ostream& os, const Boundary& p);
1227  };
1228 
1229  PCL_EXPORTS std::ostream& operator << (std::ostream& os, const PrincipalCurvatures& p);
1230  /** \brief A point structure representing the principal curvatures and their magnitudes.
1231  * \ingroup common
1232  */
1234  {
1235  union
1236  {
1238  struct
1239  {
1243  };
1244  };
1245  float pc1 = 0.f;
1246  float pc2 = 0.f;
1247 
1248  inline PrincipalCurvatures (): PrincipalCurvatures (0.f, 0.f) {}
1249 
1250  inline PrincipalCurvatures (float _pc1, float _pc2): PrincipalCurvatures (0.f, 0.f, 0.f, _pc1, _pc2) {}
1251 
1252  inline PrincipalCurvatures (float _x, float _y, float _z): PrincipalCurvatures (_x, _y, _z, 0.f, 0.f) {}
1253 
1254  inline PrincipalCurvatures (float _x, float _y, float _z, float _pc1, float _pc2):
1255  principal_curvature_x (_x), principal_curvature_y (_y), principal_curvature_z (_z), pc1 (_pc1), pc2 (_pc2) {}
1256 
1257  friend std::ostream& operator << (std::ostream& os, const PrincipalCurvatures& p);
1258  };
1259 
1260  PCL_EXPORTS std::ostream& operator << (std::ostream& os, const PFHSignature125& p);
1261  /** \brief A point structure representing the Point Feature Histogram (PFH).
1262  * \ingroup common
1263  */
1265  {
1266  float histogram[125] = {0.f};
1267  static int descriptorSize () { return 125; }
1268 
1269  inline PFHSignature125 () = default;
1270 
1271  friend std::ostream& operator << (std::ostream& os, const PFHSignature125& p);
1272  };
1273 
1274  PCL_EXPORTS std::ostream& operator << (std::ostream& os, const PFHRGBSignature250& p);
1275  /** \brief A point structure representing the Point Feature Histogram with colors (PFHRGB).
1276  * \ingroup common
1277  */
1279  {
1280  float histogram[250] = {0.f};
1281  static int descriptorSize () { return 250; }
1282 
1283  inline PFHRGBSignature250 () = default;
1284 
1285  friend std::ostream& operator << (std::ostream& os, const PFHRGBSignature250& p);
1286  };
1287 
1288  PCL_EXPORTS std::ostream& operator << (std::ostream& os, const PPFSignature& p);
1289  /** \brief A point structure for storing the Point Pair Feature (PPF) values
1290  * \ingroup common
1291  */
1293  {
1294  float f1 = 0.f, f2 = 0.f, f3 = 0.f, f4 = 0.f;
1295  float alpha_m = 0.f;
1296 
1297  inline PPFSignature (float _alpha = 0.f): PPFSignature (0.f, 0.f, 0.f, 0.f, _alpha) {}
1298 
1299  inline PPFSignature (float _f1, float _f2, float _f3, float _f4, float _alpha = 0.f):
1300  f1 (_f1), f2 (_f2), f3 (_f3), f4 (_f4), alpha_m (_alpha) {}
1301 
1302  friend std::ostream& operator << (std::ostream& os, const PPFSignature& p);
1303  };
1304 
1305  PCL_EXPORTS std::ostream& operator << (std::ostream& os, const CPPFSignature& p);
1306  /** \brief A point structure for storing the Point Pair Feature (CPPF) values
1307  * \ingroup common
1308  */
1310  {
1311  float f1, f2, f3, f4, f5, f6, f7, f8, f9, f10;
1312  float alpha_m;
1313 
1314  inline CPPFSignature (float _alpha = 0.f):
1315  CPPFSignature (0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, _alpha) {}
1316 
1317  inline CPPFSignature (float _f1, float _f2, float _f3, float _f4, float _f5, float _f6,
1318  float _f7, float _f8, float _f9, float _f10, float _alpha = 0.f):
1319  f1 (_f1), f2 (_f2), f3 (_f3), f4 (_f4), f5 (_f5), f6 (_f6),
1320  f7 (_f7), f8 (_f8), f9 (_f9), f10 (_f10), alpha_m (_alpha) {}
1321 
1322  friend std::ostream& operator << (std::ostream& os, const CPPFSignature& p);
1323  };
1324 
1325  PCL_EXPORTS std::ostream& operator << (std::ostream& os, const PPFRGBSignature& p);
1326  /** \brief A point structure for storing the Point Pair Color Feature (PPFRGB) values
1327  * \ingroup common
1328  */
1330  {
1331  float f1 = 0.f, f2 = 0.f, f3 = 0.f, f4 = 0.f;
1332  float r_ratio = 0.f, g_ratio = 0.f, b_ratio = 0.f;
1333  float alpha_m = 0.f;
1334 
1335  inline PPFRGBSignature (float _alpha = 0.f): PPFRGBSignature (0.f, 0.f, 0.f, 0.f, _alpha) {}
1336 
1337  inline PPFRGBSignature (float _f1, float _f2, float _f3, float _f4, float _alpha = 0.f):
1338  PPFRGBSignature (_f1, _f2, _f3, _f4, _alpha, 0.f, 0.f, 0.f) {}
1339 
1340  inline PPFRGBSignature (float _f1, float _f2, float _f3, float _f4, float _alpha, float _r, float _g, float _b):
1341  f1 (_f1), f2 (_f2), f3 (_f3), f4 (_f4), r_ratio (_r), g_ratio (_g), b_ratio (_b), alpha_m (_alpha) {}
1342 
1343  friend std::ostream& operator << (std::ostream& os, const PPFRGBSignature& p);
1344  };
1345 
1346  PCL_EXPORTS std::ostream& operator << (std::ostream& os, const NormalBasedSignature12& p);
1347  /** \brief A point structure representing the Normal Based Signature for
1348  * a feature matrix of 4-by-3
1349  * \ingroup common
1350  */
1352  {
1353  float values[12] = {0.f};
1354 
1355  inline NormalBasedSignature12 () = default;
1356 
1357  friend std::ostream& operator << (std::ostream& os, const NormalBasedSignature12& p);
1358  };
1359 
1360  PCL_EXPORTS std::ostream& operator << (std::ostream& os, const ShapeContext1980& p);
1361  /** \brief A point structure representing a Shape Context.
1362  * \ingroup common
1363  */
1365  {
1366  float descriptor[1980] = {0.f};
1367  float rf[9] = {0.f};
1368  static int descriptorSize () { return 1980; }
1369 
1370  inline ShapeContext1980 () = default;
1371 
1372  friend std::ostream& operator << (std::ostream& os, const ShapeContext1980& p);
1373  };
1374 
1375  PCL_EXPORTS std::ostream& operator << (std::ostream& os, const UniqueShapeContext1960& p);
1376  /** \brief A point structure representing a Unique Shape Context.
1377  * \ingroup common
1378  */
1380  {
1381  float descriptor[1960] = {0.f};
1382  float rf[9] = {0.f};
1383  static int descriptorSize () { return 1960; }
1384 
1385  inline UniqueShapeContext1960 () = default;
1386 
1387  friend std::ostream& operator << (std::ostream& os, const UniqueShapeContext1960& p);
1388  };
1389 
1390  PCL_EXPORTS std::ostream& operator << (std::ostream& os, const SHOT352& p);
1391  /** \brief A point structure representing the generic Signature of Histograms of OrienTations (SHOT) - shape only.
1392  * \ingroup common
1393  */
1394  struct SHOT352
1395  {
1396  float descriptor[352] = {0.f};
1397  float rf[9] = {0.f};
1398  static int descriptorSize () { return 352; }
1399 
1400  inline SHOT352 () = default;
1401 
1402  friend std::ostream& operator << (std::ostream& os, const SHOT352& p);
1403  };
1404 
1405 
1406  PCL_EXPORTS std::ostream& operator << (std::ostream& os, const SHOT1344& p);
1407  /** \brief A point structure representing the generic Signature of Histograms of OrienTations (SHOT) - shape+color.
1408  * \ingroup common
1409  */
1410  struct SHOT1344
1411  {
1412  float descriptor[1344] = {0.f};
1413  float rf[9] = {0.f};
1414  static int descriptorSize () { return 1344; }
1415 
1416  inline SHOT1344 () = default;
1417 
1418  friend std::ostream& operator << (std::ostream& os, const SHOT1344& p);
1419  };
1420 
1421 
1422  /** \brief A structure representing the Local Reference Frame of a point.
1423  * \ingroup common
1424  */
1425  struct EIGEN_ALIGN16 _ReferenceFrame
1426  {
1427  union
1428  {
1429  float rf[9];
1430  struct
1431  {
1432  float x_axis[3];
1433  float y_axis[3];
1434  float z_axis[3];
1435  };
1436  };
1437 
1438  inline Eigen::Map<Eigen::Vector3f> getXAxisVector3fMap () { return (Eigen::Vector3f::Map (x_axis)); }
1439  inline const Eigen::Map<const Eigen::Vector3f> getXAxisVector3fMap () const { return (Eigen::Vector3f::Map (x_axis)); }
1440  inline Eigen::Map<Eigen::Vector3f> getYAxisVector3fMap () { return (Eigen::Vector3f::Map (y_axis)); }
1441  inline const Eigen::Map<const Eigen::Vector3f> getYAxisVector3fMap () const { return (Eigen::Vector3f::Map (y_axis)); }
1442  inline Eigen::Map<Eigen::Vector3f> getZAxisVector3fMap () { return (Eigen::Vector3f::Map (z_axis)); }
1443  inline const Eigen::Map<const Eigen::Vector3f> getZAxisVector3fMap () const { return (Eigen::Vector3f::Map (z_axis)); }
1444  inline Eigen::Map<Eigen::Matrix3f> getMatrix3fMap () { return (Eigen::Matrix3f::Map (rf)); }
1445  inline const Eigen::Map<const Eigen::Matrix3f> getMatrix3fMap () const { return (Eigen::Matrix3f::Map (rf)); }
1446 
1448  };
1449 
1450  PCL_EXPORTS std::ostream& operator << (std::ostream& os, const ReferenceFrame& p);
1451  struct EIGEN_ALIGN16 ReferenceFrame : public _ReferenceFrame
1452  {
1454  {
1455  std::copy_n(p.rf, 9, rf);
1456  }
1457 
1458  inline ReferenceFrame ()
1459  {
1460  std::fill_n(x_axis, 3, 0);
1461  std::fill_n(y_axis, 3, 0);
1462  std::fill_n(z_axis, 3, 0);
1463  }
1464 
1465  // @TODO: add other ctors
1466 
1467  friend std::ostream& operator << (std::ostream& os, const ReferenceFrame& p);
1469  };
1470 
1471 
1472  PCL_EXPORTS std::ostream& operator << (std::ostream& os, const FPFHSignature33& p);
1473  /** \brief A point structure representing the Fast Point Feature Histogram (FPFH).
1474  * \ingroup common
1475  */
1477  {
1478  float histogram[33] = {0.f};
1479  static int descriptorSize () { return 33; }
1480 
1481  inline FPFHSignature33 () = default;
1482 
1483  friend std::ostream& operator << (std::ostream& os, const FPFHSignature33& p);
1484  };
1485 
1486  PCL_EXPORTS std::ostream& operator << (std::ostream& os, const VFHSignature308& p);
1487  /** \brief A point structure representing the Viewpoint Feature Histogram (VFH).
1488  * \ingroup common
1489  */
1491  {
1492  float histogram[308] = {0.f};
1493  static int descriptorSize () { return 308; }
1494 
1495  inline VFHSignature308 () = default;
1496 
1497  friend std::ostream& operator << (std::ostream& os, const VFHSignature308& p);
1498  };
1499 
1500  PCL_EXPORTS std::ostream& operator << (std::ostream& os, const GRSDSignature21& p);
1501  /** \brief A point structure representing the Global Radius-based Surface Descriptor (GRSD).
1502  * \ingroup common
1503  */
1505  {
1506  float histogram[21] = {0.f};
1507  static int descriptorSize () { return 21; }
1508 
1509  inline GRSDSignature21 () = default;
1510 
1511  friend std::ostream& operator << (std::ostream& os, const GRSDSignature21& p);
1512  };
1513 
1514  PCL_EXPORTS std::ostream& operator << (std::ostream& os, const BRISKSignature512& p);
1515  /** \brief A point structure representing the Binary Robust Invariant Scalable Keypoints (BRISK).
1516  * \ingroup common
1517  */
1519  {
1520  float scale = 0.f;
1521  float orientation = 0.f;
1522  unsigned char descriptor[64] = {0};
1523  static int descriptorSize () { return 64; }
1524 
1525  inline BRISKSignature512 () = default;
1526 
1527  inline BRISKSignature512 (float _scale, float _orientation): scale (_scale), orientation (_orientation) {}
1528 
1529  friend std::ostream& operator << (std::ostream& os, const BRISKSignature512& p);
1530  };
1531 
1532  PCL_EXPORTS std::ostream& operator << (std::ostream& os, const ESFSignature640& p);
1533  /** \brief A point structure representing the Ensemble of Shape Functions (ESF).
1534  * \ingroup common
1535  */
1537  {
1538  float histogram[640] = {0.f};
1539  static int descriptorSize () { return 640; }
1540 
1541  inline ESFSignature640 () = default;
1542 
1543  friend std::ostream& operator << (std::ostream& os, const ESFSignature640& p);
1544  };
1545 
1546  PCL_EXPORTS std::ostream& operator << (std::ostream& os, const GASDSignature512& p);
1547  /** \brief A point structure representing the Globally Aligned Spatial Distribution (GASD) shape descriptor.
1548  * \ingroup common
1549  */
1551  {
1552  float histogram[512] = {0.f};
1553  static int descriptorSize() { return 512; }
1554 
1555  inline GASDSignature512 () = default;
1556 
1557  friend std::ostream& operator << (std::ostream& os, const GASDSignature512& p);
1558  };
1559 
1560  PCL_EXPORTS std::ostream& operator << (std::ostream& os, const GASDSignature984& p);
1561  /** \brief A point structure representing the Globally Aligned Spatial Distribution (GASD) shape and color descriptor.
1562  * \ingroup common
1563  */
1565  {
1566  float histogram[984] = {0.f};
1567  static int descriptorSize() { return 984; }
1568 
1569  inline GASDSignature984 () = default;
1570 
1571  friend std::ostream& operator << (std::ostream& os, const GASDSignature984& p);
1572  };
1573 
1574  PCL_EXPORTS std::ostream& operator << (std::ostream& os, const GASDSignature7992& p);
1575  /** \brief A point structure representing the Globally Aligned Spatial Distribution (GASD) shape and color descriptor.
1576  * \ingroup common
1577  */
1579  {
1580  float histogram[7992] = {0.f};
1581  static int descriptorSize() { return 7992; }
1582 
1583  inline GASDSignature7992 () = default;
1584 
1585  friend std::ostream& operator << (std::ostream& os, const GASDSignature7992& p);
1586  };
1587 
1588  PCL_EXPORTS std::ostream& operator << (std::ostream& os, const GFPFHSignature16& p);
1589  /** \brief A point structure representing the GFPFH descriptor with 16 bins.
1590  * \ingroup common
1591  */
1593  {
1594  float histogram[16] = {0.f};
1595  static int descriptorSize () { return 16; }
1596 
1597  inline GFPFHSignature16 () = default;
1598 
1599  friend std::ostream& operator << (std::ostream& os, const GFPFHSignature16& p);
1600  };
1601 
1602  PCL_EXPORTS std::ostream& operator << (std::ostream& os, const Narf36& p);
1603  /** \brief A point structure representing the Narf descriptor.
1604  * \ingroup common
1605  */
1606  struct Narf36
1607  {
1608  float x = 0.f, y = 0.f, z = 0.f, roll = 0.f, pitch = 0.f, yaw = 0.f;
1609  float descriptor[36] = {0.f};
1610  static int descriptorSize () { return 36; }
1611 
1612  inline Narf36 () = default;
1613 
1614  inline Narf36 (float _x, float _y, float _z): Narf36 (_x, _y, _z, 0.f, 0.f, 0.f) {}
1615 
1616  inline Narf36 (float _x, float _y, float _z, float _roll, float _pitch, float _yaw):
1617  x (_x), y (_y), z (_z), roll (_roll), pitch (_pitch), yaw (_yaw) {}
1618 
1619  friend std::ostream& operator << (std::ostream& os, const Narf36& p);
1620  };
1621 
1622  PCL_EXPORTS std::ostream& operator << (std::ostream& os, const BorderDescription& p);
1623  /** \brief A structure to store if a point in a range image lies on a border between an obstacle and the background.
1624  * \ingroup common
1625  */
1627  {
1628  int x = 0.f, y = 0.f;
1630  //std::vector<const BorderDescription*> neighbors;
1631 
1632  inline BorderDescription () = default;
1633 
1634  // TODO: provide other ctors
1635 
1636  friend std::ostream& operator << (std::ostream& os, const BorderDescription& p);
1637  };
1638 
1639 
1640  PCL_EXPORTS std::ostream& operator << (std::ostream& os, const IntensityGradient& p);
1641  /** \brief A point structure representing the intensity gradient of an XYZI point cloud.
1642  * \ingroup common
1643  */
1645  {
1646  union
1647  {
1648  float gradient[3];
1649  struct
1650  {
1651  float gradient_x;
1652  float gradient_y;
1653  float gradient_z;
1654  };
1655  };
1656 
1657  inline IntensityGradient (): IntensityGradient (0.f, 0.f, 0.f) {}
1658 
1659  inline IntensityGradient (float _x, float _y, float _z): gradient_x (_x), gradient_y (_y), gradient_z (_z) {}
1660 
1661  friend std::ostream& operator << (std::ostream& os, const IntensityGradient& p);
1662  };
1663 
1664  // TODO: Maybe make other histogram based structs an alias for this
1665  /** \brief A point structure representing an N-D histogram.
1666  * \ingroup common
1667  */
1668  template <int N>
1669  struct Histogram
1670  {
1671  float histogram[N];
1672  static int descriptorSize () { return N; }
1673  };
1674 
1675  struct EIGEN_ALIGN16 _PointWithScale
1676  {
1677  PCL_ADD_POINT4D; // This adds the members x,y,z which can also be accessed using the point (which is float[4])
1678 
1679  union
1680  {
1681  /** \brief Diameter of the meaningful keypoint neighborhood. */
1682  float scale;
1683  float size;
1684  };
1685 
1686  /** \brief Computed orientation of the keypoint (-1 if not applicable). */
1687  float angle;
1688  /** \brief The response by which the most strong keypoints have been selected. */
1689  float response;
1690  /** \brief octave (pyramid layer) from which the keypoint has been extracted. */
1691  int octave;
1692 
1694  };
1695 
1696  PCL_EXPORTS std::ostream& operator << (std::ostream& os, const PointWithScale& p);
1697  /** \brief A point structure representing a 3-D position and scale.
1698  * \ingroup common
1699  */
1701  {
1703  {
1704  x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
1705  scale = p.scale;
1706  angle = p.angle;
1707  response = p.response;
1708  octave = p.octave;
1709  }
1710 
1711  inline PointWithScale (): PointWithScale (0.f, 0.f, 0.f) {}
1712 
1713  inline PointWithScale (float _x, float _y, float _z, float _scale = 1.f,
1714  float _angle = -1.f, float _response = 0.f, int _octave = 0)
1715  {
1716  x = _x; y = _y; z = _z;
1717  data[3] = 1.0f;
1718  scale = _scale;
1719  angle = _angle;
1720  response = _response;
1721  octave = _octave;
1722  }
1723 
1724  friend std::ostream& operator << (std::ostream& os, const PointWithScale& p);
1725  };
1726 
1727 
1728  struct EIGEN_ALIGN16 _PointSurfel
1729  {
1730  PCL_ADD_POINT4D; // This adds the members x,y,z which can also be accessed using the point (which is float[4])
1731  PCL_ADD_NORMAL4D; // This adds the member normal[3] which can also be accessed using the point (which is float[4])
1732  union
1733  {
1734  struct
1735  {
1737  float radius;
1738  float confidence;
1739  float curvature;
1740  };
1741  float data_c[4];
1742  };
1745  };
1746 
1747  PCL_EXPORTS std::ostream& operator << (std::ostream& os, const PointSurfel& p);
1748  /** \brief A surfel, that is, a point structure representing Euclidean xyz coordinates, together with normal coordinates, a RGBA color, a radius, a confidence value and the surface curvature estimate.
1749  * \ingroup common
1750  */
1751  struct PointSurfel : public _PointSurfel
1752  {
1753  inline PointSurfel (const _PointSurfel &p)
1754  {
1755  x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
1756  rgba = p.rgba;
1757  radius = p.radius;
1758  confidence = p.confidence;
1759  curvature = p.curvature;
1760  }
1761 
1762  inline PointSurfel ()
1763  {
1764  x = y = z = 0.0f;
1765  data[3] = 1.0f;
1766  normal_x = normal_y = normal_z = data_n[3] = 0.0f;
1767  r = g = b = 0;
1768  a = 255;
1769  radius = confidence = curvature = 0.0f;
1770  }
1771 
1772  // TODO: add other ctor to PointSurfel
1773 
1774  friend std::ostream& operator << (std::ostream& os, const PointSurfel& p);
1775  };
1776 
1777  struct EIGEN_ALIGN16 _PointDEM
1778  {
1780  float intensity;
1784  };
1785 
1786  PCL_EXPORTS std::ostream& operator << (std::ostream& os, const PointDEM& p);
1787  /** \brief A point structure representing Digital Elevation Map.
1788  * \ingroup common
1789  */
1790  struct PointDEM : public _PointDEM
1791  {
1792  inline PointDEM (const _PointDEM &p)
1793  {
1794  x = p.x; y = p.y; z = p.z; data[3] = 1.0f;
1795  intensity = p.intensity;
1798  }
1799 
1800  inline PointDEM (): PointDEM (0.f, 0.f, 0.f) {}
1801 
1802  inline PointDEM (float _x, float _y, float _z): PointDEM (_x, _y, _z, 0.f, 0.f, 0.f) {}
1803 
1804  inline PointDEM (float _x, float _y, float _z, float _intensity,
1805  float _intensity_variance, float _height_variance)
1806  {
1807  x = _x; y = _y; z = _z;
1808  data[3] = 1.0f;
1809  intensity = _intensity;
1810  intensity_variance = _intensity_variance;
1811  height_variance = _height_variance;
1812  }
1813 
1814  friend std::ostream& operator << (std::ostream& os, const PointDEM& p);
1815  };
1816 
1817  template <int N> std::ostream&
1818  operator << (std::ostream& os, const Histogram<N>& p)
1819  {
1820  // make constexpr
1821  if (N > 0)
1822  {
1823  os << "(" << p.histogram[0];
1824  std::for_each(p.histogram + 1, std::end(p.histogram),
1825  [&os](const auto& hist) { os << ", " << hist; });
1826  os << ")";
1827  }
1828  return (os);
1829  }
1830 } // End namespace
1831 
1832 #endif
pcl::PointUV
A 2D point structure representing pixel image coordinates.
Definition: point_types.hpp:753
pcl::Intensity::Intensity
Intensity(float _intensity=0.f)
Definition: point_types.hpp:372
pcl::PointWithViewpoint::PointWithViewpoint
PointWithViewpoint(float _x, float _y, float _z)
Definition: point_types.hpp:1167
pcl::GRSDSignature21::descriptorSize
static int descriptorSize()
Definition: point_types.hpp:1507
pcl::_PointDEM::intensity_variance
float intensity_variance
Definition: point_types.hpp:1781
pcl::Label::Label
Label(std::uint32_t _label=0)
Definition: point_types.hpp:511
pcl::_PointWithScale::PCL_ADD_POINT4D
PCL_ADD_POINT4D
Definition: point_types.hpp:1677
pcl::CPPFSignature::f8
float f8
Definition: point_types.hpp:1311
pcl::PointXYZRGBL::PointXYZRGBL
PointXYZRGBL(float _x, float _y, float _z)
Definition: point_types.hpp:666
pcl::_Normal::curvature
float curvature
Definition: point_types.hpp:793
pcl::PointXYZRGBA::PointXYZRGBA
PointXYZRGBA(const _PointXYZRGBA &p)
Definition: point_types.hpp:547
pcl_macros.h
Defines all the PCL and non-PCL macros used.
pcl::PFHSignature125
A point structure representing the Point Feature Histogram (PFH).
Definition: point_types.hpp:1264
pcl
This file defines compatibility wrappers for low level I/O functions.
Definition: convolution.h:45
pcl::_PointXYZL::label
std::uint32_t label
Definition: point_types.hpp:480
pcl::PointWithRange::PointWithRange
PointWithRange(float _x, float _y, float _z, float _range=0.f)
Definition: point_types.hpp:1118
pcl::Label::label
std::uint32_t label
Definition: point_types.hpp:509
pcl::PointDEM
A point structure representing Digital Elevation Map.
Definition: point_types.hpp:1790
pcl::_Axis::PCL_ADD_NORMAL4D
PCL_ADD_NORMAL4D
Definition: point_types.hpp:829
pcl::Normal
A point structure representing normal coordinates and the surface curvature estimate.
Definition: point_types.hpp:804
pcl::VFHSignature308::operator<<
friend std::ostream & operator<<(std::ostream &os, const VFHSignature308 &p)
pcl::GRSDSignature21::histogram
float histogram[21]
Definition: point_types.hpp:1506
pcl::PrincipalRadiiRSD
A point structure representing the minimum and maximum surface radii (in meters) computed using RSD.
Definition: point_types.hpp:1198
pcl::Axis::Axis
Axis(float n_x, float n_y, float n_z)
Definition: point_types.hpp:847
pcl::_PointWithRange::PCL_ADD_POINT4D
PCL_ADD_POINT4D
Definition: point_types.hpp:1092
pcl::PointXYZL::PointXYZL
PointXYZL(std::uint32_t _label=0)
Definition: point_types.hpp:493
pcl::_ReferenceFrame::getYAxisVector3fMap
const Eigen::Map< const Eigen::Vector3f > getYAxisVector3fMap() const
Definition: point_types.hpp:1441
pcl::PointXYZI::PointXYZI
PointXYZI(const _PointXYZI &p)
Definition: point_types.hpp:458
pcl::IntensityGradient::gradient_x
float gradient_x
Definition: point_types.hpp:1651
pcl::PointXYZRGBA::PointXYZRGBA
PointXYZRGBA()
Definition: point_types.hpp:553
pcl::PPFRGBSignature
A point structure for storing the Point Pair Color Feature (PPFRGB) values.
Definition: point_types.hpp:1329
pcl::PointUV::PointUV
PointUV()=default
pcl::PPFRGBSignature::f1
float f1
Definition: point_types.hpp:1331
pcl::IntensityGradient::gradient_z
float gradient_z
Definition: point_types.hpp:1653
pcl::GASDSignature7992::histogram
float histogram[7992]
Definition: point_types.hpp:1580
pcl::PointSurfel::PointSurfel
PointSurfel()
Definition: point_types.hpp:1762
pcl::PointXYZRGBL::PointXYZRGBL
PointXYZRGBL(float _x, float _y, float _z, std::uint8_t _r, std::uint8_t _g, std::uint8_t _b, std::uint32_t _label=0)
Definition: point_types.hpp:669
pcl::_PointWithScale::scale
float scale
Diameter of the meaningful keypoint neighborhood.
Definition: point_types.hpp:1682
pcl::ESFSignature640::operator<<
friend std::ostream & operator<<(std::ostream &os, const ESFSignature640 &p)
pcl::_Intensity32u::PCL_ADD_INTENSITY_32U
PCL_ADD_INTENSITY_32U
Definition: point_types.hpp:415
pcl::GASDSignature7992::GASDSignature7992
GASDSignature7992()=default
pcl::PointXY::PointXY
PointXY(float _x, float _y)
Definition: point_types.hpp:743
pcl::PointUV::u
float u
Definition: point_types.hpp:755
pcl::Vector3c
Eigen::Matrix< std::uint8_t, 3, 1 > Vector3c
Definition: point_types.hpp:177
pcl::PrincipalRadiiRSD::PrincipalRadiiRSD
PrincipalRadiiRSD()=default
pcl::ShapeContext1980::operator<<
friend std::ostream & operator<<(std::ostream &os, const ShapeContext1980 &p)
pcl::CPPFSignature::operator<<
friend std::ostream & operator<<(std::ostream &os, const CPPFSignature &p)
pcl::PointUV::v
float v
Definition: point_types.hpp:756
pcl::SHOT1344::rf
float rf[9]
Definition: point_types.hpp:1413
pcl::PointSurfel
A surfel, that is, a point structure representing Euclidean xyz coordinates, together with normal coo...
Definition: point_types.hpp:1751
pcl::NormalBasedSignature12::values
float values[12]
Definition: point_types.hpp:1353
pcl::CPPFSignature::f5
float f5
Definition: point_types.hpp:1311
pcl::_PointXYZRGBL::PCL_ADD_RGB
PCL_ADD_RGB
Definition: point_types.hpp:583
pcl::NormalBasedSignature12
A point structure representing the Normal Based Signature for a feature matrix of 4-by-3.
Definition: point_types.hpp:1351
pcl::GFPFHSignature16::descriptorSize
static int descriptorSize()
Definition: point_types.hpp:1595
pcl::_PointXYZRGB::PCL_ADD_RGB
PCL_ADD_RGB
Definition: point_types.hpp:576
pcl::MomentInvariants::j2
float j2
Definition: point_types.hpp:1185
pcl::UniqueShapeContext1960::descriptor
float descriptor[1960]
Definition: point_types.hpp:1381
pcl::GASDSignature512::GASDSignature512
GASDSignature512()=default
pcl::GASDSignature512
A point structure representing the Globally Aligned Spatial Distribution (GASD) shape descriptor.
Definition: point_types.hpp:1550
pcl::CPPFSignature::f10
float f10
Definition: point_types.hpp:1311
pcl::InterestPoint::strength
float strength
Definition: point_types.hpp:777
pcl::PointXYZRGBA::PointXYZRGBA
PointXYZRGBA(float _x, float _y, float _z)
Definition: point_types.hpp:558
pcl::_PointNormal::PCL_ADD_NORMAL4D
PCL_ADD_NORMAL4D
Definition: point_types.hpp:861
pcl::PointDEM::PointDEM
PointDEM(const _PointDEM &p)
Definition: point_types.hpp:1792
pcl::_PointDEM::PCL_ADD_POINT4D
PCL_ADD_POINT4D
Definition: point_types.hpp:1779
pcl::Histogram::descriptorSize
static int descriptorSize()
Definition: point_types.hpp:1672
pcl::PrincipalRadiiRSD::r_min
float r_min
Definition: point_types.hpp:1200
pcl::_PointSurfel::confidence
float confidence
Definition: point_types.hpp:1738
pcl::PPFRGBSignature::f2
float f2
Definition: point_types.hpp:1331
pcl::PointXYZL::operator<<
friend std::ostream & operator<<(std::ostream &os, const PointXYZL &p)
pcl::_ReferenceFrame::getYAxisVector3fMap
Eigen::Map< Eigen::Vector3f > getYAxisVector3fMap()
Definition: point_types.hpp:1440
pcl::InterestPoint::PCL_ADD_POINT4D
PCL_ADD_POINT4D
Definition: point_types.hpp:772
pcl::_PointWithViewpoint::vp_x
float vp_x
Definition: point_types.hpp:1136
pcl::_PointXYZ::PCL_ADD_POINT4D
PCL_ADD_POINT4D
Definition: point_types.hpp:283
pcl::GASDSignature512::operator<<
friend std::ostream & operator<<(std::ostream &os, const GASDSignature512 &p)
pcl::PFHSignature125::descriptorSize
static int descriptorSize()
Definition: point_types.hpp:1267
pcl::VFHSignature308::descriptorSize
static int descriptorSize()
Definition: point_types.hpp:1493
pcl::RGB::RGB
RGB()
Definition: point_types.hpp:344
pcl::_PointXYZINormal::PCL_ADD_POINT4D
PCL_ADD_POINT4D
Definition: point_types.hpp:990
pcl::PointXYZRGBL
Definition: point_types.hpp:651
pcl::CPPFSignature::f4
float f4
Definition: point_types.hpp:1311
pcl::Narf36::z
float z
Definition: point_types.hpp:1608
pcl::ReferenceFrame
Definition: point_types.hpp:1451
pcl::PFHSignature125::PFHSignature125
PFHSignature125()=default
pcl::Boundary
A point structure representing a description of whether a point is lying on a surface boundary or not...
Definition: point_types.hpp:1213
pcl::CPPFSignature::f7
float f7
Definition: point_types.hpp:1311
pcl::ShapeContext1980::descriptorSize
static int descriptorSize()
Definition: point_types.hpp:1368
pcl::ESFSignature640::descriptorSize
static int descriptorSize()
Definition: point_types.hpp:1539
pcl::_PointWithScale::angle
float angle
Computed orientation of the keypoint (-1 if not applicable).
Definition: point_types.hpp:1687
pcl::MomentInvariants::MomentInvariants
MomentInvariants(float _j1, float _j2, float _j3)
Definition: point_types.hpp:1189
pcl::RGB::operator<<
friend std::ostream & operator<<(std::ostream &os, const RGB &p)
pcl::PointXYZI
Definition: point_types.hpp:456
pcl::NormalBasedSignature12::NormalBasedSignature12
NormalBasedSignature12()=default
pcl::PPFRGBSignature::f3
float f3
Definition: point_types.hpp:1331
pcl::_PointXYZINormal::intensity
float intensity
Definition: point_types.hpp:996
pcl::FPFHSignature33
A point structure representing the Fast Point Feature Histogram (FPFH).
Definition: point_types.hpp:1476
pcl::UniqueShapeContext1960::rf
float rf[9]
Definition: point_types.hpp:1382
pcl::_PointDEM::height_variance
float height_variance
Definition: point_types.hpp:1782
pcl::UniqueShapeContext1960::operator<<
friend std::ostream & operator<<(std::ostream &os, const UniqueShapeContext1960 &p)
pcl::Narf36::pitch
float pitch
Definition: point_types.hpp:1608
pcl::BRISKSignature512::descriptor
unsigned char descriptor[64]
Definition: point_types.hpp:1522
pcl::_PointXYZRGBNormal::PCL_ADD_UNION_RGB
PCL_ADD_UNION_RGB
Definition: point_types.hpp:912
pcl::PointXYZRGBNormal::PointXYZRGBNormal
PointXYZRGBNormal(float _x, float _y, float _z, std::uint8_t _r, std::uint8_t _g, std::uint8_t _b)
Definition: point_types.hpp:970
pcl::Histogram::histogram
float histogram[N]
Definition: point_types.hpp:1671
pcl::Boundary::operator<<
friend std::ostream & operator<<(std::ostream &os, const Boundary &p)
pcl::Axis::Axis
Axis(const _Axis &p)
Definition: point_types.hpp:839
pcl::PointWithRange::PointWithRange
PointWithRange(float _range=0.f)
Definition: point_types.hpp:1116
pcl::SHOT1344::operator<<
friend std::ostream & operator<<(std::ostream &os, const SHOT1344 &p)
pcl::PFHSignature125::operator<<
friend std::ostream & operator<<(std::ostream &os, const PFHSignature125 &p)
pcl::GRSDSignature21::operator<<
friend std::ostream & operator<<(std::ostream &os, const GRSDSignature21 &p)
pcl::SHOT352::operator<<
friend std::ostream & operator<<(std::ostream &os, const SHOT352 &p)
pcl::PointXYZINormal
A point structure representing Euclidean xyz coordinates, intensity, together with normal coordinates...
Definition: point_types.hpp:1008
pcl::Narf36::y
float y
Definition: point_types.hpp:1608
pcl::PrincipalCurvatures::principal_curvature_z
float principal_curvature_z
Definition: point_types.hpp:1242
pcl::_PointSurfel::radius
float radius
Definition: point_types.hpp:1737
pcl::PrincipalCurvatures::principal_curvature
float principal_curvature[3]
Definition: point_types.hpp:1237
pcl::Intensity8u
A point structure representing the grayscale intensity in single-channel images.
Definition: point_types.hpp:391
pcl::GASDSignature984::GASDSignature984
GASDSignature984()=default
pcl::PrincipalCurvatures::PrincipalCurvatures
PrincipalCurvatures(float _x, float _y, float _z, float _pc1, float _pc2)
Definition: point_types.hpp:1254
pcl::_ReferenceFrame::getZAxisVector3fMap
const Eigen::Map< const Eigen::Vector3f > getZAxisVector3fMap() const
Definition: point_types.hpp:1443
pcl::_Normal::PCL_ADD_NORMAL4D
PCL_ADD_NORMAL4D
Definition: point_types.hpp:788
pcl::PointWithScale::operator<<
friend std::ostream & operator<<(std::ostream &os, const PointWithScale &p)
pcl::RGB::RGB
RGB(const _RGB &p)
Definition: point_types.hpp:339
pcl::Narf36::roll
float roll
Definition: point_types.hpp:1608
pcl::PointXYZRGB::PointXYZRGB
PointXYZRGB()
Definition: point_types.hpp:628
pcl::PointXYZRGBNormal::PointXYZRGBNormal
PointXYZRGBNormal(float _x, float _y, float _z, std::uint8_t _r, std::uint8_t _g, std::uint8_t _b, float n_x, float n_y, float n_z, float _curvature=0.f)
Definition: point_types.hpp:973
pcl::SHOT1344::descriptor
float descriptor[1344]
Definition: point_types.hpp:1412
pcl::SHOT1344::descriptorSize
static int descriptorSize()
Definition: point_types.hpp:1414
pcl::PointXYZRGB
A point structure representing Euclidean xyz coordinates, and the RGB color.
Definition: point_types.hpp:620
pcl::PointXYZHSV::PointXYZHSV
PointXYZHSV()
Definition: point_types.hpp:710
pcl::PPFRGBSignature::PPFRGBSignature
PPFRGBSignature(float _f1, float _f2, float _f3, float _f4, float _alpha=0.f)
Definition: point_types.hpp:1337
pcl::Vector3cMap
Eigen::Map< Vector3c > Vector3cMap
Definition: point_types.hpp:178
pcl::PointWithViewpoint::PointWithViewpoint
PointWithViewpoint(float _x, float _y, float _z, float _vp_x, float _vp_y, float _vp_z)
Definition: point_types.hpp:1169
pcl::UniqueShapeContext1960
A point structure representing a Unique Shape Context.
Definition: point_types.hpp:1379
pcl::PrincipalCurvatures::pc2
float pc2
Definition: point_types.hpp:1246
pcl::PointNormal::PointNormal
PointNormal(const _PointNormal &p)
Definition: point_types.hpp:879
pcl::PointDEM::PointDEM
PointDEM(float _x, float _y, float _z)
Definition: point_types.hpp:1802
pcl::PointWithViewpoint
A point structure representing Euclidean xyz coordinates together with the viewpoint from which it wa...
Definition: point_types.hpp:1149
pcl::_PointXYZI
A point structure representing Euclidean xyz coordinates, and the intensity value.
Definition: point_types.hpp:441
pcl::FPFHSignature33::operator<<
friend std::ostream & operator<<(std::ostream &os, const FPFHSignature33 &p)
pcl::PrincipalRadiiRSD::PrincipalRadiiRSD
PrincipalRadiiRSD(float _r_min, float _r_max)
Definition: point_types.hpp:1204
pcl::MomentInvariants::j1
float j1
Definition: point_types.hpp:1185
pcl::BorderDescription::operator<<
friend std::ostream & operator<<(std::ostream &os, const BorderDescription &p)
pcl::PointXYZRGBNormal::PointXYZRGBNormal
PointXYZRGBNormal(float _x, float _y, float _z)
Definition: point_types.hpp:964
pcl::_ReferenceFrame::getXAxisVector3fMap
const Eigen::Map< const Eigen::Vector3f > getXAxisVector3fMap() const
Definition: point_types.hpp:1439
pcl::_PointSurfel::curvature
float curvature
Definition: point_types.hpp:1739
pcl::Intensity
A point structure representing the grayscale intensity in single-channel images.
Definition: point_types.hpp:365
pcl::_PointWithScale::octave
int octave
octave (pyramid layer) from which the keypoint has been extracted.
Definition: point_types.hpp:1691
pcl::GASDSignature512::histogram
float histogram[512]
Definition: point_types.hpp:1552
pcl::_PointXYZI::intensity
float intensity
Definition: point_types.hpp:448
pcl::_PointWithViewpoint
Definition: point_types.hpp:1129
pcl::ShapeContext1980::descriptor
float descriptor[1980]
Definition: point_types.hpp:1366
pcl::Narf36::Narf36
Narf36(float _x, float _y, float _z)
Definition: point_types.hpp:1614
pcl::PointXYZHSV
Definition: point_types.hpp:702
pcl::PointXY::x
float x
Definition: point_types.hpp:738
pcl::Intensity::Intensity
Intensity(const _Intensity &p)
Definition: point_types.hpp:367
pcl::ShapeContext1980
A point structure representing a Shape Context.
Definition: point_types.hpp:1364
pcl::PointXYZINormal::PointXYZINormal
PointXYZINormal(float _intensity=0.f)
Definition: point_types.hpp:1018
pcl::_PointSurfel::PCL_ADD_UNION_RGB
PCL_ADD_UNION_RGB
Definition: point_types.hpp:1736
pcl::Intensity32u::operator<<
friend std::ostream & operator<<(std::ostream &os, const Intensity32u &p)
pcl::GFPFHSignature16
A point structure representing the GFPFH descriptor with 16 bins.
Definition: point_types.hpp:1592
pcl::NormalBasedSignature12::operator<<
friend std::ostream & operator<<(std::ostream &os, const NormalBasedSignature12 &p)
pcl::operator<<
std::ostream & operator<<(std::ostream &os, const BivariatePolynomialT< real > &p)
Definition: bivariate_polynomial.hpp:233
pcl::Intensity8u::Intensity8u
Intensity8u(std::uint8_t _intensity=0)
Definition: point_types.hpp:398
pcl::PointSurfel::operator<<
friend std::ostream & operator<<(std::ostream &os, const PointSurfel &p)
pcl::PointXYZRGB::PointXYZRGB
PointXYZRGB(std::uint8_t _r, std::uint8_t _g, std::uint8_t _b)
Definition: point_types.hpp:630
pcl::Intensity8u::operator<<
friend std::ostream & operator<<(std::ostream &os, const Intensity8u &p)
pcl::PFHRGBSignature250::PFHRGBSignature250
PFHRGBSignature250()=default
pcl::Array3fMap
Eigen::Map< Eigen::Array3f > Array3fMap
Definition: point_types.hpp:168
pcl::GASDSignature7992
A point structure representing the Globally Aligned Spatial Distribution (GASD) shape and color descr...
Definition: point_types.hpp:1578
pcl::BRISKSignature512::operator<<
friend std::ostream & operator<<(std::ostream &os, const BRISKSignature512 &p)
pcl::GASDSignature7992::operator<<
friend std::ostream & operator<<(std::ostream &os, const GASDSignature7992 &p)
pcl::PointXYZRGBA
A point structure representing Euclidean xyz coordinates, and the RGBA color.
Definition: point_types.hpp:545
pcl::_Normal
Definition: point_types.hpp:786
pcl::PrincipalCurvatures::pc1
float pc1
Definition: point_types.hpp:1245
pcl::_PointXYZRGBNormal::PCL_ADD_NORMAL4D
PCL_ADD_NORMAL4D
Definition: point_types.hpp:907
pcl::PointXYZHSV::PointXYZHSV
PointXYZHSV(const _PointXYZHSV &p)
Definition: point_types.hpp:704
pcl::PointXY::y
float y
Definition: point_types.hpp:739
pcl::CPPFSignature::alpha_m
float alpha_m
Definition: point_types.hpp:1312
pcl::_PointXYZHSV::s
float s
Definition: point_types.hpp:693
pcl::PointUV::PointUV
PointUV(float _u, float _v)
Definition: point_types.hpp:760
pcl::_PointWithViewpoint::vp_z
float vp_z
Definition: point_types.hpp:1138
pcl::_PointXYZRGBL::PCL_ADD_POINT4D
PCL_ADD_POINT4D
Definition: point_types.hpp:582
pcl::_Axis
Definition: point_types.hpp:827
pcl::PointXYZL::PointXYZL
PointXYZL(const _PointXYZL &p)
Definition: point_types.hpp:487
pcl::PrincipalCurvatures::operator<<
friend std::ostream & operator<<(std::ostream &os, const PrincipalCurvatures &p)
pcl::PointXYZRGBL::PointXYZRGBL
PointXYZRGBL(const _PointXYZRGBL &p)
Definition: point_types.hpp:653
pcl::GASDSignature7992::descriptorSize
static int descriptorSize()
Definition: point_types.hpp:1581
pcl::_PointXYZLNormal::curvature
float curvature
Definition: point_types.hpp:1047
pcl::BorderDescription::y
int y
Definition: point_types.hpp:1628
pcl::_PointWithViewpoint::PCL_ADD_POINT4D
PCL_ADD_POINT4D
Definition: point_types.hpp:1131
pcl::_PointWithRange::range
float range
Definition: point_types.hpp:1097
pcl::ShapeContext1980::rf
float rf[9]
Definition: point_types.hpp:1367
pcl::BRISKSignature512::descriptorSize
static int descriptorSize()
Definition: point_types.hpp:1523
pcl::PointXYZRGB::PointXYZRGB
PointXYZRGB(float _x, float _y, float _z, std::uint8_t _r, std::uint8_t _g, std::uint8_t _b)
Definition: point_types.hpp:636
pcl::GRSDSignature21
A point structure representing the Global Radius-based Surface Descriptor (GRSD).
Definition: point_types.hpp:1504
pcl::PointXYZ
A point structure representing Euclidean xyz coordinates.
Definition: point_types.hpp:292
pcl::_Intensity32u
Definition: point_types.hpp:413
pcl::PPFRGBSignature::PPFRGBSignature
PPFRGBSignature(float _f1, float _f2, float _f3, float _f4, float _alpha, float _r, float _g, float _b)
Definition: point_types.hpp:1340
pcl::CPPFSignature
A point structure for storing the Point Pair Feature (CPPF) values.
Definition: point_types.hpp:1309
pcl::PPFSignature::f1
float f1
Definition: point_types.hpp:1294
pcl::PointXYZINormal::PointXYZINormal
PointXYZINormal(float _x, float _y, float _z, float _intensity=0.f)
Definition: point_types.hpp:1020
pcl::PointXYZRGBL::PointXYZRGBL
PointXYZRGBL(std::uint8_t _r, std::uint8_t _g, std::uint8_t _b)
Definition: point_types.hpp:663
pcl::_PointXYZLNormal::PCL_ADD_POINT4D
PCL_ADD_POINT4D
Definition: point_types.hpp:1040
pcl::_Intensity8u
Definition: point_types.hpp:381
pcl::Intensity32u
A point structure representing the grayscale intensity in single-channel images.
Definition: point_types.hpp:423
pcl::PointXYZINormal::PointXYZINormal
PointXYZINormal(const _PointXYZINormal &p)
Definition: point_types.hpp:1010
pcl::Label
Definition: point_types.hpp:507
pcl::_PointXYZRGBNormal::curvature
float curvature
Definition: point_types.hpp:913
pcl::PPFSignature
A point structure for storing the Point Pair Feature (PPF) values.
Definition: point_types.hpp:1292
pcl::CPPFSignature::f3
float f3
Definition: point_types.hpp:1311
pcl::_Intensity
Definition: point_types.hpp:355
pcl::Vector4cMapConst
const Eigen::Map< const Vector4c, Eigen::Aligned > Vector4cMapConst
Definition: point_types.hpp:182
pcl::PointXYZLNormal::PointXYZLNormal
PointXYZLNormal(float _x, float _y, float _z, std::uint32_t _label=0.f)
Definition: point_types.hpp:1070
pcl::PointXYZLNormal::PointXYZLNormal
PointXYZLNormal(const _PointXYZLNormal &p)
Definition: point_types.hpp:1060
pcl::_ReferenceFrame::getZAxisVector3fMap
Eigen::Map< Eigen::Vector3f > getZAxisVector3fMap()
Definition: point_types.hpp:1442
pcl::PointWithViewpoint::PointWithViewpoint
PointWithViewpoint()
Definition: point_types.hpp:1157
pcl::GASDSignature984::operator<<
friend std::ostream & operator<<(std::ostream &os, const GASDSignature984 &p)
pcl::PrincipalCurvatures::principal_curvature_y
float principal_curvature_y
Definition: point_types.hpp:1241
pcl::IntensityGradient::gradient
float gradient[3]
Definition: point_types.hpp:1648
pcl::_PointDEM::intensity
float intensity
Definition: point_types.hpp:1780
pcl::PrincipalRadiiRSD::r_max
float r_max
Definition: point_types.hpp:1200
pcl::_PointXYZRGBNormal::PCL_ADD_POINT4D
PCL_ADD_POINT4D
Definition: point_types.hpp:906
pcl::ShapeContext1980::ShapeContext1980
ShapeContext1980()=default
pcl::Array4fMap
Eigen::Map< Eigen::Array4f, Eigen::Aligned > Array4fMap
Definition: point_types.hpp:170
pcl::PointXYZL
Definition: point_types.hpp:485
pcl::PPFSignature::PPFSignature
PPFSignature(float _alpha=0.f)
Definition: point_types.hpp:1297
pcl::PointXYZI::PointXYZI
PointXYZI(float _x, float _y, float _z, float _intensity=0.f)
Definition: point_types.hpp:466
pcl::CPPFSignature::CPPFSignature
CPPFSignature(float _alpha=0.f)
Definition: point_types.hpp:1314
pcl::_PointXYZHSV::h
float h
Definition: point_types.hpp:692
pcl::_RGB::PCL_ADD_RGB
PCL_ADD_RGB
Definition: point_types.hpp:314
pcl::BRISKSignature512
A point structure representing the Binary Robust Invariant Scalable Keypoints (BRISK).
Definition: point_types.hpp:1518
pcl::_PointXYZRGBA::PCL_ADD_POINT4D
PCL_ADD_POINT4D
Definition: point_types.hpp:519
pcl::Array4fMapConst
const Eigen::Map< const Eigen::Array4f, Eigen::Aligned > Array4fMapConst
Definition: point_types.hpp:171
pcl::Axis
A point structure representing an Axis using its normal coordinates.
Definition: point_types.hpp:837
pcl::PointXYZLNormal::operator<<
friend std::ostream & operator<<(std::ostream &os, const PointXYZLNormal &p)
pcl::PointWithScale::PointWithScale
PointWithScale(const _PointWithScale &p)
Definition: point_types.hpp:1702
pcl::_PointXYZRGB
Definition: point_types.hpp:573
PCL_MAKE_ALIGNED_OPERATOR_NEW
#define PCL_MAKE_ALIGNED_OPERATOR_NEW
Macro to signal a class requires a custom allocator.
Definition: pcl_macros.h:389
pcl::VFHSignature308::histogram
float histogram[308]
Definition: point_types.hpp:1492
pcl::RGB
A structure representing RGB color information.
Definition: point_types.hpp:337
pcl::PointXYZ::PointXYZ
PointXYZ(float _x, float _y, float _z)
Definition: point_types.hpp:298
pcl::FPFHSignature33::histogram
float histogram[33]
Definition: point_types.hpp:1478
pcl::Intensity8u::Intensity8u
Intensity8u(const _Intensity8u &p)
Definition: point_types.hpp:393
pcl::SHOT1344::SHOT1344
SHOT1344()=default
pcl::PFHRGBSignature250
A point structure representing the Point Feature Histogram with colors (PFHRGB).
Definition: point_types.hpp:1278
pcl::SHOT352::rf
float rf[9]
Definition: point_types.hpp:1397
pcl::PointXYZ::PointXYZ
PointXYZ()
Definition: point_types.hpp:296
pcl::MomentInvariants
A point structure representing the three moment invariants.
Definition: point_types.hpp:1183
pcl::_PointWithScale::size
float size
Definition: point_types.hpp:1683
pcl::InterestPoint
A point structure representing an interest point with Euclidean xyz coordinates, and an interest valu...
Definition: point_types.hpp:770
pcl::Normal::Normal
Normal(float n_x, float n_y, float n_z, float _curvature=0.f)
Definition: point_types.hpp:815
pcl::BRISKSignature512::BRISKSignature512
BRISKSignature512(float _scale, float _orientation)
Definition: point_types.hpp:1527
pcl::PointDEM::operator<<
friend std::ostream & operator<<(std::ostream &os, const PointDEM &p)
pcl::_PointWithViewpoint::vp_y
float vp_y
Definition: point_types.hpp:1137
pcl::PointXYZRGBA::PointXYZRGBA
PointXYZRGBA(float _x, float _y, float _z, std::uint8_t _r, std::uint8_t _g, std::uint8_t _b, std::uint8_t _a)
Definition: point_types.hpp:561
pcl::PointXYZRGB::PointXYZRGB
PointXYZRGB(const _PointXYZRGB &p)
Definition: point_types.hpp:622
pcl::_PointXYZLNormal::label
std::uint32_t label
Definition: point_types.hpp:1046
pcl::PPFSignature::PPFSignature
PPFSignature(float _f1, float _f2, float _f3, float _f4, float _alpha=0.f)
Definition: point_types.hpp:1299
pcl::PFHRGBSignature250::operator<<
friend std::ostream & operator<<(std::ostream &os, const PFHRGBSignature250 &p)
pcl::PointNormal
A point structure representing Euclidean xyz coordinates, together with normal coordinates and the su...
Definition: point_types.hpp:877
pcl::Narf36::x
float x
Definition: point_types.hpp:1608
pcl::_PointXYZL::PCL_ADD_POINT4D
PCL_ADD_POINT4D
Definition: point_types.hpp:479
pcl::PointXYZI::PointXYZI
PointXYZI(float _intensity=0.f)
Definition: point_types.hpp:464
pcl::PointXYZRGBNormal::PointXYZRGBNormal
PointXYZRGBNormal(float _curvature=0.f)
Definition: point_types.hpp:961
pcl::IntensityGradient::gradient_y
float gradient_y
Definition: point_types.hpp:1652
pcl::_PointXYZHSV
Definition: point_types.hpp:685
pcl::_PointXYZRGBL::label
std::uint32_t label
Definition: point_types.hpp:584
pcl::PrincipalCurvatures::principal_curvature_x
float principal_curvature_x
Definition: point_types.hpp:1240
pcl::_PointXYZ
Definition: point_types.hpp:281
pcl::PointNormal::PointNormal
PointNormal(float _x, float _y, float _z)
Definition: point_types.hpp:888
pcl::Narf36::Narf36
Narf36(float _x, float _y, float _z, float _roll, float _pitch, float _yaw)
Definition: point_types.hpp:1616
pcl::PointXY
A 2D point structure representing Euclidean xy coordinates.
Definition: point_types.hpp:736
pcl::PointXY::PointXY
PointXY()=default
pcl::PointXYZHSV::PointXYZHSV
PointXYZHSV(float _x, float _y, float _z, float _h, float _s, float _v)
Definition: point_types.hpp:717
pcl::PrincipalRadiiRSD::operator<<
friend std::ostream & operator<<(std::ostream &os, const PrincipalRadiiRSD &p)
pcl::Axis::Axis
Axis()
Definition: point_types.hpp:845
pcl::GASDSignature512::descriptorSize
static int descriptorSize()
Definition: point_types.hpp:1553
pcl::PPFRGBSignature::r_ratio
float r_ratio
Definition: point_types.hpp:1332
pcl::_PointWithRange
Definition: point_types.hpp:1090
pcl::_PointXYZRGB::PCL_ADD_POINT4D
PCL_ADD_POINT4D
Definition: point_types.hpp:575
pcl::_PointXYZLNormal
Definition: point_types.hpp:1038
pcl::_RGB
Definition: point_types.hpp:312
pcl::ESFSignature640::histogram
float histogram[640]
Definition: point_types.hpp:1538
pcl::PointXYZINormal::operator<<
friend std::ostream & operator<<(std::ostream &os, const PointXYZINormal &p)
pcl::PointXYZLNormal::PointXYZLNormal
PointXYZLNormal(float _x, float _y, float _z, std::uint32_t _label, float n_x, float n_y, float n_z, float _curvature=0.f)
Definition: point_types.hpp:1073
pcl::Label::operator<<
friend std::ostream & operator<<(std::ostream &os, const Label &p)
pcl::PointDEM::PointDEM
PointDEM(float _x, float _y, float _z, float _intensity, float _intensity_variance, float _height_variance)
Definition: point_types.hpp:1804
pcl::ReferenceFrame::ReferenceFrame
ReferenceFrame()
Definition: point_types.hpp:1458
pcl::Narf36::operator<<
friend std::ostream & operator<<(std::ostream &os, const Narf36 &p)
pcl::BorderTraits
std::bitset< 32 > BorderTraits
Data type to store extended information about a transition from foreground to backgroundSpecification...
Definition: point_types.h:311
pcl::_PointXYZINormal
Definition: point_types.hpp:988
pcl::IntensityGradient::IntensityGradient
IntensityGradient()
Definition: point_types.hpp:1657
pcl::PrincipalCurvatures
A point structure representing the principal curvatures and their magnitudes.
Definition: point_types.hpp:1233
pcl::PointXYZ::PointXYZ
PointXYZ(const _PointXYZ &p)
Definition: point_types.hpp:294
pcl::Normal::Normal
Normal(const _Normal &p)
Definition: point_types.hpp:806
pcl::_PointXYZI::PCL_ADD_POINT4D
PCL_ADD_POINT4D
Definition: point_types.hpp:443
pcl::PointXYZRGB::PointXYZRGB
PointXYZRGB(float _x, float _y, float _z)
Definition: point_types.hpp:633
pcl::Narf36
A point structure representing the Narf descriptor.
Definition: point_types.hpp:1606
pcl::PointXY::operator<<
friend std::ostream & operator<<(std::ostream &os, const PointXY &p)
pcl::GFPFHSignature16::histogram
float histogram[16]
Definition: point_types.hpp:1594
pcl::_Intensity8u::PCL_ADD_INTENSITY_8U
PCL_ADD_INTENSITY_8U
Definition: point_types.hpp:383
pcl::PointXYZL::PointXYZL
PointXYZL(float _x, float _y, float _z, std::uint32_t _label=0)
Definition: point_types.hpp:495
pcl::SHOT352::descriptorSize
static int descriptorSize()
Definition: point_types.hpp:1398
pcl::_PointXYZRGBL
Definition: point_types.hpp:580
pcl::_PointWithScale::response
float response
The response by which the most strong keypoints have been selected.
Definition: point_types.hpp:1689
pcl::Vector3fMapConst
const Eigen::Map< const Eigen::Vector3f > Vector3fMapConst
Definition: point_types.hpp:173
pcl::Narf36::descriptorSize
static int descriptorSize()
Definition: point_types.hpp:1610
pcl::PointNormal::PointNormal
PointNormal(float _curvature=0.f)
Definition: point_types.hpp:886
pcl::GRSDSignature21::GRSDSignature21
GRSDSignature21()=default
pcl::ESFSignature640
A point structure representing the Ensemble of Shape Functions (ESF).
Definition: point_types.hpp:1536
pcl::PPFRGBSignature::PPFRGBSignature
PPFRGBSignature(float _alpha=0.f)
Definition: point_types.hpp:1335
pcl::GFPFHSignature16::operator<<
friend std::ostream & operator<<(std::ostream &os, const GFPFHSignature16 &p)
pcl::PointWithScale
A point structure representing a 3-D position and scale.
Definition: point_types.hpp:1700
pcl::PFHRGBSignature250::descriptorSize
static int descriptorSize()
Definition: point_types.hpp:1281
pcl::CPPFSignature::f1
float f1
Definition: point_types.hpp:1311
pcl::PointWithScale::PointWithScale
PointWithScale()
Definition: point_types.hpp:1711
pcl::_PointSurfel::PCL_ADD_EIGEN_MAPS_RGB
PCL_ADD_EIGEN_MAPS_RGB
Definition: point_types.hpp:1743
pcl::PPFSignature::f2
float f2
Definition: point_types.hpp:1294
pcl::BRISKSignature512::scale
float scale
Definition: point_types.hpp:1520
pcl::_PointXYZRGBA::PCL_ADD_RGB
PCL_ADD_RGB
Definition: point_types.hpp:520
pcl::PPFRGBSignature::alpha_m
float alpha_m
Definition: point_types.hpp:1333
pcl::PointXYZRGBA::PointXYZRGBA
PointXYZRGBA(std::uint8_t _r, std::uint8_t _g, std::uint8_t _b, std::uint8_t _a)
Definition: point_types.hpp:555
pcl::_PointNormal::PCL_ADD_POINT4D
PCL_ADD_POINT4D
Definition: point_types.hpp:860
pcl::_PointNormal
Definition: point_types.hpp:858
pcl::GASDSignature984
A point structure representing the Globally Aligned Spatial Distribution (GASD) shape and color descr...
Definition: point_types.hpp:1564
pcl::PointXYZRGBL::PointXYZRGBL
PointXYZRGBL(std::uint32_t _label=0)
Definition: point_types.hpp:660
pcl::_Intensity::PCL_ADD_INTENSITY
PCL_ADD_INTENSITY
Definition: point_types.hpp:357
pcl::PointWithRange
A point structure representing Euclidean xyz coordinates, padded with an extra range float.
Definition: point_types.hpp:1108
pcl::Histogram
A point structure representing an N-D histogram.
Definition: point_types.hpp:1669
pcl::PointNormal::operator<<
friend std::ostream & operator<<(std::ostream &os, const PointNormal &p)
pcl::PPFRGBSignature::b_ratio
float b_ratio
Definition: point_types.hpp:1332
pcl::ReferenceFrame::ReferenceFrame
ReferenceFrame(const _ReferenceFrame &p)
Definition: point_types.hpp:1453
pcl::MomentInvariants::j3
float j3
Definition: point_types.hpp:1185
pcl::UniqueShapeContext1960::UniqueShapeContext1960
UniqueShapeContext1960()=default
pcl::_PointXYZRGBNormal::PCL_ADD_EIGEN_MAPS_RGB
PCL_ADD_EIGEN_MAPS_RGB
Definition: point_types.hpp:917
pcl::BRISKSignature512::BRISKSignature512
BRISKSignature512()=default
pcl::_ReferenceFrame::getXAxisVector3fMap
Eigen::Map< Eigen::Vector3f > getXAxisVector3fMap()
Definition: point_types.hpp:1438
pcl::Boundary::boundary_point
std::uint8_t boundary_point
Definition: point_types.hpp:1215
pcl::PrincipalCurvatures::PrincipalCurvatures
PrincipalCurvatures()
Definition: point_types.hpp:1248
pcl::PointWithRange::operator<<
friend std::ostream & operator<<(std::ostream &os, const PointWithRange &p)
pcl::Intensity32u::Intensity32u
Intensity32u(std::uint32_t _intensity=0)
Definition: point_types.hpp:430
pcl::_PointXYZHSV::PCL_ADD_POINT4D
PCL_ADD_POINT4D
Definition: point_types.hpp:687
pcl::Normal::operator<<
friend std::ostream & operator<<(std::ostream &os, const Normal &p)
pcl::PointXYZRGBNormal
A point structure representing Euclidean xyz coordinates, and the RGB color, together with normal coo...
Definition: point_types.hpp:951
pcl::Vector4c
Eigen::Matrix< std::uint8_t, 4, 1 > Vector4c
Definition: point_types.hpp:180
pcl::Vector3cMapConst
const Eigen::Map< const Vector3c > Vector3cMapConst
Definition: point_types.hpp:179
pcl::PPFSignature::alpha_m
float alpha_m
Definition: point_types.hpp:1295
pcl::_PointXYZRGBA
Definition: point_types.hpp:517
pcl::_ReferenceFrame::rf
float rf[9]
Definition: point_types.hpp:1429
pcl::PointXYZI::operator<<
friend std::ostream & operator<<(std::ostream &os, const PointXYZI &p)
pcl::_PointNormal::curvature
float curvature
Definition: point_types.hpp:866
pcl::GASDSignature984::descriptorSize
static int descriptorSize()
Definition: point_types.hpp:1567
pcl::UniqueShapeContext1960::descriptorSize
static int descriptorSize()
Definition: point_types.hpp:1383
pcl::PointXYZLNormal
A point structure representing Euclidean xyz coordinates, a label, together with normal coordinates a...
Definition: point_types.hpp:1058
pcl::BorderDescription
A structure to store if a point in a range image lies on a border between an obstacle and the backgro...
Definition: point_types.hpp:1626
pcl::CPPFSignature::f9
float f9
Definition: point_types.hpp:1311
pcl::CPPFSignature::f6
float f6
Definition: point_types.hpp:1311
pcl::SHOT352::descriptor
float descriptor[352]
Definition: point_types.hpp:1396
pcl::FPFHSignature33::FPFHSignature33
FPFHSignature33()=default
pcl::Boundary::Boundary
Boundary(std::uint8_t _boundary=0)
Definition: point_types.hpp:1224
pcl::BorderDescription::BorderDescription
BorderDescription()=default
pcl::BRISKSignature512::orientation
float orientation
Definition: point_types.hpp:1521
pcl::SHOT1344
A point structure representing the generic Signature of Histograms of OrienTations (SHOT) - shape+col...
Definition: point_types.hpp:1410
pcl::MomentInvariants::operator<<
friend std::ostream & operator<<(std::ostream &os, const MomentInvariants &p)
pcl::PointXYZLNormal::PointXYZLNormal
PointXYZLNormal(std::uint32_t _label=0)
Definition: point_types.hpp:1068
pcl::PrincipalCurvatures::PrincipalCurvatures
PrincipalCurvatures(float _x, float _y, float _z)
Definition: point_types.hpp:1252
pcl::PointXYZINormal::PointXYZINormal
PointXYZINormal(float _x, float _y, float _z, float _intensity, float n_x, float n_y, float n_z, float _curvature=0.f)
Definition: point_types.hpp:1023
pcl::PPFRGBSignature::f4
float f4
Definition: point_types.hpp:1331
pcl::SHOT352
A point structure representing the generic Signature of Histograms of OrienTations (SHOT) - shape onl...
Definition: point_types.hpp:1394
pcl::PPFRGBSignature::operator<<
friend std::ostream & operator<<(std::ostream &os, const PPFRGBSignature &p)
pcl::PointXYZRGBNormal::PointXYZRGBNormal
PointXYZRGBNormal(std::uint8_t _r, std::uint8_t _g, std::uint8_t _b)
Definition: point_types.hpp:967
pcl::_PointSurfel
Definition: point_types.hpp:1728
pcl::Vector3fMap
Eigen::Map< Eigen::Vector3f > Vector3fMap
Definition: point_types.hpp:172
PCL_DEPRECATED
#define PCL_DEPRECATED(message)
Definition: pcl_macros.h:94
pcl::_ReferenceFrame::getMatrix3fMap
const Eigen::Map< const Eigen::Matrix3f > getMatrix3fMap() const
Definition: point_types.hpp:1445
pcl::GFPFHSignature16::GFPFHSignature16
GFPFHSignature16()=default
pcl::BorderDescription::x
int x
Definition: point_types.hpp:1628
pcl::PPFRGBSignature::g_ratio
float g_ratio
Definition: point_types.hpp:1332
pcl::PPFSignature::operator<<
friend std::ostream & operator<<(std::ostream &os, const PPFSignature &p)
pcl::_PointXYZINormal::curvature
float curvature
Definition: point_types.hpp:997
pcl::PointXYZRGBNormal::operator<<
friend std::ostream & operator<<(std::ostream &os, const PointXYZRGBNormal &p)
pcl::BorderDescription::traits
BorderTraits traits
Definition: point_types.hpp:1629
pcl::PPFSignature::f4
float f4
Definition: point_types.hpp:1294
pcl::RGB::RGB
RGB(std::uint8_t _r, std::uint8_t _g, std::uint8_t _b)
Definition: point_types.hpp:346
pcl::_PointDEM
Definition: point_types.hpp:1777
pcl::_PointSurfel::PCL_ADD_NORMAL4D
PCL_ADD_NORMAL4D
Definition: point_types.hpp:1731
pcl::Narf36::yaw
float yaw
Definition: point_types.hpp:1608
pcl::Vector4fMap
Eigen::Map< Eigen::Vector4f, Eigen::Aligned > Vector4fMap
Definition: point_types.hpp:174
pcl::Normal::Normal
Normal(float _curvature=0.f)
Definition: point_types.hpp:813
pcl::IntensityGradient::operator<<
friend std::ostream & operator<<(std::ostream &os, const IntensityGradient &p)
pcl::PointWithRange::PointWithRange
PointWithRange(const _PointWithRange &p)
Definition: point_types.hpp:1110
pcl::PointDEM::PointDEM
PointDEM()
Definition: point_types.hpp:1800
pcl::VFHSignature308::VFHSignature308
VFHSignature308()=default
pcl::Vector4cMap
Eigen::Map< Vector4c, Eigen::Aligned > Vector4cMap
Definition: point_types.hpp:181
pcl::GASDSignature984::histogram
float histogram[984]
Definition: point_types.hpp:1566
pcl::PointWithViewpoint::PointWithViewpoint
PointWithViewpoint(const _PointWithViewpoint &p)
Definition: point_types.hpp:1151
pcl::MomentInvariants::MomentInvariants
MomentInvariants()=default
pcl::_PointXYZLNormal::PCL_ADD_NORMAL4D
PCL_ADD_NORMAL4D
Definition: point_types.hpp:1041
pcl::_PointXYZINormal::PCL_ADD_NORMAL4D
PCL_ADD_NORMAL4D
Definition: point_types.hpp:991
pcl::PointXYZRGBNormal::PointXYZRGBNormal
PointXYZRGBNormal(const _PointXYZRGBNormal &p)
Definition: point_types.hpp:953
pcl::IntensityGradient::IntensityGradient
IntensityGradient(float _x, float _y, float _z)
Definition: point_types.hpp:1659
pcl::_PointWithScale
Definition: point_types.hpp:1675
pcl::PFHSignature125::histogram
float histogram[125]
Definition: point_types.hpp:1266
pcl::PointNormal::PointNormal
PointNormal(float _x, float _y, float _z, float n_x, float n_y, float n_z, float _curvature=0.f)
Definition: point_types.hpp:891
pcl::_PointXYZHSV::v
float v
Definition: point_types.hpp:694
pcl::PointXYZHSV::PointXYZHSV
PointXYZHSV(float _h, float _s, float _v)
Definition: point_types.hpp:714
pcl::_ReferenceFrame::getMatrix3fMap
Eigen::Map< Eigen::Matrix3f > getMatrix3fMap()
Definition: point_types.hpp:1444
pcl::FPFHSignature33::descriptorSize
static int descriptorSize()
Definition: point_types.hpp:1479
pcl::Array3fMapConst
const Eigen::Map< const Eigen::Array3f > Array3fMapConst
Definition: point_types.hpp:169
pcl::PPFSignature::f3
float f3
Definition: point_types.hpp:1294
pcl::Narf36::descriptor
float descriptor[36]
Definition: point_types.hpp:1609
pcl::Intensity::operator<<
friend std::ostream & operator<<(std::ostream &os, const Intensity &p)
pcl::_PointSurfel::PCL_ADD_POINT4D
PCL_ADD_POINT4D
Definition: point_types.hpp:1730
pcl::PointUV::operator<<
friend std::ostream & operator<<(std::ostream &os, const PointUV &p)
pcl::PrincipalCurvatures::PrincipalCurvatures
PrincipalCurvatures(float _pc1, float _pc2)
Definition: point_types.hpp:1250
PCL_EXPORTS
#define PCL_EXPORTS
Definition: pcl_macros.h:271
pcl::Intensity32u::Intensity32u
Intensity32u(const _Intensity32u &p)
Definition: point_types.hpp:425
pcl::Narf36::Narf36
Narf36()=default
pcl::_ReferenceFrame
A structure representing the Local Reference Frame of a point.
Definition: point_types.hpp:1425
pcl::ESFSignature640::ESFSignature640
ESFSignature640()=default
pcl::_PointXYZL
Definition: point_types.hpp:477
pcl::PointWithScale::PointWithScale
PointWithScale(float _x, float _y, float _z, float _scale=1.f, float _angle=-1.f, float _response=0.f, int _octave=0)
Definition: point_types.hpp:1713
pcl::Vector4fMapConst
const Eigen::Map< const Eigen::Vector4f, Eigen::Aligned > Vector4fMapConst
Definition: point_types.hpp:175
pcl::VFHSignature308
A point structure representing the Viewpoint Feature Histogram (VFH).
Definition: point_types.hpp:1490
pcl::CPPFSignature::f2
float f2
Definition: point_types.hpp:1311
pcl::_PointXYZRGBNormal
Definition: point_types.hpp:904
pcl::CPPFSignature::CPPFSignature
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)
Definition: point_types.hpp:1317
pcl::IntensityGradient
A point structure representing the intensity gradient of an XYZI point cloud.
Definition: point_types.hpp:1644
pcl::PointSurfel::PointSurfel
PointSurfel(const _PointSurfel &p)
Definition: point_types.hpp:1753
pcl::SHOT352::SHOT352
SHOT352()=default
pcl::PFHRGBSignature250::histogram
float histogram[250]
Definition: point_types.hpp:1280