Point Cloud Library (PCL)  1.14.0-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 #include <bitset>
43 
44 
45 /**
46  * \file pcl/point_types.h
47  * Defines all the PCL implemented PointT point type structures
48  * \ingroup common
49  */
50 
51 // Allow nameless structs/unions
52 #if defined _MSC_VER
53  #pragma warning(disable: 4201)
54 #endif
55 
56 /** @{*/
57 namespace pcl
58 {
59  /** \brief Members: float x, y, z
60  * \ingroup common
61  */
62  struct PointXYZ;
63 
64  /** \brief Members: rgba
65  * \ingroup common
66  */
67  struct RGB;
68 
69  /** \brief Members: intensity (float)
70  * \ingroup common
71  */
72  struct Intensity;
73 
74  /** \brief Members: intensity (std::uint8_t)
75  * \ingroup common
76  */
77  struct Intensity8u;
78 
79  /** \brief Members: intensity (std::uint32_t)
80  * \ingroup common
81  */
82  struct Intensity32u;
83 
84  /** \brief Members: float x, y, z, intensity
85  * \ingroup common
86  */
87  struct PointXYZI;
88 
89  /** \brief Members: float x, y, z, uin32_t label
90  * \ingroup common
91  */
92  struct PointXYZL;
93 
94  /** \brief Members: std::uint32_t label
95  * \ingroup common
96  */
97  struct Label;
98 
99  /** \brief Members: float x, y, z; std::uint32_t rgba
100  * \ingroup common
101  */
102  struct PointXYZRGBA;
103 
104  /** \brief Members: float x, y, z, rgb
105  * \ingroup common
106  */
107  struct PointXYZRGB;
108 
109  /** \brief Members: float x, y, z, rgb, std::uint32_t label
110  * \ingroup common
111  */
112  struct PointXYZRGBL;
113 
114  /** \brief Members: float x, y, z, L, a, b
115  * \ingroup common
116  */
117  struct PointXYZLAB;
118 
119  /** \brief Members: float x, y, z, h, s, v
120  * \ingroup common
121  */
122  struct PointXYZHSV;
123 
124  /** \brief Members: float x, y
125  * \ingroup common
126  */
127  struct PointXY;
128 
129  /** \brief Members: float u, v
130  * \ingroup common
131  */
132  struct PointUV;
133 
134  /** \brief Members: float x, y, z, strength
135  * \ingroup common
136  */
137  struct InterestPoint;
138 
139  /** \brief Members: float normal[3], curvature
140  * \ingroup common
141  */
142  struct Normal;
143 
144  /** \brief Members: float normal[3]
145  * \ingroup common
146  */
147  struct Axis;
148 
149  /** \brief Members: float x, y, z; float normal[3], curvature
150  * \ingroup common
151  */
152  struct PointNormal;
153 
154  /** \brief Members: float x, y, z, rgb, normal[3], curvature
155  * \ingroup common
156  */
157  struct PointXYZRGBNormal;
158 
159  /** \brief Members: float x, y, z, intensity, normal[3], curvature
160  * \ingroup common
161  */
162  struct PointXYZINormal;
163 
164  /** \brief Members: float x, y, z, label, normal[3], curvature
165  * \ingroup common
166  */
167  struct PointXYZLNormal;
168 
169  /** \brief Members: float x, y, z (union with float point[4]), range
170  * \ingroup common
171  */
172  struct PointWithRange;
173 
174  /** \brief Members: float x, y, z, vp_x, vp_y, vp_z
175  * \ingroup common
176  */
177  struct PointWithViewpoint;
178 
179  /** \brief Members: float j1, j2, j3
180  * \ingroup common
181  */
182  struct MomentInvariants;
183 
184  /** \brief Members: float r_min, r_max
185  * \ingroup common
186  */
187  struct PrincipalRadiiRSD;
188 
189  /** \brief Members: std::uint8_t boundary_point
190  * \ingroup common
191  */
192  struct Boundary;
193 
194  /** \brief Members: float principal_curvature[3], pc1, pc2
195  * \ingroup common
196  */
197  struct PrincipalCurvatures;
198 
199  /** \brief Members: float descriptor[352], rf[9]
200  * \ingroup common
201  */
202  struct SHOT352;
203 
204  /** \brief Members: float descriptor[1344], rf[9]
205  * \ingroup common
206  */
207  struct SHOT1344;
208 
209  /** \brief Members: Axis x_axis, y_axis, z_axis
210  * \ingroup common
211  */
212  struct ReferenceFrame;
213 
214  /** \brief Members: float descriptor[1980], rf[9]
215  * \ingroup common
216  */
217  struct ShapeContext1980;
218 
219  /** \brief Members: float descriptor[1960], rf[9]
220  * \ingroup common
221  */
222  struct UniqueShapeContext1960;
223 
224  /** \brief Members: float pfh[125]
225  * \ingroup common
226  */
227  struct PFHSignature125;
228 
229  /** \brief Members: float pfhrgb[250]
230  * \ingroup common
231  */
232  struct PFHRGBSignature250;
233 
234  /** \brief Members: float f1, f2, f3, f4, alpha_m
235  * \ingroup common
236  */
237  struct PPFSignature;
238 
239  /** \brief Members: float f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, alpha_m
240  * \ingroup common
241  */
242  struct CPPFSignature;
243 
244  /** \brief Members: float f1, f2, f3, f4, r_ratio, g_ratio, b_ratio, alpha_m
245  * \ingroup common
246  */
247  struct PPFRGBSignature;
248 
249  /** \brief Members: float values[12]
250  * \ingroup common
251  */
252  struct NormalBasedSignature12;
253 
254  /** \brief Members: float fpfh[33]
255  * \ingroup common
256  */
257  struct FPFHSignature33;
258 
259  /** \brief Members: float vfh[308]
260  * \ingroup common
261  */
262  struct VFHSignature308;
263 
264  /** \brief Members: float grsd[21]
265  * \ingroup common
266  */
267  struct GRSDSignature21;
268 
269  /** \brief Members: float esf[640]
270  * \ingroup common
271  */
272  struct ESFSignature640;
273 
274  /** \brief Members: float gasd[512]
275  * \ingroup common
276  */
277  struct GASDSignature512;
278 
279  /** \brief Members: float gasd[984]
280  * \ingroup common
281  */
282  struct GASDSignature984;
283 
284  /** \brief Members: float gasd[7992]
285  * \ingroup common
286  */
287  struct GASDSignature7992;
288 
289  /** \brief Members: float histogram[16]
290  * \ingroup common
291  */
292  struct GFPFHSignature16;
293 
294  /** \brief Members: float scale; float orientation; std::uint8_t descriptor[64]
295  * \ingroup common
296  */
297  struct BRISKSignature512;
298 
299  /** \brief Members: float x, y, z, roll, pitch, yaw; float descriptor[36]
300  * \ingroup common
301  */
302  struct Narf36;
303 
304  /** \brief Data type to store extended information about a transition from foreground to backgroundSpecification of the fields for BorderDescription::traits.
305  * \ingroup common
306  */
307  using BorderTraits = std::bitset<32>;
308 
309  /** \brief Specification of the fields for BorderDescription::traits.
310  * \ingroup common
311  */
313  {
319  };
320 
321  /** \brief Members: int x, y; BorderTraits traits
322  * \ingroup common
323  */
324  struct BorderDescription;
325 
326  /** \brief Members: float gradient[3]
327  * \ingroup common
328  */
329  struct IntensityGradient;
330 
331  /** \brief Members: float histogram[N]
332  * \ingroup common
333  */
334  template<int N>
335  struct Histogram;
336 
337  /** \brief Members: float x, y, z, scale, angle, response, octave
338  * \ingroup common
339  */
340  struct PointWithScale;
341 
342  /** \brief Members: float x, y, z, normal[3], rgba, radius, confidence, curvature
343  * \ingroup common
344  */
345  struct PointSurfel;
346 
347  /** \brief Members: float x, y, z, intensity, intensity_variance, height_variance
348  * \ingroup common
349  */
350  struct PointDEM;
351 } // namespace pcl
352 /** @} */
353 
354 #include <pcl/impl/point_types.hpp>
BorderTrait
Specification of the fields for BorderDescription::traits.
Definition: point_types.h:313
std::bitset< 32 > BorderTraits
Data type to store extended information about a transition from foreground to backgroundSpecification...
Definition: point_types.h:307
@ BORDER_TRAIT__OBSTACLE_BORDER_TOP
Definition: point_types.h:316
@ BORDER_TRAIT__SHADOW_BORDER_RIGHT
Definition: point_types.h:315
@ BORDER_TRAIT__VEIL_POINT_RIGHT
Definition: point_types.h:318
@ BORDER_TRAIT__VEIL_POINT_TOP
Definition: point_types.h:317
@ BORDER_TRAIT__VEIL_POINT_BOTTOM
Definition: point_types.h:318
@ BORDER_TRAIT__OBSTACLE_BORDER_LEFT
Definition: point_types.h:317
@ BORDER_TRAIT__SHADOW_BORDER_LEFT
Definition: point_types.h:316
@ BORDER_TRAIT__SHADOW_BORDER_BOTTOM
Definition: point_types.h:315
@ BORDER_TRAIT__OBSTACLE_BORDER_RIGHT
Definition: point_types.h:316
@ BORDER_TRAIT__OBSTACLE_BORDER_BOTTOM
Definition: point_types.h:317
@ BORDER_TRAIT__VEIL_POINT_LEFT
Definition: point_types.h:318
@ BORDER_TRAIT__OBSTACLE_BORDER
Definition: point_types.h:314
@ BORDER_TRAIT__SHADOW_BORDER
Definition: point_types.h:314
@ BORDER_TRAIT__SHADOW_BORDER_TOP
Definition: point_types.h:315
@ BORDER_TRAIT__VEIL_POINT
Definition: point_types.h:314
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