Mech-Eye API
2.3.3
API reference documentation for Mech-Eye Industrial 3D Camera
Loading...
Searching...
No Matches
include
camera
area_scan_3d_camera
parameters
PointCloudProcessing.h
1
/*******************************************************************************
2
* BSD 3-Clause License
3
*
4
* Copyright (c) 2016-2024, Mech-Mind Robotics
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
// Point Cloud Outlier Removal
93
class
OutlierRemoval
94
{
95
public
:
96
static
constexpr
const
char
* name =
"PointCloudOutlierRemoval"
;
97
98
static
constexpr
const
char
* description =
99
"Removes the outliers in the point cloud. Outliers are clustered points away from the "
100
"object point cloud. If the object point cloud contains clustered points that have depth "
101
"difference from other parts of the object, high intensities of outlier removal might "
102
"remove these points."
;
103
104
static
constexpr
Parameter::Type
type =
Parameter::Type::_Enum
;
105
106
enum struct
Value {
107
Off,
108
Weak,
109
Normal,
110
Strong,
111
};
112
};
113
114
// Point Cloud Gap Filling
115
class
GapFilling
116
{
117
public
:
118
static
constexpr
const
char
* name =
"PointCloudGapFilling"
;
119
120
static
constexpr
const
char
* description =
121
"Fill in the gaps in the point cloud so that the object's surface features are more "
122
"complete.\n\nNote:\n* This parameter is only available when \"FringeCodingMode\" in the "
123
"\"mmind::eye::projector_setting\" namespace is set to \"Translucent\".\n* More intense "
124
"gap filling "
125
"fills more missing points but may also distort object edges."
;
126
127
static
constexpr
Parameter::Type
type =
Parameter::Type::_Enum
;
128
129
enum struct
Value {
130
Off,
131
Weak,
132
Normal,
133
Strong,
134
};
135
};
136
137
// Point Cloud Edge Preservation
138
class
EdgePreservation
139
{
140
public
:
141
static
constexpr
const
char
* name =
"PointCloudEdgePreservation"
;
142
143
static
constexpr
const
char
* description =
144
"Preserves the sharpness of object edges during surface smoothing. Sharp: Preserves the "
145
"sharpness of object edges as much as possible. However, the effect of surface smoothing "
146
"will be reduced. Normal: Balances between edge preservation and surface smoothing. "
147
"Smooth: Does not preserve the edges.The object surface will be well smoothed, but the "
148
"object edges will be distorted.\n\nNote: \"EdgePreservation\" is unavailable when "
149
"\"FringeCodingMode\" in the \"mmind::eye::projector_setting\" namespace is set to "
150
"\"Translucent\"."
;
151
152
static
constexpr
Parameter::Type
type =
Parameter::Type::_Enum
;
153
154
enum struct
Value {
155
Sharp,
156
Normal,
157
Smooth,
158
};
159
};
160
161
class
EnableDistortionCorrection
162
{
163
public
:
164
static
constexpr
const
char
* name =
"EnableDistortionCorrection"
;
165
166
static
constexpr
const
char
* description =
167
"Set this parameter to true to enable distortion correction.\n\nNote:\n* Enabling "
168
"distortion correction lowers the "
169
"acquisition speed.\n* \"EnableDistortionCorrection\" is unavailable when "
170
"\"FringeCodingMode\" is set to \"Translucent\" or \"Reflective\"."
;
171
172
static
constexpr
Parameter::Type
type =
Parameter::Type::_Bool
;
173
};
174
175
class
DistortionCorrection
176
{
177
public
:
178
static
constexpr
const
char
* name =
"DistortionCorrection"
;
179
180
static
constexpr
const
char
* description =
181
"Adjust the intensity of distortion correction.\n\nNote:\n* A \"DistortionCorrection\" too "
182
"large may result in adverse effects. Please acquire data again after adjusting the "
183
"parameter to check its influence on the depth map and point cloud.\n* "
184
"\"DistortionCorrection\" is unavailable when \"FringeCodingMode\" is set to "
185
"\"Translucent\" or \"Reflective\"."
;
186
187
static
constexpr
Parameter::Type
type =
Parameter::Type::_Int
;
188
189
static
constexpr
Range<int>
range() {
return
{1, 10}; }
190
191
static
constexpr
const
char
* unit =
""
;
192
};
193
194
// Stripe Contrast Threshold
195
class
FringeContrastThreshold
196
{
197
public
:
198
static
constexpr
const
char
* name =
"FringeContrastThreshold"
;
199
200
static
constexpr
const
char
* description =
201
"If the level of noise is still high after adjusting Outlier Removal and Noise Removal, "
202
"please increase the value of this parameter. However, the points of dark objects might be "
203
"lost."
;
204
205
static
constexpr
Parameter::Type
type =
Parameter::Type::_Int
;
206
207
static
constexpr
Range<int>
range() {
return
{1, 100}; }
208
209
static
constexpr
const
char
* unit =
""
;
210
};
211
212
// Minimum Fringe Intensity Threshold
213
class
FringeMinThreshold
214
{
215
public
:
216
static
constexpr
const
char
* name =
"FringeMinThreshold"
;
217
218
static
constexpr
const
char
* description =
219
"Set the signal minimum threshold for effective pixels. Pixels with intensity less than "
220
"this threshold will be ignored. A higher value will result in more image noise to be "
221
"filtered but may also cause the point cloud of dark objects to be removed.\n\nNote: "
222
"\"FringeMinThreshold\" is unavailable when \"FringeCodingMode\" is set to \"Reflective\"."
;
223
224
static
constexpr
Parameter::Type
type =
Parameter::Type::_Int
;
225
226
static
constexpr
Range<int>
range() {
return
{1, 100}; }
227
228
static
constexpr
const
char
* unit =
""
;
229
};
230
231
}
// namespace pointcloud_processing_setting
232
}
// namespace eye
233
}
// namespace mmind
mmind::eye::Array2D
Represents a 2D container of data.
Definition
Array2D.h:17
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::DistortionCorrection
Definition
PointCloudProcessing.h:176
mmind::eye::pointcloud_processing_setting::EdgePreservation
Definition
PointCloudProcessing.h:139
mmind::eye::pointcloud_processing_setting::EnableDistortionCorrection
Definition
PointCloudProcessing.h:162
mmind::eye::pointcloud_processing_setting::FringeContrastThreshold
Definition
PointCloudProcessing.h:196
mmind::eye::pointcloud_processing_setting::FringeMinThreshold
Definition
PointCloudProcessing.h:214
mmind::eye::pointcloud_processing_setting::GapFilling
Definition
PointCloudProcessing.h:116
mmind::eye::pointcloud_processing_setting::NoiseRemoval
Definition
PointCloudProcessing.h:70
mmind::eye::pointcloud_processing_setting::OutlierRemoval
Definition
PointCloudProcessing.h:94
mmind::eye::pointcloud_processing_setting::SurfaceSmoothing
Definition
PointCloudProcessing.h:49
Generated by
1.10.0