core_3d.hpp
1 #pragma once
2 
3 
4 #include "namespace.hpp"
5 #include "global.hpp"
6 
7 #include "_cexports/c_core_3d.h"
8 
9 namespace Cvb
10 {
11 
12 CVB_BEGIN_INLINE_NS
13 
15 
16 struct Factors3D
17 {
19  double X;
21  double Y;
23  double Z;
24 
26 
31  Factors3D(double x = 1, double y = 1, double z = 1)
32  : X(x), Y(y), Z(z)
33  {
34  }
35 };
36 
37 
38 class PointCloud;
41 
42 class DensePointCloud;
45 
46 class SparsePointCloud;
49 
50 class Calibrator3D;
53 
54 class AtCalibrator3D;
57 
61 
62 class MatrixCalibrator3D;
65 
69 
73 
77 
81 
82 template <class T>
83 class Mesh;
85 template <class T>
87 
89 enum class PointCloudFlags
90 {
94  Float = CExports::CVC3DPCF_DTFloat,
95 
99  Double = CExports::CVC3DPCF_DTDouble,
100 
104  XYZ = CExports::CVC3DPCF_XYZ,
105 
109  XYZW = CExports::CVC3DPCF_XYZW,
110 
114  XYZConfidence = CExports::CVC3DPCF_XYZConfidence,
115 
119  WithConfidence = CExports::CVC3DPCF_WithConfidence,
120 
124  NoExtrinsic = CExports::CVC3DPCF_NoExtrinsic,
125 
131  NoMeshIndices = CExports::CVC3DPCF_NoMeshIndices
132 };
133 
134 inline PointCloudFlags operator|(PointCloudFlags a, PointCloudFlags b)
135 {
136  return static_cast<PointCloudFlags>(static_cast<int>(a) | static_cast<int>(b));
137 }
138 
141 {
150  Ascii = CExports::CVC3DPCFF_Ascii,
151 
161  Ply = CExports::CVC3DPCFF_Ply,
162 
170  Stl = CExports::CVC3DPCFF_Stl,
171 
172  /*
173  * \brief Wavefront object file format.
174  *
175  * This format is usually specified by the filename extension: .obj
176  * Only reading is supported.
177  *
178  * Loading mesh information is supported.
179  */
180  WavefrontObj = CExports::CVC3DPCFF_WavefrontObj,
181 
190  Tiff = CExports::CVC3DPCFF_Tiff
191 };
192 
195 {
199  Invalid = CExports::CVC3DPCL_Invalid,
200 
206  Linear = CExports::CVC3DPCL_Linear,
207 
213  SeparatePlanar = CExports::CVC3DPCL_SeparatePlanar,
214 
220  Planar = CExports::CVC3DPCL_Planar,
221 
227  Interleaved = CExports::CVC3DPCL_Interleaved
228 };
229 
231 enum class DownSampleMode
232 {
236  DownsampleByFactor = CExports::CVC3DDownsampleByFactor,
237 
241  RemoveRandomly = CExports::CVC3DRemoveRandomly
242 };
243 
246 {
250  Absolute = CExports::CVC3DSPP_Absolute,
251 
255  Relative = CExports::CVC3DSPP_Relative
256 };
257 
260 {
264  None = CExports::CVC3DSPM_None,
265 
269  X = CExports::CVC3DSPM_X,
270 
274  Y = CExports::CVC3DSPM_Y,
275 
279  XY = CExports::CVC3DSPM_XY
280 };
281 
283 enum class CropRange
284 {
287  CropWithinRange = CExports::CVC3DC_CropWithinRange,
288 
292  CropOutsideRange = CExports::CVC3DC_CropOutsideRange
293 };
294 
296 enum class CropDirection
297 {
301  Below = 0,
305  Above = 1
306 };
307 CVB_END_INLINE_NS
308 
309 }
Polygon file format.
Definition: core_3d.hpp:161
STL class.
No mirroring is applied.
Base calibration class to apply 3D calibration to point clouds.
Definition: decl_calibrator_3d.hpp:66
Crops points within given range.
3D mesh object consisting of polygons.
Definition: core_3d.hpp:83
Factors3D(double x=1, double y=1, double z=1)
Creates a new Factors3D object.
Definition: core_3d.hpp:31
Factor components to be applied in the 3D domain.
Definition: core_3d.hpp:16
Crop below given plane.
double X
The X factor.
Definition: core_3d.hpp:19
Calibration object from CVB Metric to apply a x-z homography for laser triangulation cameras.
Definition: decl_laser_plane_homography_calibrator_3d.hpp:16
Crop above given plane.
A sparse Cartesian 3D point cloud object.
Definition: decl_sparse_point_cloud.hpp:28
SensorPixelsMirrored
Indicates if sensor pixels are mirrored in rangemap.
Definition: core_3d.hpp:259
DownSampleMode
Specifies how to remove points from a point cloud.
Definition: core_3d.hpp:231
Scaled rangemap values represent relative pixel position to given offset on sensor.
Calibration object to apply the pinhole camera model to the input range map.
Definition: decl_pinhole_camera_calibrator_3d.hpp:16
Root namespace for the Image Manager interface.
Definition: version.hpp:11
Ascii file format.
Definition: core_3d.hpp:150
PointCloudLayout
Supported point cloud point layouts.
Definition: core_3d.hpp:194
Sensor pixel values are mirrored in X and Y.
CropRange
Indicates cropping range.
Definition: core_3d.hpp:283
Crops points outside given range.
Sensor pixel values are mirrored in Y (or denoted by v), so that the range map pixel values will be f...
SensorPixelPosition
Indicates pixel position on sensor.
Definition: core_3d.hpp:245
Calibration object to appling parameters calibrating laser plane.
Definition: decl_laser_plane_calibrator_3d.hpp:17
Sensor pixel values are mirrored in X (or denoted by u), so that the columns of the range map will be...
Scaled rangemap values represent absolute pixel position on sensor.
Calibration object to apply 4x4 matrix to each point.
Definition: decl_matrix_calibrator_3d.hpp:15
TIFF file format.
Definition: core_3d.hpp:190
Calibration object to apply zig zag algorithm to the range map of a laser triangulation cameras.
Definition: decl_laser_plane_zigzag_calibrator_3d.hpp:16
double Y
The Y factor.
Definition: core_3d.hpp:21
CropDirection
Indicates cropping direction.
Definition: core_3d.hpp:296
Calibration object to apply 3D calibration of sensor provided by Automation Technology (AT) to point ...
Definition: decl_at_calibrator_3d.hpp:16
Stereo lithography file format.
Definition: core_3d.hpp:170
PointCloudFileFormat
Supported point cloud point formats.
Definition: core_3d.hpp:140
PointCloudFlags
Flags for creating point clouds.
Definition: core_3d.hpp:89
double Z
The Z factor.
Definition: core_3d.hpp:23
Calibration object to apply factors component wise.
Definition: decl_factors_calibrator_3d.hpp:15
A dense Cartesian 3D point cloud object.
Definition: decl_dense_point_cloud.hpp:29