Point Cloud Library (PCL)  1.15.1-dev
point_types.h
Go to the documentation of this file.
1 /*
2  * Software License Agreement (BSD License)
3  *
4  * Point Cloud Library (PCL) - www.pointclouds.org
5  * Copyright (c) 2010-2011, Willow Garage, Inc.
6  *
7  * All rights reserved.
8  *
9  * Redistribution and use in source and binary forms, with or without
10  * modification, are permitted provided that the following conditions
11  * are met:
12  *
13  * * Redistributions of source code must retain the above copyright
14  * notice, this list of conditions and the following disclaimer.
15  * * Redistributions in binary form must reproduce the above
16  * copyright notice, this list of conditions and the following
17  * disclaimer in the documentation and/or other materials provided
18  * with the distribution.
19  * * Neither the name of the copyright holder(s) nor the names of its
20  * contributors may be used to endorse or promote products derived
21  * from this software without specific prior written permission.
22  *
23  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
24  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
25  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
26  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
27  * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
28  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
29  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
30  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
31  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
33  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
34  * POSSIBILITY OF SUCH DAMAGE.
35  *
36  * $Id$
37  *
38  */
39 
40 #pragma once
41 
42 // For backward-compatibility field traits should be imported in this header
43 #ifndef PCL_OPTIMIZE_IMPORTS_FIELD_TRAITS
44 #include <pcl/field_traits.h>
45 #endif
46 
47 #include <bitset>
48 
49 
50 /**
51  * \file pcl/point_types.h
52  * Defines all the PCL implemented PointT point type structures
53  * \ingroup common
54  */
55 
56 // Allow nameless structs/unions
57 #if defined _MSC_VER
58  #pragma warning(push)
59  #pragma warning(disable: 4201)
60 #endif
61 
62 /** @{*/
63 namespace pcl
64 {
65  /** \brief Members: float x, y, z
66  * \ingroup common
67  */
68  struct PointXYZ;
69 
70  /** \brief Members: rgba
71  * \ingroup common
72  */
73  struct RGB;
74 
75  /** \brief Members: intensity (float)
76  * \ingroup common
77  */
78  struct Intensity;
79 
80  /** \brief Members: intensity (std::uint8_t)
81  * \ingroup common
82  */
83  struct Intensity8u;
84 
85  /** \brief Members: intensity (std::uint32_t)
86  * \ingroup common
87  */
88  struct Intensity32u;
89 
90  /** \brief Members: float x, y, z, intensity
91  * \ingroup common
92  */
93  struct PointXYZI;
94 
95  /** \brief Members: float x, y, z, uin32_t label
96  * \ingroup common
97  */
98  struct PointXYZL;
99 
100  /** \brief Members: std::uint32_t label
101  * \ingroup common
102  */
103  struct Label;
104 
105  /** \brief Members: float x, y, z; std::uint32_t rgba
106  * \ingroup common
107  */
108  struct PointXYZRGBA;
109 
110  /** \brief Members: float x, y, z, rgb
111  * \ingroup common
112  */
113  struct PointXYZRGB;
114 
115  /** \brief Members: float x, y, z, rgb, std::uint32_t label
116  * \ingroup common
117  */
118  struct PointXYZRGBL;
119 
120  /** \brief Members: float x, y, z, L, a, b
121  * \ingroup common
122  */
123  struct PointXYZLAB;
124 
125  /** \brief Members: float x, y, z, h, s, v
126  * \ingroup common
127  */
128  struct PointXYZHSV;
129 
130  /** \brief Members: float x, y
131  * \ingroup common
132  */
133  struct PointXY;
134 
135  /** \brief Members: float u, v
136  * \ingroup common
137  */
138  struct PointUV;
139 
140  /** \brief Members: float x, y, z, strength
141  * \ingroup common
142  */
143  struct InterestPoint;
144 
145  /** \brief Members: float normal[3], curvature
146  * \ingroup common
147  */
148  struct Normal;
149 
150  /** \brief Members: float normal[3]
151  * \ingroup common
152  */
153  struct Axis;
154 
155  /** \brief Members: float x, y, z; float normal[3], curvature
156  * \ingroup common
157  */
158  struct PointNormal;
159 
160  /** \brief Members: float x, y, z, rgb, normal[3], curvature
161  * \ingroup common
162  */
163  struct PointXYZRGBNormal;
164 
165  /** \brief Members: float x, y, z, intensity, normal[3], curvature
166  * \ingroup common
167  */
168  struct PointXYZINormal;
169 
170  /** \brief Members: float x, y, z, label, normal[3], curvature
171  * \ingroup common
172  */
173  struct PointXYZLNormal;
174 
175  /** \brief Members: float x, y, z (union with float point[4]), range
176  * \ingroup common
177  */
178  struct PointWithRange;
179 
180  /** \brief Members: float x, y, z, vp_x, vp_y, vp_z
181  * \ingroup common
182  */
183  struct PointWithViewpoint;
184 
185  /** \brief Members: float j1, j2, j3
186  * \ingroup common
187  */
188  struct MomentInvariants;
189 
190  /** \brief Members: float r_min, r_max
191  * \ingroup common
192  */
193  struct PrincipalRadiiRSD;
194 
195  /** \brief Members: std::uint8_t boundary_point
196  * \ingroup common
197  */
198  struct Boundary;
199 
200  /** \brief Members: float principal_curvature[3], pc1, pc2
201  * \ingroup common
202  */
203  struct PrincipalCurvatures;
204 
205  /** \brief Members: float descriptor[352], rf[9]
206  * \ingroup common
207  */
208  struct SHOT352;
209 
210  /** \brief Members: float descriptor[1344], rf[9]
211  * \ingroup common
212  */
213  struct SHOT1344;
214 
215  /** \brief Members: Axis x_axis, y_axis, z_axis
216  * \ingroup common
217  */
218  struct ReferenceFrame;
219 
220  /** \brief Members: float descriptor[1980], rf[9]
221  * \ingroup common
222  */
223  struct ShapeContext1980;
224 
225  /** \brief Members: float descriptor[1960], rf[9]
226  * \ingroup common
227  */
228  struct UniqueShapeContext1960;
229 
230  /** \brief Members: float pfh[125]
231  * \ingroup common
232  */
233  struct PFHSignature125;
234 
235  /** \brief Members: float pfhrgb[250]
236  * \ingroup common
237  */
238  struct PFHRGBSignature250;
239 
240  /** \brief Members: float f1, f2, f3, f4, alpha_m
241  * \ingroup common
242  */
243  struct PPFSignature;
244 
245  /** \brief Members: float f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, alpha_m
246  * \ingroup common
247  */
248  struct CPPFSignature;
249 
250  /** \brief Members: float f1, f2, f3, f4, r_ratio, g_ratio, b_ratio, alpha_m
251  * \ingroup common
252  */
253  struct PPFRGBSignature;
254 
255  /** \brief Members: float values[12]
256  * \ingroup common
257  */
258  struct NormalBasedSignature12;
259 
260  /** \brief Members: float fpfh[33]
261  * \ingroup common
262  */
263  struct FPFHSignature33;
264 
265  /** \brief Members: float vfh[308]
266  * \ingroup common
267  */
268  struct VFHSignature308;
269 
270  /** \brief Members: float grsd[21]
271  * \ingroup common
272  */
273  struct GRSDSignature21;
274 
275  /** \brief Members: float esf[640]
276  * \ingroup common
277  */
278  struct ESFSignature640;
279 
280  /** \brief Members: float gasd[512]
281  * \ingroup common
282  */
283  struct GASDSignature512;
284 
285  /** \brief Members: float gasd[984]
286  * \ingroup common
287  */
288  struct GASDSignature984;
289 
290  /** \brief Members: float gasd[7992]
291  * \ingroup common
292  */
293  struct GASDSignature7992;
294 
295  /** \brief Members: float histogram[16]
296  * \ingroup common
297  */
298  struct GFPFHSignature16;
299 
300  /** \brief Members: float scale; float orientation; std::uint8_t descriptor[64]
301  * \ingroup common
302  */
303  struct BRISKSignature512;
304 
305  /** \brief Members: float x, y, z, roll, pitch, yaw; float descriptor[36]
306  * \ingroup common
307  */
308  struct Narf36;
309 
310  /** \brief Data type to store extended information about a transition from foreground to backgroundSpecification of the fields for BorderDescription::traits.
311  * \ingroup common
312  */
313  using BorderTraits = std::bitset<32>;
314 
315  /** \brief Specification of the fields for BorderDescription::traits.
316  * \ingroup common
317  */
319  {
325  };
326 
327  /** \brief Members: int x, y; BorderTraits traits
328  * \ingroup common
329  */
330  struct BorderDescription;
331 
332  /** \brief Members: float gradient[3]
333  * \ingroup common
334  */
335  struct IntensityGradient;
336 
337  /** \brief Members: float histogram[N]
338  * \ingroup common
339  */
340  template<int N>
341  struct Histogram;
342 
343  /** \brief Members: float x, y, z, scale, angle, response, octave
344  * \ingroup common
345  */
346  struct PointWithScale;
347 
348  /** \brief Members: float x, y, z, normal[3], rgba, radius, confidence, curvature
349  * \ingroup common
350  */
351  struct PointSurfel;
352 
353  /** \brief Members: float x, y, z, intensity, intensity_variance, height_variance
354  * \ingroup common
355  */
356  struct PointDEM;
357 } // namespace pcl
358 /** @} */
359 
360 #include <pcl/impl/point_types.hpp>
361 
362 #if defined _MSC_VER
363  #pragma warning(pop)
364 #endif
BorderTrait
Specification of the fields for BorderDescription::traits.
Definition: point_types.h:319
std::bitset< 32 > BorderTraits
Data type to store extended information about a transition from foreground to backgroundSpecification...
Definition: point_types.h:313
@ BORDER_TRAIT__OBSTACLE_BORDER_TOP
Definition: point_types.h:322
@ BORDER_TRAIT__SHADOW_BORDER_RIGHT
Definition: point_types.h:321
@ BORDER_TRAIT__VEIL_POINT_RIGHT
Definition: point_types.h:324
@ BORDER_TRAIT__VEIL_POINT_TOP
Definition: point_types.h:323
@ BORDER_TRAIT__VEIL_POINT_BOTTOM
Definition: point_types.h:324
@ BORDER_TRAIT__OBSTACLE_BORDER_LEFT
Definition: point_types.h:323
@ BORDER_TRAIT__SHADOW_BORDER_LEFT
Definition: point_types.h:322
@ BORDER_TRAIT__SHADOW_BORDER_BOTTOM
Definition: point_types.h:321
@ BORDER_TRAIT__OBSTACLE_BORDER_RIGHT
Definition: point_types.h:322
@ BORDER_TRAIT__OBSTACLE_BORDER_BOTTOM
Definition: point_types.h:323
@ BORDER_TRAIT__VEIL_POINT_LEFT
Definition: point_types.h:324
@ BORDER_TRAIT__OBSTACLE_BORDER
Definition: point_types.h:320
@ BORDER_TRAIT__SHADOW_BORDER
Definition: point_types.h:320
@ BORDER_TRAIT__SHADOW_BORDER_TOP
Definition: point_types.h:321
@ BORDER_TRAIT__VEIL_POINT
Definition: point_types.h:320
Histogram< 250 > PFHRGBSignature250
Definition: internal.hpp:74
Histogram< 308 > VFHSignature308
Definition: internal.hpp:76
Histogram< 33 > FPFHSignature33
Definition: internal.hpp:75
Histogram< 125 > PFHSignature125
Definition: internal.hpp:73
float4 PointXYZRGB
Definition: internal.hpp:60
std::uint8_t Label
Definition: tree.h:73