Mech-Eye API 2.5.2
API reference documentation for Mech-Eye 3D Laser Profiler
Loading...
Searching...
No Matches
RawImageParameters.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
33#pragma once
34#include "Parameter.h"
35
36namespace mmind {
37namespace eye {
38
39namespace brightness_settings {
40
42{
43public:
44 static constexpr const char* name = "ExposureMode";
45
46 static constexpr const char* description =
47 "Select the exposure mode for acquiring the raw image based on the texture and color of "
48 "the target object.\nTimed: suitable for target objects of a single texture or color. "
49 "\nHDR: suitable for target objects with various textures or colors.";
50
51 static constexpr Parameter::Type type = Parameter::Type::_Enum;
52
53 enum struct Value {
54 HDR,
55 Timed,
56 };
57};
58
60{
61public:
62 static constexpr const char* name = "ExposureTime";
63
64 static constexpr const char* description =
65 "The function of this parameter depends on the the value of \"ExposureMode\".\n\nIf "
66 "\"ExposureMode\" is set to \"Timed\": Set the exposure time for acquiring the raw image "
67 "in this parameter. Exposure time affects the brightness and width of the laser lines in "
68 "the raw image, as well as the \"MaxScanRate\" of the laser profiler.\nLonger exposure "
69 "time results in brighter and wider laser lines and lower \"MaxScanRate\". Shorter "
70 "exposure time results in darker and narrower laser lines and higher "
71 "\"MaxScanRate\".\n\nIf \"ExposureMode\" is set to \"HDR\": Set the total time for three "
72 "exposures in this parameter. Then, adjust \"HdrExposureTimeProportion1\" and "
73 "\"HdrExposureTimeProportion2\" to change the lengths of each exposure.\n\nTo enhance the "
74 "\"MaxScanRate\", decrease this parameter and increase \"AnalogGain\".\nIf this parameter "
75 "has reached its maximum value, but the laser lines are still too dark, increase "
76 "\"AnalogGain\".\nIf this parameter has reached its minimum value, but the laser lines are "
77 "still too bright, decrease \"LaserPower\".";
78
79 static constexpr Parameter::Type type = Parameter::Type::_Int;
80
81 static constexpr const char* unit = "us";
82};
83
85{
86public:
87 static constexpr const char* name = "HdrExposureTimeProportion1";
88
89 static constexpr const char* description =
90 "Adjust the proportion of the first exposure time in the total exposure time of the HDR "
91 "exposure mode. The value of this parameter is usually greater than the value of "
92 "\"HdrExposureTimeProportion2\".";
93
94 static constexpr Parameter::Type type = Parameter::Type::_Float;
95
96 static constexpr const char* unit = "%";
97};
98
100{
101public:
102 static constexpr const char* name = "HdrExposureTimeProportion2";
103
104 static constexpr const char* description =
105 "Adjust the proportion of the second exposure time in the total exposure time of the HDR "
106 "exposure mode. The value of this parameter is usually smaller than the value of "
107 "\"HdrExposureTimeProportion1\" but greater than "
108 "(1-\"HdrExposureTimeProportion1\"-\"HdrExposureTimeProportion2\").";
109
110 static constexpr Parameter::Type type = Parameter::Type::_Float;
111
112 static constexpr const char* unit = "%";
113};
114
116{
117public:
118 static constexpr const char* name = "HdrFirstThreshold";
119
120 static constexpr const char* description =
121 "Set the maximum reachable grayscale value of the first exposure time of the HDR exposure "
122 "mode. This is a percentage of the largest grayscale value 255.";
123
124 static constexpr Parameter::Type type = Parameter::Type::_Float;
125
126 static constexpr const char* unit = "%";
127};
128
130{
131public:
132 static constexpr const char* name = "HdrSecondThreshold";
133
134 static constexpr const char* description =
135 "Set the maximum reachable grayscale value of the second exposure time of the HDR exposure "
136 "mode. This is a percentage of the largest grayscale value 255.";
137
138 static constexpr Parameter::Type type = Parameter::Type::_Float;
139
140 static constexpr const char* unit = "%";
141};
142
144{
145public:
146 static constexpr const char* name = "AnalogGain";
147
148 static constexpr const char* description =
149 "Increasing this parameter can enhance the brightness of the raw image. However, noise "
150 "will also be introduced.\nIf the laser lines are dark, but a high \"MaxScanRate\" is "
151 "needed, you can increase this parameter and decrease \"ExposureTime\".\nIf "
152 "\"ExposureTime\" has reached its maximum value, but the laser lines are still too "
153 "dark, you can increase this parameter.\nIf this parameter has reached its maximum value, "
154 "but the laser lines are still too dark, increase \"DigitalGain\" or "
155 "\"LaserPower\".\nNote: A large value of this parameter weakens the effect of HDR.";
156
157 static constexpr Parameter::Type type = Parameter::Type::_Enum;
158
159 enum struct Value {
160 Gain_1,
161 Gain_2,
162 Gain_3,
163 Gain_4,
164 Gain_5,
165 };
166};
167
168class [[deprecated(
169 "Use class AnalogGain for LNX-8030 profilers with firmware version >= "
170 "V2.3.0.")]] AnalogGainFor8030;
172{
173public:
174 static constexpr const char* name = "AnalogGainFor8030";
175
176 static constexpr const char* description =
177 "Increasing this parameter can enhance the brightness of the raw image. However, noise "
178 "will also be introduced.\nIf the laser lines are dark, but a high \"MaxScanRate\" is "
179 "needed, you can increase this parameter and decrease \"ExposureTime\".\nIf "
180 "\"ExposureTime\" has reached its maximum value, but the laser lines are still too "
181 "dark, you can increase this parameter.\nIf this parameter has reached its maximum value, "
182 "but the laser lines are still too dark, increase \"DigitalGain\" or "
183 "\"LaserPower\".\nNote: A large value of this parameter weakens the effect of HDR.\n\n* "
184 "Note: this parameter is deprecated since V2.3.0. If your profiler has firmware version >= "
185 "V2.3.0, please use \"AnalogGain\" instead.";
186
187 static constexpr Parameter::Type type = Parameter::Type::_Enum;
188
189 enum struct Value {
190 Gain_1_0,
191 Gain_1_3,
192 Gain_2_0,
193 Gain_3_0,
194 };
195};
196
198{
199public:
200 static constexpr const char* name = "DigitalGain";
201
202 static constexpr const char* description =
203 "Increasing this parameter can enhance the brightness of the raw image. However, a "
204 "relatively large amount of noise will also be introduced.\nIf \"AnalogGain\" has reached "
205 "its maximum value, but the laser lines are still too dark, you can increase \"Digital "
206 "Gain\". \n\nNote: \"Digital Gain\" affects the minimum value of \"Min Grayscale "
207 "Value\".";
208
209 static constexpr Parameter::Type type = Parameter::Type::_Int;
210};
211
213{
214public:
215 static constexpr const char* name = "LaserPower";
216
217 static constexpr const char* description =
218 "Set the power of the emitted laser, which affects the brightness of the laser lines in "
219 "the raw image.\nIf the object is reflective or light-colored, you can decrease this "
220 "parameter to reduce the brightness of the laser lines. If the object is unreflective or "
221 "dark-colored, you can increase this parameter to enhance the brightness of the laser "
222 "lines.\nNote: Even at the same power level, the brightness of the laser emitted by each "
223 "device differs. Please adjust this parameter based on the actual condition of each "
224 "device.";
225
226 static constexpr Parameter::Type type = Parameter::Type::_Int;
227};
228
229} // namespace brightness_settings
230
231namespace roi {
232
234{
235public:
236 static constexpr const char* name = "ZDirectionRoi";
237
238 static constexpr const char* description =
239 "A Z-direction ROI retains only the middle part of the raw image and trims the top and "
240 "bottom parts off.\nSetting a Z-direction ROI can reduce the amount of data to be "
241 "processed and enhance the \"MaxScanRate\".\nThe options are the ratio of the height of "
242 "the trimmed image to the height of the untrimmed image.";
243
244 static constexpr Parameter::Type type = Parameter::Type::_Enum;
245
246 enum struct Value {
247 ImageHeight_1_1,
248 ImageHeight_1_2,
249 ImageHeight_1_4,
250 ImageHeight_1_8,
251 ImageHeight_1_16,
252 };
253};
254
255class ROI
256{
257public:
258 static constexpr const char* name = "ROI";
259
260 static constexpr const char* description =
261 "Setting an ROI in the XZ plane can reduce the amount of data to be processed, and enhance "
262 "the data transmission speed and max scan rate.";
263
264 static constexpr Parameter::Type type = Parameter::Type::_ProfileRoi;
265};
266} // namespace roi
267
268} // namespace eye
269
270} // namespace mmind
Type
Describes the device parameter data types.
Definition Parameter.h:30
@ _Int
Integer type.
Definition Parameter.h:31
@ _Enum
Enumeration type.
Definition Parameter.h:34
@ _ProfileRoi
Profile ROI type. See ProfileROI for details.
Definition Parameter.h:39
@ _Float
Double type.
Definition Parameter.h:32
@ Gain_5
LNX-8300, LNX-8080, LNX-75300, and LNX-7580 only.