g2o
Loading...
Searching...
No Matches
Public Member Functions | List of all members
g2o::RobustKernelFair Class Reference

Fair cost function. More...

#include <robust_kernel_impl.h>

Inheritance diagram for g2o::RobustKernelFair:
Inheritance graph
[legend]
Collaboration diagram for g2o::RobustKernelFair:
Collaboration graph
[legend]

Public Member Functions

virtual void robustify (double e2, Vector3 &rho) const
 
- Public Member Functions inherited from g2o::RobustKernel
 RobustKernel ()
 
 RobustKernel (double delta)
 
virtual ~RobustKernel ()
 
virtual void setDelta (double delta)
 
double delta () const
 

Additional Inherited Members

- Protected Attributes inherited from g2o::RobustKernel
double _delta
 

Detailed Description

Fair cost function.

See http://research.microsoft.com/en-us/um/people/zhang/Papers/ZhangIVC-97-01.pdf

2 * d^2 [e2 / d - log (1 + e2 / d)]

Definition at line 150 of file robust_kernel_impl.h.

Member Function Documentation

◆ robustify()

void g2o::RobustKernelFair::robustify ( double  squaredError,
Vector3 rho 
) const
virtual

compute the scaling factor for a error: The error is e^T Omega e The output rho is rho[0]: The actual scaled error value rho[1]: First derivative of the scaling function rho[2]: Second derivative of the scaling function

Implements g2o::RobustKernel.

Definition at line 111 of file robust_kernel_impl.cpp.

111 {
112 const double sqrte = sqrt(e2);
113 const double dsqr = _delta * _delta;
114 const double aux = sqrte / _delta;
115 rho[0] = 2. * dsqr * (aux - log1p(aux));
116 rho[1] = 1. / (1. + aux);
117
118 const double drec = 1. / _delta;
119 const double e_3_2 = 1. / (sqrte * e2);
120 const double aux2 = drec * sqrte + 1;
121
122 rho[2] = 2 * dsqr *
123 (1 / (4 * dsqr * aux2 * aux2 * e2) + (drec * e_3_2) / (4 * aux2) -
124 (drec * e_3_2) / 4);
125}
Jet< T, N > sqrt(const Jet< T, N > &f)
Definition jet.h:444

References g2o::RobustKernel::_delta.


The documentation for this class was generated from the following files: