Visual Servoing Platform  version 3.3.0 under development (2020-02-17)
vpRobust Class Reference

#include <visp3/core/vpRobust.h>

Public Types

enum  vpRobustEstimatorType { TUKEY, CAUCHY, HUBER }
 

Public Member Functions

 vpRobust (unsigned int n_data)
 
 vpRobust ()
 
 vpRobust (const vpRobust &other)
 
virtual ~vpRobust ()
 
void MEstimator (const vpRobustEstimatorType method, const vpColVector &residues, vpColVector &weights)
 
void MEstimator (const vpRobustEstimatorType method, const vpColVector &residues, const vpColVector &all_residues, vpColVector &weights)
 
vpRobustoperator= (const vpRobust &other)
 
vpRobustoperator= (const vpRobust &&other)
 
void resize (unsigned int n_data)
 
void setIteration (unsigned int iter)
 
void setThreshold (double noise_threshold)
 
vpColVector simultMEstimator (vpColVector &residues)
 

Detailed Description

Contains an M-Estimator and various influence function.

Supported methods: M-estimation, Tukey, Cauchy and Huber

Examples:
testTukeyEstimator.cpp.

Definition at line 58 of file vpRobust.h.

Member Enumeration Documentation

◆ vpRobustEstimatorType

Enumeration of influence functions.

Enumerator
TUKEY 
CAUCHY 
HUBER 

Definition at line 63 of file vpRobust.h.

Constructor & Destructor Documentation

◆ vpRobust() [1/3]

vpRobust::vpRobust ( unsigned int  n_data)
explicit

Default Constructor.

Constructor.

Parameters
n_data: Size of the data vector.

Definition at line 65 of file vpRobust.cpp.

References vpColVector::resize(), and vpCDEBUG.

◆ vpRobust() [2/3]

vpRobust::vpRobust ( )

Default constructor.

Definition at line 79 of file vpRobust.cpp.

◆ vpRobust() [3/3]

vpRobust::vpRobust ( const vpRobust other)

Copy constructor.

Definition at line 87 of file vpRobust.cpp.

◆ ~vpRobust()

virtual vpRobust::~vpRobust ( )
inlinevirtual

Destructor.

Definition at line 91 of file vpRobust.h.

Member Function Documentation

◆ MEstimator() [1/2]

void vpRobust::MEstimator ( const vpRobustEstimatorType  method,
const vpColVector residues,
vpColVector weights 
)

Compute the weights according a residue vector and a PsiFunction.

Calculate an Mestimate given a particular loss function using MAD (Median Absolute Deviation) as a scale estimate at each iteration.

Precondition
Requires a column vector of residues.
Postcondition
Keeps a copy of the weights so that rejected points are kept at zero weight.
Parameters
method: Type of M-Estimator $\rho(r_i)$:
  • TUKEY : $ \rho(r_i, C) = \left\{ \begin{array}{ll} \frac{r_i^6}{6} - \frac{C^2r_i^4}{2} +\frac{C^4r_i^2}{2} & \mbox{if} |r_i| < C \\ \frac{1}{6} C^6 & \mbox{else} \end{array} \right. $ with influence function $ \psi(r_i, C) = \left\{ \begin{array}{ll} r_i(r_i^2-C^2)^2 & \mbox{if} |r_i| < C \\ 0 & \mbox{else} \end{array} \right. $ where $C=4.7 \hat{\sigma} $ and with $ \hat{\sigma} = 1.48{Med}_i(|r_i - {Med}_j(r_j)|) $
  • CAUCHY :
  • HUBER :
Parameters
residues: Residues $ r_i $ used in the previous formula.
weights: Vector of weights $w_i = \frac{\psi(r_i)}{r_i}$. Values are in [0, 1]. A value near zero means that the data is an outlier. This vector must have the same size residue vector.
Returns
Returns a Column Vector of weights associated to each residue.
Examples:
testTukeyEstimator.cpp.

Definition at line 176 of file vpRobust.cpp.

References CAUCHY, vpArray2D< Type >::getRows(), HUBER, resize(), TUKEY, and vpCDEBUG.

Referenced by vpPoseFeatures::computePose(), vpMbEdgeKltTracker::computeVVS(), vpMbEdgeTracker::computeVVSWeights(), vpMbTracker::computeVVSWeights(), vpMeLine::leastSquare(), vpPose::poseVirtualVSrobust(), vpMeEllipse::printParameters(), and vpHomography::robust().

◆ MEstimator() [2/2]

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 231 of file vpRobust.cpp.

References CAUCHY, vpArray2D< Type >::data, vpArray2D< Type >::getRows(), HUBER, resize(), vpColVector::resize(), TUKEY, and vpCDEBUG.

◆ operator=() [1/2]

vpRobust & vpRobust::operator= ( const vpRobust other)

Copy operator.

Definition at line 92 of file vpRobust.cpp.

◆ operator=() [2/2]

vpRobust & vpRobust::operator= ( const vpRobust &&  other)

Move operator.

Definition at line 109 of file vpRobust.cpp.

◆ resize()

void vpRobust::resize ( unsigned int  n_data)

Resize containers for sort methods.

Resize containers.

Parameters
n_data: size of input data vector.

Definition at line 128 of file vpRobust.cpp.

References vpColVector::resize().

Referenced by vpMbEdgeKltTracker::computeVVS(), vpMbDepthNormalTracker::computeVVSInit(), vpMbKltTracker::computeVVSInit(), vpMbEdgeTracker::computeVVSInit(), vpMbEdgeKltMultiTracker::initMbtTracking(), and MEstimator().

◆ setIteration()

void vpRobust::setIteration ( unsigned int  iter)
inline

◆ setThreshold()

void vpRobust::setThreshold ( double  noise_threshold)
inline

◆ simultMEstimator()

vpColVector vpRobust::simultMEstimator ( vpColVector residues)

Simult Mestimator.

Calculate an Mestimate with a simultaneous scale estimate using HUBER's influence function.

Precondition
Requires a column vector of residues
Postcondition
None
Returns
Returns a Column Vector of weights associated to each residue

Definition at line 341 of file vpRobust.cpp.

References CAUCHY, vpArray2D< Type >::getRows(), HUBER, vpMath::sqr(), TUKEY, and vpCDEBUG.