Mech-Eye API
2.6.0
API reference documentation for Mech-Eye Industrial 3D Camera
Toggle main menu visibility
Loading...
Searching...
No Matches
area_scan_3d_camera
parameters
PointCloudProcessing.h
1
/*******************************************************************************
2
* BSD 3-Clause License
3
*
4
* Copyright (c) 2016-2025, Mech-Mind Robotics Technologies Co., Ltd.
5
* All rights reserved.
6
*
7
* Redistribution and use in source and binary forms, with or without
8
* modification, are permitted provided that the following conditions are met:
9
*
10
* 1. Redistributions of source code must retain the above copyright notice, this
11
* list of conditions and the following disclaimer.
12
*
13
* 2. Redistributions in binary form must reproduce the above copyright notice,
14
* this list of conditions and the following disclaimer in the documentation
15
* and/or other materials provided with the distribution.
16
*
17
* 3. Neither the name of the copyright holder nor the names of its
18
* contributors may be used to endorse or promote products derived from
19
* this software without specific prior written permission.
20
*
21
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
24
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
25
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
27
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
28
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
29
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31
*
32
* Info: https://www.mech-mind.com/
33
*
34
******************************************************************************/
35
36
#pragma once
37
#include "Parameter.h"
38
39
namespace
mmind {
40
41
namespace
eye {
42
43
// Process the generated point cloud. Please perform image capturing again after adjusting the
44
// parameters to see the result.
45
namespace
pointcloud_processing_setting {
46
47
// Point Cloud Surface Smoothing
48
class
SurfaceSmoothing
49
{
50
public
:
51
static
constexpr
const
char
* name =
"PointCloudSurfaceSmoothing"
;
52
53
static
constexpr
const
char
* description =
54
"Reduces the depth fluctuation in the point cloud and improves its resemblance to the "
55
"actual object surface. Surface smoothing causes loss of object surface details. The more "
56
"intense the smoothing, the more details are lost."
;
57
58
static
constexpr
Parameter::Type
type =
Parameter::Type::_Enum
;
59
60
enum struct
Value {
61
Off,
62
Weak,
63
Normal,
64
Strong,
65
};
66
};
67
68
// Point Cloud Noise Removal
69
class
NoiseRemoval
70
{
71
public
:
72
static
constexpr
const
char
* name =
"PointCloudNoiseRemoval"
;
73
74
static
constexpr
const
char
* description =
75
"Removes the noise in the point cloud, thus reducing the impact on the precision and "
76
"accuracy of subsequent calculation. Noise is the scattered points close to the object "
77
"surface. Noise removal might remove some sharp object features. The more intense the "
78
"noise removal, the more object features might be removed. If this function removes the "
79
"needed object features, please reduce the intensity. However, more noise will be "
80
"retained."
;
81
82
static
constexpr
Parameter::Type
type =
Parameter::Type::_Enum
;
83
84
enum struct
Value {
85
Off,
86
Weak,
87
Normal,
88
Strong,
89
};
90
};
91
92
// Depth Smooth
93
class
DepthSmooth
94
{
95
public
:
96
static
constexpr
const
char
* name =
"DepthSmooth"
;
97
98
static
constexpr
const
char
* description =
99
"Reduces depth fluctuations in the point cloud and improves its resemblance to the actual "
100
"object surface."
;
101
102
static
constexpr
Parameter::Type
type =
Parameter::Type::_Enum
;
103
104
enum struct
Value {
105
Off,
106
Weak,
107
Normal,
108
Strong,
109
};
110
};
111
112
// Depth Hole Filling
113
class
DepthHoleFilling
114
{
115
public
:
116
static
constexpr
const
char
* name =
"DepthHoleFilling"
;
117
118
static
constexpr
const
char
* description =
119
"Fills gaps in the point cloud to make the object surface features more complete."
;
120
121
static
constexpr
Parameter::Type
type =
Parameter::Type::_Enum
;
122
123
enum struct
Value {
124
Off,
125
Weak,
126
Normal,
127
Strong,
128
};
129
};
130
131
// Depth Surface Noise Removal
132
class
DepthSurfaceNoiseRemoval
133
{
134
public
:
135
static
constexpr
const
char
* name =
"DepthSurfaceNoiseRemoval"
;
136
137
static
constexpr
const
char
* description =
138
"Removes noise in the point cloud. Noise refers to scattered points located near the "
139
"object surface."
;
140
141
static
constexpr
Parameter::Type
type =
Parameter::Type::_Enum
;
142
143
enum struct
Value {
144
Off,
145
Weak,
146
Normal,
147
Strong,
148
};
149
};
150
151
// Phase Cluster Outlier Removal
152
class
PhaseClusterOutlierRemoval
153
{
154
public
:
155
static
constexpr
const
char
* name =
"PhaseClusterOutlierRemoval"
;
156
157
static
constexpr
const
char
* description =
158
"Removes outliers in the point cloud. Outliers are clusters of points that are detached "
159
"from the main object point cloud."
;
160
161
static
constexpr
Parameter::Type
type =
Parameter::Type::_Enum
;
162
163
enum struct
Value {
164
L0,
165
L1,
166
L2,
167
L3,
168
L4,
169
L5,
170
L6,
171
L7,
172
L8,
173
L9,
174
L10,
175
};
176
};
177
178
// Spurious Phase Removal
179
class
SpuriousPhaseRemoval
180
{
181
public
:
182
static
constexpr
const
char
* name =
"SpuriousPhaseRemoval"
;
183
184
static
constexpr
const
char
* description =
185
"Removes false points caused by occlusions and other factors in the point cloud."
;
186
187
static
constexpr
Parameter::Type
type =
Parameter::Type::_Enum
;
188
189
enum struct
Value {
190
Off,
191
Weak,
192
Normal,
193
Strong,
194
};
195
};
196
197
// Large Gradient Noise Removal
198
class
LargeGradNoiseRemoval
199
{
200
public
:
201
static
constexpr
const
char
* name =
"LargeGradNoiseRemoval"
;
202
203
static
constexpr
const
char
* description =
204
"Removes abnormal points caused by depth discontinuities, such as large clusters of "
205
"outliers near the side walls of a bin."
;
206
207
static
constexpr
Parameter::Type
type =
Parameter::Type::_Enum
;
208
209
enum struct
Value {
210
Off,
211
Weak,
212
Normal,
213
Strong,
214
};
215
};
216
217
// Point Cloud Outlier Removal
218
class
OutlierRemoval
219
{
220
public
:
221
static
constexpr
const
char
* name =
"PointCloudOutlierRemoval"
;
222
223
static
constexpr
const
char
* description =
224
"Removes the outliers in the point cloud. Outliers are clustered points away from the "
225
"object point cloud. If the object point cloud contains clustered points that have depth "
226
"difference from other parts of the object, high intensities of outlier removal might "
227
"remove these points."
;
228
229
static
constexpr
Parameter::Type
type =
Parameter::Type::_Enum
;
230
231
enum struct
Value {
232
Off,
233
Weak,
234
Normal,
235
Strong,
236
};
237
};
238
239
// Point Cloud Gap Filling
240
class
GapFilling
241
{
242
public
:
243
static
constexpr
const
char
* name =
"PointCloudGapFilling"
;
244
245
static
constexpr
const
char
* description =
246
"Fill in the gaps in the point cloud so that the object's surface features are more "
247
"complete.\n\nNote:\n* This parameter is only available when \"FringeCodingMode\" in the "
248
"\"mmind::eye::projector_setting\" namespace is set to \"Translucent\".\n* More intense "
249
"gap filling "
250
"fills more missing points but may also distort object edges."
;
251
252
static
constexpr
Parameter::Type
type =
Parameter::Type::_Enum
;
253
254
enum struct
Value {
255
Off,
256
Weak,
257
Normal,
258
Strong,
259
};
260
};
261
262
// Point Cloud Edge Preservation
263
class
EdgePreservation
264
{
265
public
:
266
static
constexpr
const
char
* name =
"PointCloudEdgePreservation"
;
267
268
static
constexpr
const
char
* description =
269
"Preserves the sharpness of object edges during surface smoothing. Sharp: Preserves the "
270
"sharpness of object edges as much as possible. However, the effect of surface smoothing "
271
"will be reduced. Normal: Balances between edge preservation and surface smoothing. "
272
"Smooth: Does not preserve the edges.The object surface will be well smoothed, but the "
273
"object edges will be distorted.\n\nNote: For PRO S and PRO M models, "
274
"\"EdgePreservation\" is unavailable when "
275
"\"FringeCodingMode\" in the \"mmind::eye::projector_setting\" namespace is set to "
276
"\"Translucent\"."
;
277
278
static
constexpr
Parameter::Type
type =
Parameter::Type::_Enum
;
279
280
enum struct
Value {
281
Sharp,
282
Normal,
283
Smooth,
284
};
285
};
286
287
class
EnableDistortionCorrection
288
{
289
public
:
290
static
constexpr
const
char
* name =
"EnableDistortionCorrection"
;
291
292
static
constexpr
const
char
* description =
293
"Set this parameter to true to enable distortion correction.\n\nNote:\n* Enabling "
294
"distortion correction lowers the "
295
"acquisition speed.\n* \"EnableDistortionCorrection\" is unavailable when "
296
"\"FringeCodingMode\" is set to \"Translucent\" or \"Reflective\"."
;
297
298
static
constexpr
Parameter::Type
type =
Parameter::Type::_Bool
;
299
};
300
301
class
DistortionCorrection
302
{
303
public
:
304
static
constexpr
const
char
* name =
"DistortionCorrection"
;
305
306
static
constexpr
const
char
* description =
307
"Adjust the intensity of distortion correction.\n\nNote:\n* A \"DistortionCorrection\" too "
308
"large may result in adverse effects. Please acquire data again after adjusting the "
309
"parameter to check its influence on the depth map and point cloud.\n* "
310
"\"DistortionCorrection\" is unavailable when \"FringeCodingMode\" is set to "
311
"\"Translucent\" or \"Reflective\"."
;
312
313
static
constexpr
Parameter::Type
type =
Parameter::Type::_Int
;
314
315
static
constexpr
Range<int>
range() {
return
{1, 10}; }
316
317
static
constexpr
const
char
* unit =
""
;
318
};
319
320
// Stripe Contrast Threshold
321
class
FringeContrastThreshold
322
{
323
public
:
324
static
constexpr
const
char
* name =
"FringeContrastThreshold"
;
325
326
static
constexpr
const
char
* description =
327
"If the level of noise is still high after adjusting Outlier Removal and Noise Removal, "
328
"please increase the value of this parameter. However, the points of dark objects might be "
329
"lost."
;
330
331
static
constexpr
Parameter::Type
type =
Parameter::Type::_Int
;
332
333
static
constexpr
Range<int>
range() {
return
{1, 100}; }
334
335
static
constexpr
const
char
* unit =
""
;
336
};
337
338
// Minimum Fringe Intensity Threshold
339
class
FringeMinThreshold
340
{
341
public
:
342
static
constexpr
const
char
* name =
"FringeMinThreshold"
;
343
344
static
constexpr
const
char
* description =
345
"Set the signal minimum threshold for effective pixels. Pixels with intensity less than "
346
"this threshold will be ignored. A higher value will result in more image noise to be "
347
"filtered but may also cause the point cloud of dark objects to be removed.\n\nNote: "
348
"\"FringeMinThreshold\" is unavailable when \"FringeCodingMode\" is set to \"Reflective\"."
;
349
350
static
constexpr
Parameter::Type
type =
Parameter::Type::_Int
;
351
352
static
constexpr
Range<int>
range() {
return
{1, 100}; }
353
354
static
constexpr
const
char
* unit =
""
;
355
};
356
357
class
EdgeArtifactRemoval
358
{
359
public
:
360
static
constexpr
const
char
* name =
"EdgeArtifactRemoval"
;
361
362
static
constexpr
const
char
* description =
""
;
363
364
static
constexpr
Parameter::Type
type =
Parameter::Type::_Bool
;
365
};
366
367
class
EnableGapFilling
368
{
369
public
:
370
static
constexpr
const
char
* name =
"EnableGapFilling"
;
371
372
static
constexpr
const
char
* description =
373
"Enable this parameter to fill the gaps in the point cloud."
;
374
375
static
constexpr
Parameter::Type
type =
Parameter::Type::_Bool
;
376
};
377
378
class
GapSize
379
{
380
public
:
381
static
constexpr
const
char
* name =
"GapSize"
;
382
383
static
constexpr
const
char
* description =
384
"Sets the size of the gaps to be filled. Gaps with missing pixels fewer than the specified."
385
"value will be filled"
;
386
387
static
constexpr
Parameter::Type
type =
Parameter::Type::_Int
;
388
389
static
constexpr
Range<int>
range() {
return
{10, 100}; }
390
391
static
constexpr
const
char
* unit =
"pixel"
;
392
};
393
394
}
// namespace pointcloud_processing_setting
395
}
// namespace eye
396
}
// namespace mmind
mmind::eye::Parameter::Type
Type
Describes the device parameter data types.
Definition
Parameter.h:30
mmind::eye::Parameter::_Int
@ _Int
Integer type.
Definition
Parameter.h:31
mmind::eye::Parameter::_Enum
@ _Enum
Enumeration type.
Definition
Parameter.h:34
mmind::eye::Parameter::_Bool
@ _Bool
Boolean type.
Definition
Parameter.h:33
mmind::eye::pointcloud_processing_setting::DepthHoleFilling
Definition
PointCloudProcessing.h:114
mmind::eye::pointcloud_processing_setting::DepthSmooth
Definition
PointCloudProcessing.h:94
mmind::eye::pointcloud_processing_setting::DepthSurfaceNoiseRemoval
Definition
PointCloudProcessing.h:133
mmind::eye::pointcloud_processing_setting::DistortionCorrection
Definition
PointCloudProcessing.h:302
mmind::eye::pointcloud_processing_setting::EdgeArtifactRemoval
Definition
PointCloudProcessing.h:358
mmind::eye::pointcloud_processing_setting::EdgePreservation
Definition
PointCloudProcessing.h:264
mmind::eye::pointcloud_processing_setting::EnableDistortionCorrection
Definition
PointCloudProcessing.h:288
mmind::eye::pointcloud_processing_setting::EnableGapFilling
Definition
PointCloudProcessing.h:368
mmind::eye::pointcloud_processing_setting::FringeContrastThreshold
Definition
PointCloudProcessing.h:322
mmind::eye::pointcloud_processing_setting::FringeMinThreshold
Definition
PointCloudProcessing.h:340
mmind::eye::pointcloud_processing_setting::GapFilling
Definition
PointCloudProcessing.h:241
mmind::eye::pointcloud_processing_setting::GapSize
Definition
PointCloudProcessing.h:379
mmind::eye::pointcloud_processing_setting::LargeGradNoiseRemoval
Definition
PointCloudProcessing.h:199
mmind::eye::pointcloud_processing_setting::NoiseRemoval
Definition
PointCloudProcessing.h:70
mmind::eye::pointcloud_processing_setting::OutlierRemoval
Definition
PointCloudProcessing.h:219
mmind::eye::pointcloud_processing_setting::PhaseClusterOutlierRemoval
Definition
PointCloudProcessing.h:153
mmind::eye::pointcloud_processing_setting::SpuriousPhaseRemoval
Definition
PointCloudProcessing.h:180
mmind::eye::pointcloud_processing_setting::SurfaceSmoothing
Definition
PointCloudProcessing.h:49
mmind::eye::Range
Describes a value range.
Definition
CommonTypes.h:29
Generated by
1.17.0