#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