Visual Servoing Platform
version 3.6.1 under development (2024-12-17)
|
#include <visp3/core/vpRobust.h>
Public Types | |
enum | vpRobustEstimatorType { TUKEY , CAUCHY , HUBER } |
Public Member Functions | |
vpRobust () | |
vpRobust (const vpRobust &other) | |
virtual | ~vpRobust () |
double | getMedianAbsoluteDeviation () |
double | getMinMedianAbsoluteDeviation () |
void | MEstimator (const vpRobustEstimatorType method, const vpColVector &residues, vpColVector &weights) |
vpRobust & | operator= (const vpRobust &other) |
vpRobust & | operator= (const vpRobust &&other) |
void | setMinMedianAbsoluteDeviation (double mad_min) |
Contains an M-estimator and various influence function.
This class implements an M-estimator with Tukey, Cauchy or Huber influence function [9] which allow uncertain measures to be less likely considered and in some cases completely rejected, thus inferring that the data is not normally distributed.
When using a robust estimate of the mean, it is usual to normalize the distribution to center the data around zero. In the case of a median operator, the normalized residue is given by:
where is the median value of the residue vector .
The Median Absolute Deviation (MAD) representing one standard deviation of the normal distribution is given by:
This class allows to set the minimum value of using setMinMedianAbsoluteDeviation().
This estimated standard deviation can accordingly be used with a tuning variable for different influence functions.
Let us consider the weight function with the residual vector of the parameters to estimate.
Given the influence function and the residual vector, the weights are updated in MEstimator().
Definition at line 83 of file vpRobust.h.
Enumeration of influence functions.
Enumerator | |
---|---|
TUKEY | Tukey influence function. |
CAUCHY | Cauchy influence function. |
HUBER | Huber influence function. |
Definition at line 87 of file vpRobust.h.
BEGIN_VISP_NAMESPACE vpRobust::vpRobust | ( | ) |
Default constructor.
Definition at line 53 of file vpRobust.cpp.
vpRobust::vpRobust | ( | const vpRobust & | other | ) |
Copy constructor.
Definition at line 64 of file vpRobust.cpp.
|
inlinevirtual |
Destructor.
Definition at line 99 of file vpRobust.h.
|
inline |
Return residual vector Median Absolute Deviation (MAD). This value is updated after a call to MEstimator(). It corresponds to value of . This value cannot be lower than the min value returned by getMinMedianAbsoluteDeviation() or set with setMinMedianAbsoluteDeviation().
Definition at line 110 of file vpRobust.h.
|
inline |
Return the min value used to threshold residual vector Median Absolute Deviation (MAD). This value corresponds to the minimal value of computed in MEstimator().
Definition at line 118 of file vpRobust.h.
void vpRobust::MEstimator | ( | const vpRobustEstimatorType | method, |
const vpColVector & | residues, | ||
vpColVector & | weights | ||
) |
Calculate an M-estimate given a particular influence function using MAD (Median Absolute Deviation) as a scale estimate at each iteration.
[in] | method | : Type of influence function. |
[in] | residues | : Vector of residues of the parameters to estimate. |
[out] | weights | : Vector of weights . Values are in [0, 1]. A value near zero means that the data is an outlier. |
Definition at line 130 of file vpRobust.cpp.
References CAUCHY, vpArray2D< Type >::getRows(), HUBER, vpColVector::resize(), and TUKEY.
Referenced by vpMbEdgeTracker::computeVVSWeights(), vpMbTracker::computeVVSWeights(), vpMeLine::leastSquare(), vpMeEllipse::leastSquareRobustCircle(), vpMeEllipse::leastSquareRobustEllipse(), vpPose::poseVirtualVSrobust(), and vpHomography::robust().
Move operator.
Definition at line 88 of file vpRobust.cpp.
Copy operator.
Definition at line 69 of file vpRobust.cpp.
|
inline |
Set minimal median absolute deviation (MAD) value corresponding to the minimal value of computed in MEstimator() with .
mad_min | : Minimal Median Absolute Deviation value. Default value is set to 0.0017 in the default constructor. |
Definition at line 136 of file vpRobust.h.
Referenced by vpMbDepthNormalTracker::computeVVSInit(), vpMbEdgeTracker::computeVVSInit(), vpMeLine::leastSquare(), vpMeEllipse::leastSquareRobustCircle(), vpMeEllipse::leastSquareRobustEllipse(), and vpPose::poseVirtualVSrobust().