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

239 lines
8.2 KiB
C
Raw Normal View History

#pragma once
#include "Parameter.h"
namespace mmind {
namespace eye {
namespace profile_processing {
class Filter
{
public:
static constexpr const char* name = "Filter";
static constexpr const char* description =
"Set the type of filters. Filtering the profile can reduce noise and smooth the profile.\n"
"None: does not perform filtering. Select this option when the profile does not contain "
"noticeable noise.\nMean (edge preserving): performs mean filtering with edge "
"preservation. Features with abrupt depth variations (such as object edges) are well "
"preserved, but the smoothing effect around object edges is slightly worse. Suitable for "
"objects that have features with abrupt depth variations. When selecting this option, set "
"\"MeanFilterWindowSize\".\nMedian: performs median filtering, suitable for reducing noise "
"with depth values significantly different from surrounding points. When selecting this "
"option, set \"MedianFilterWindowSize\".";
static constexpr Parameter::Type type = Parameter::Type::_Enum;
enum struct Value {
None,
Mean,
Median,
};
};
class MeanFilterWindowSize
{
public:
static constexpr const char* name = "MeanFilterWindowSize";
static constexpr const char* description =
"Set the window size of the mean filter.\nLarger window size results in higher intensity "
"of smoothing but may also distort object features.\n\nNote:\n* \"MeanFilterWindowSize\" "
"is unavailable when \"Filter\" is not set to \"Mean\".";
static constexpr Parameter::Type type = Parameter::Type::_Enum;
enum struct Value {
WindowSize_2,
WindowSize_4,
WindowSize_8,
WindowSize_16,
WindowSize_32,
};
};
class MedianFilterWindowSize
{
public:
static constexpr const char* name = "MedianFilterWindowSize";
static constexpr const char* description =
"Set the window size of the median filter.\nLarger window size removes more "
"noise.\n\nNote:\n* \"MedianFilterWindowSize\" is unavailable when \"Filter\" is not set "
"to \"Median\".";
static constexpr Parameter::Type type = Parameter::Type::_Enum;
enum struct Value {
WindowSize_3,
WindowSize_5,
WindowSize_7,
WindowSize_9,
};
};
class GapFilling
{
public:
static constexpr const char* name = "GapFilling";
static constexpr const char* description =
"Set the size of the gaps that can be filled in the profile.\nWhen the number of "
"consecutive data points in a gap in the profile is no greater than this value, this gap "
"will be filled. The data used for filling is calculated based on the difference between "
"the two neighboring points (that is, based on linear interpolation).";
static constexpr Parameter::Type type = Parameter::Type::_Int;
};
class GapFillingEdgePreservation
{
public:
static constexpr const char* name = "GapFillingEdgePreservation";
static constexpr const char* description =
"Set the degree of preservation of object edges when filling gaps.\n\nIf you need to "
"preserve features with abrupt depth variations, such as object edges, you can increase "
"this parameter, but the amount of gaps being filled will decrease.";
static constexpr Parameter::Type type = Parameter::Type::_Int;
};
class Resampling
{
public:
static constexpr const char* name = "Resampling";
static constexpr const char* description =
"Select the point to be retained during resampling. \nMultiple points with different Z "
"values may exist at the same location on the X-axis. This parameter is used to select the "
"point to be retained in such a situation.\n\nNearest: retains the point closest to the "
"laser profiler.\nFarthest: retains the point farthest from the laser profiler.\nIf the "
"needed feature is at the bottom of the target object (such as the inner bottom of a "
"cylindrical container), you can select \"Farthest\"";
static constexpr Parameter::Type type = Parameter::Type::_Enum;
enum struct Value {
Nearest,
Farthest,
};
};
class ResamplingEdgePreservation
{
public:
static constexpr const char* name = "ResamplingEdgePreservation";
static constexpr const char* description =
"Set the degree of preservation of object edges during resampling. \nIf you need to "
"preserve features with abrupt depth variations, such as object edges, you can increase "
"this parameter.";
static constexpr Parameter::Type type = Parameter::Type::_Int;
};
class EnableOutlierRemoval
{
public:
static constexpr const char* name = "EnableOutlierRemoval";
static constexpr const char* description =
"Enable this parameter to adjust and apply the outlier removal setting. Acquire data again "
"to see the effect.";
static constexpr Parameter::Type type = Parameter::Type::_Bool;
};
class OutlierRemovalIntensity
{
public:
static constexpr const char* name = "OutlierRemovalIntensity";
static constexpr const char* description =
"Sets the intensity of outlier removal.\nHigher intensity removes more outliers but may "
"also remove some object features.";
static constexpr Parameter::Type type = Parameter::Type::_Enum;
enum struct Value { VeryLow, Low, Medium, High, VeryHigh };
};
} // namespace profile_processing
namespace profile_alignment {
class EnableZAxisAlignment
{
public:
static constexpr const char* name = "EnableZAxisAlignment";
static constexpr const char* description =
"Set this parameter to apply the Z-axis profile alignment settings. Acquire data again "
"to see the effect. \nNOTE: The profile alignment function can only be applied after all "
"profiles have been retrieved. Therefore, the profile data must be retrieved with a "
"callback function instead of polling.";
static constexpr Parameter::Type type = Parameter::Type::_Bool;
};
class EnableXAxisAlignment
{
public:
static constexpr const char* name = "EnableXAxisAlignment";
static constexpr const char* description =
"Set this parameter to apply the X-axis profile alignment settings. Acquire data again "
"to see the effect. \nNOTE: The profile alignment function can only be applied after all "
"profiles have been retrieved. Therefore, the profile data must be retrieved with a "
"callback function instead of polling.";
static constexpr Parameter::Type type = Parameter::Type::_Bool;
};
} // namespace profile_alignment
namespace filters {
class EnableBlindSpotFiltering
{
public:
static constexpr const char* name = "EnableBlindSpotFiltering";
static constexpr const char* description =
"Check this parameter to apply the blind spot filtering settings. Acquire data again to "
"see the effect. \nNOTE: The blind spot filtering function can only be applied after all "
"profiles have been retrieved. Therefore, the profile data must be retrieved with a "
"callback function instead of polling.";
static constexpr Parameter::Type type = Parameter::Type::_Bool;
};
class EnableNoiseRemoval
{
public:
static constexpr const char* name = "EnableNoiseRemoval";
static constexpr const char* description =
"Check this parameter to adjust and apply the noise removal setting. Acquire data again to "
"see the effect. \nNOTE: The noise removal function can only be applied after all "
"profiles have been retrieved. Therefore, the profile data must be retrieved with a "
"callback function instead of polling.";
static constexpr Parameter::Type type = Parameter::Type::_Bool;
};
class NoiseRemovalIntensity
{
public:
static constexpr const char* name = "NoiseRemovalIntensity";
static constexpr const char* description =
"Sets the intensity of noise removal.\n\nHigher intensity removes more noise but may also "
"remove some object features.";
static constexpr Parameter::Type type = Parameter::Type::_Enum;
enum struct Value { Low, Medium, High };
};
} // namespace filters
} // namespace eye
} // namespace mmind