Visual Servoing Platform
version 3.5.0 under development (2022-02-15)
|
#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) |
Deprecated functions | |
vp_deprecated | vpRobust (unsigned int n_data) |
void | MEstimator (const vpRobustEstimatorType method, const vpColVector &residues, const vpColVector &all_residues, vpColVector &weights) |
vp_deprecated void | setIteration (unsigned int iter) |
vp_deprecated void | setThreshold (double mad_min) |
vp_deprecated vpColVector | simultMEstimator (vpColVector &residues) |
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 88 of file vpRobust.h.
Enumeration of influence functions.
Enumerator | |
---|---|
TUKEY | Tukey influence function. |
CAUCHY | Cauchy influence function. |
HUBER | Huber influence function. |
Definition at line 92 of file vpRobust.h.
vpRobust::vpRobust | ( | ) |
Default constructor.
Definition at line 59 of file vpRobust.cpp.
vpRobust::vpRobust | ( | const vpRobust & | other | ) |
Copy constructor.
Definition at line 71 of file vpRobust.cpp.
|
inlinevirtual |
Destructor.
Definition at line 124 of file vpRobust.h.
|
explicit |
n_data | : Size of the data vector. |
Definition at line 312 of file vpRobust.cpp.
References vpColVector::resize(), and vpCDEBUG.
|
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 135 of file vpRobust.h.
|
inline |
Return the min value used to threshold residual vector Median Absolute Deviation (MAD). This value corresponds to the mimimal value of computed in MEstimator().
Definition at line 143 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 137 of file vpRobust.cpp.
References CAUCHY, vpArray2D< Type >::getRows(), HUBER, vpColVector::resize(), vpMath::sqr(), and TUKEY.
Referenced by vpPoseFeatures::computePose(), vpMbEdgeKltTracker::computeVVS(), vpMbEdgeTracker::computeVVSWeights(), vpMbTracker::computeVVSWeights(), vpMeLine::leastSquare(), vpMeEllipse::leastSquareRobust(), vpPose::poseVirtualVSrobust(), and vpHomography::robust().
void vpRobust::MEstimator | ( | const vpRobustEstimatorType | method, |
const vpColVector & | residues, | ||
const vpColVector & | all_residues, | ||
vpColVector & | weights | ||
) |
Compute the weights according a residue vector and a PsiFunction.
Definition at line 327 of file vpRobust.cpp.
References CAUCHY, vpArray2D< Type >::data, vpArray2D< Type >::getRows(), HUBER, vpColVector::resize(), TUKEY, and vpCDEBUG.
Copy operator.
Definition at line 76 of file vpRobust.cpp.
|
inline |
iter | : The first call iter should be set to 0. |
Definition at line 176 of file vpRobust.h.
|
inline |
Set minimal median absolute deviation (MAD) value corresponding to the mimimal 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 161 of file vpRobust.h.
Referenced by vpPoseFeatures::computePose(), vpMbEdgeKltTracker::computeVVS(), vpMbDepthNormalTracker::computeVVSInit(), vpMbKltTracker::computeVVSInit(), vpMbEdgeTracker::computeVVSInit(), vpMeLine::leastSquare(), vpMeEllipse::leastSquareRobust(), and vpPose::poseVirtualVSrobust().
|
inline |
mad_min | : Minimal Median Absolute Deviation value. Default value is set to 0.0017 in the default constructor. |
Definition at line 185 of file vpRobust.h.
vpColVector vpRobust::simultMEstimator | ( | vpColVector & | residues | ) |
[in] | residues | : Vector of residues. The content of the vector is changed. |
Definition at line 421 of file vpRobust.cpp.
References CAUCHY, vpArray2D< Type >::getRows(), HUBER, vpMath::sqr(), and TUKEY.