cmvr-es/third_party/mech-eye-sdk/include/profiler/parameters/RawImageParameters.h

239 lines
8.7 KiB
C
Raw Permalink Normal View History

#pragma once
#include "Parameter.h"
namespace mmind {
namespace eye {
namespace brightness_settings {
class ExposureMode
{
public:
static constexpr const char* name = "ExposureMode";
static constexpr const char* description =
"Select the exposure mode for acquiring the raw image based on the texture and color of "
"the target object.\nTimed: suitable for target objects of a single texture or color. "
"\nHDR: suitable for target objects with various textures or colors.";
static constexpr Parameter::Type type = Parameter::Type::_Enum;
enum struct Value {
HDR,
Timed,
};
};
class ExposureTime
{
public:
static constexpr const char* name = "ExposureTime";
static constexpr const char* description =
"The function of this parameter depends on the the value of \"ExposureMode\".\n\nIf "
"\"ExposureMode\" is set to \"Timed\": Set the exposure time for acquiring the raw image "
"in this parameter. Exposure time affects the brightness and width of the laser lines in "
"the raw image, as well as the \"MaxScanRate\" of the laser profiler.\nLonger exposure "
"time results in brighter and wider laser lines and lower \"MaxScanRate\". Shorter "
"exposure time results in darker and narrower laser lines and higher "
"\"MaxScanRate\".\n\nIf \"ExposureMode\" is set to \"HDR\": Set the total time for three "
"exposures in this parameter. Then, adjust \"HdrExposureTimeProportion1\" and "
"\"HdrExposureTimeProportion2\" to change the lengths of each exposure.\n\nTo enhance the "
"\"MaxScanRate\", decrease this parameter and increase \"AnalogGain\".\nIf this parameter "
"has reached its maximum value, but the laser lines are still too dark, increase "
"\"AnalogGain\".\nIf this parameter has reached its minimum value, but the laser lines are "
"still too bright, decrease \"LaserPower\".";
static constexpr Parameter::Type type = Parameter::Type::_Int;
static constexpr const char* unit = "us";
};
class HdrExposureTimeProportion1
{
public:
static constexpr const char* name = "HdrExposureTimeProportion1";
static constexpr const char* description =
"Adjust the proportion of the first exposure time in the total exposure time of the HDR "
"exposure mode. The value of this parameter is usually greater than the value of "
"\"HdrExposureTimeProportion2\".";
static constexpr Parameter::Type type = Parameter::Type::_Float;
static constexpr const char* unit = "%";
};
class HdrExposureTimeProportion2
{
public:
static constexpr const char* name = "HdrExposureTimeProportion2";
static constexpr const char* description =
"Adjust the proportion of the second exposure time in the total exposure time of the HDR "
"exposure mode. The value of this parameter is usually smaller than the value of "
"\"HdrExposureTimeProportion1\" but greater than "
"(1-\"HdrExposureTimeProportion1\"-\"HdrExposureTimeProportion2\").";
static constexpr Parameter::Type type = Parameter::Type::_Float;
static constexpr const char* unit = "%";
};
class HdrFirstThreshold
{
public:
static constexpr const char* name = "HdrFirstThreshold";
static constexpr const char* description =
"Set the maximum reachable grayscale value of the first exposure time of the HDR exposure "
"mode. This is a percentage of the largest grayscale value 255.";
static constexpr Parameter::Type type = Parameter::Type::_Float;
static constexpr const char* unit = "%";
};
class HdrSecondThreshold
{
public:
static constexpr const char* name = "HdrSecondThreshold";
static constexpr const char* description =
"Set the maximum reachable grayscale value of the second exposure time of the HDR exposure "
"mode. This is a percentage of the largest grayscale value 255.";
static constexpr Parameter::Type type = Parameter::Type::_Float;
static constexpr const char* unit = "%";
};
class AnalogGain
{
public:
static constexpr const char* name = "AnalogGain";
static constexpr const char* description =
"Increasing this parameter can enhance the brightness of the raw image. However, noise "
"will also be introduced.\nIf the laser lines are dark, but a high \"MaxScanRate\" is "
"needed, you can increase this parameter and decrease \"ExposureTime\".\nIf "
"\"ExposureTime\" has reached its maximum value, but the laser lines are still too "
"dark, you can increase this parameter.\nIf this parameter has reached its maximum value, "
"but the laser lines are still too dark, increase \"DigitalGain\" or "
"\"LaserPower\".\nNote: A large value of this parameter weakens the effect of HDR.";
static constexpr Parameter::Type type = Parameter::Type::_Enum;
enum struct Value {
Gain_1,
Gain_2,
Gain_3,
Gain_4,
Gain_5, ///< LNX-8300, LNX-8080, LNX-75300, and LNX-7580 only.
};
};
class [[deprecated(
"Use class AnalogGain for LNX-8030 profilers with firmware version >= "
"V2.3.0.")]] AnalogGainFor8030;
class AnalogGainFor8030
{
public:
static constexpr const char* name = "AnalogGainFor8030";
static constexpr const char* description =
"Increasing this parameter can enhance the brightness of the raw image. However, noise "
"will also be introduced.\nIf the laser lines are dark, but a high \"MaxScanRate\" is "
"needed, you can increase this parameter and decrease \"ExposureTime\".\nIf "
"\"ExposureTime\" has reached its maximum value, but the laser lines are still too "
"dark, you can increase this parameter.\nIf this parameter has reached its maximum value, "
"but the laser lines are still too dark, increase \"DigitalGain\" or "
"\"LaserPower\".\nNote: A large value of this parameter weakens the effect of HDR.\n\n* "
"Note: this parameter is deprecated since V2.3.0. If your profiler has firmware version >= "
"V2.3.0, please use \"AnalogGain\" instead.";
static constexpr Parameter::Type type = Parameter::Type::_Enum;
enum struct Value {
Gain_1_0,
Gain_1_3,
Gain_2_0,
Gain_3_0,
};
};
class DigitalGain
{
public:
static constexpr const char* name = "DigitalGain";
static constexpr const char* description =
"Increasing this parameter can enhance the brightness of the raw image. However, a "
"relatively large amount of noise will also be introduced.\nIf \"AnalogGain\" has reached "
"its maximum value, but the laser lines are still too dark, you can increase \"Digital "
"Gain\". \n\nNote: \"Digital Gain\" affects the minimum value of \"Min Grayscale "
"Value\".";
static constexpr Parameter::Type type = Parameter::Type::_Int;
};
class LaserPower
{
public:
static constexpr const char* name = "LaserPower";
static constexpr const char* description =
"Set the power of the emitted laser, which affects the brightness of the laser lines in "
"the raw image.\nIf the object is reflective or light-colored, you can decrease this "
"parameter to reduce the brightness of the laser lines. If the object is unreflective or "
"dark-colored, you can increase this parameter to enhance the brightness of the laser "
"lines.\nNote: Even at the same power level, the brightness of the laser emitted by each "
"device differs. Please adjust this parameter based on the actual condition of each "
"device.";
static constexpr Parameter::Type type = Parameter::Type::_Int;
};
} // namespace brightness_settings
namespace roi {
class ZDirectionRoi
{
public:
static constexpr const char* name = "ZDirectionRoi";
static constexpr const char* description =
"A Z-direction ROI retains only the middle part of the raw image and trims the top and "
"bottom parts off.\nSetting a Z-direction ROI can reduce the amount of data to be "
"processed and enhance the \"MaxScanRate\".\nThe options are the ratio of the height of "
"the trimmed image to the height of the untrimmed image.";
static constexpr Parameter::Type type = Parameter::Type::_Enum;
enum struct Value {
ImageHeight_1_1,
ImageHeight_1_2,
ImageHeight_1_4,
ImageHeight_1_8,
ImageHeight_1_16,
};
};
class ROI
{
public:
static constexpr const char* name = "ROI";
static constexpr const char* description =
"Setting an ROI in the XZ plane can reduce the amount of data to be processed, and enhance "
"the data transmission speed and max scan rate.";
static constexpr Parameter::Type type = Parameter::Type::_ProfileRoi;
};
} // namespace roi
} // namespace eye
} // namespace mmind