#include <rrel_objective.h>
It returns a "cost" given the residuals, and thus gives a cost for the estimate.
Robust objective functions will use the residuals to determine which points are inliers and which are outliers, and will downgrade the influence of the of those samples.
Definition at line 19 of file rrel_objective.h.
Public Types | |
typedef vcl_vector< double > ::const_iterator | vect_const_iter |
The iterators used to pass in values. | |
typedef vcl_vector< double > ::iterator | vect_iter |
The iterators used to pass out values. | |
Public Member Functions | |
rrel_objective () | |
virtual | ~rrel_objective () |
virtual double | fcn (vect_const_iter res_begin, vect_const_iter res_end, vect_const_iter scale_begin, vnl_vector< double > *param_vector) const =0 |
Evaluate the objective function on heteroscedastic residuals. | |
virtual double | fcn (vect_const_iter begin, vect_const_iter end, double scale, vnl_vector< double > *param_vector) const =0 |
Evaluate the objective function on homoscedastic residuals. | |
virtual bool | requires_prior_scale () const =0 |
True if the objective function must have a prior scale. | |
virtual bool | can_estimate_scale () const |
True if the objective function can estimate scale. | |
virtual double | scale (vect_const_iter, vect_const_iter) const |
Scale estimate. |
typedef vcl_vector<double>::const_iterator rrel_objective::vect_const_iter |
The iterators used to pass in values.
Since we don't allow member templates, we have to fix on a particular type of container for residuals. Using this typedef will allow things to easily change when member templates are allowed.
Definition at line 27 of file rrel_objective.h.
typedef vcl_vector<double>::iterator rrel_objective::vect_iter |
rrel_objective::rrel_objective | ( | ) | [inline] |
Definition at line 33 of file rrel_objective.h.
virtual rrel_objective::~rrel_objective | ( | ) | [inline, virtual] |
Definition at line 34 of file rrel_objective.h.
virtual double rrel_objective::fcn | ( | vect_const_iter | res_begin, | |
vect_const_iter | res_end, | |||
vect_const_iter | scale_begin, | |||
vnl_vector< double > * | param_vector | |||
) | const [pure virtual] |
Evaluate the objective function on heteroscedastic residuals.
This version is used for heteroscedastic data, where each residual has its own scale. Some objective functions, such as M-estimators, will require a scale value. Others, such as Least Median of Squares (LMS) with intercept adjustment, will require access to the parameter vector.
The number of scale values must, of course, equal the number of residuals.
virtual double rrel_objective::fcn | ( | vect_const_iter | begin, | |
vect_const_iter | end, | |||
double | scale, | |||
vnl_vector< double > * | param_vector | |||
) | const [pure virtual] |
Evaluate the objective function on homoscedastic residuals.
This version is used for homoscedastic data, where each residual is distributed with a common scale. Some objective functions, such as M-estimators, will require a scale value. Others, such as Least Median of Squares (LMS) with intercept adjustment, will require access to the parameter vector.
Using the previous function for homoscedastic data would imply the creation of a vector of equal values. Since the majority of problems assume homoscedastic data, a "convenience" function that avoids the scale vector is useful.
virtual bool rrel_objective::requires_prior_scale | ( | ) | const [pure virtual] |
True if the objective function must have a prior scale.
For some objective functions, such as RANSAC, an estimated scale is not enough. The problem must have a prior scale estimate.
Implemented in rrel_kernel_density_obj, rrel_lms_obj, rrel_lts_obj, rrel_m_est_obj, rrel_mlesac_obj, rrel_muset_obj, and rrel_ransac_obj.
virtual bool rrel_objective::can_estimate_scale | ( | ) | const [inline, virtual] |
True if the objective function can estimate scale.
Some objective functions, such as MUSE, can provide an accurate inlier scale estimate.
Reimplemented in rrel_lms_obj, and rrel_muset_obj.
Definition at line 72 of file rrel_objective.h.
virtual double rrel_objective::scale | ( | vect_const_iter | , | |
vect_const_iter | ||||
) | const [inline, virtual] |
Scale estimate.
The result is undefined if can_estimate_scale() is false.
Definition at line 76 of file rrel_objective.h.