239 lines
8.2 KiB
C
239 lines
8.2 KiB
C
|
|
#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
|