31#include <visp3/rbt/vpRBFeatureTracker.h>
33#if defined(VISP_HAVE_SIMDLIB)
34#include <Simd/SimdLib.h>
42 m_weighting = std::make_shared<vpFixedTemporalWeighting>(1.0);
58 if (interaction.
getRows() != error.getRows() || interaction.
getCols() != 6) {
63#if defined(VISP_HAVE_SIMDLIB)
64 SimdComputeJtR(interaction.
data, interaction.
getRows(), error.data, JTR.
data);
66 const unsigned int N = interaction.
getRows();
68 for (
unsigned int i = 0; i < 6; ++i) {
70 for (
unsigned int j = 0; j < N; ++j) {
71 ssum += interaction[j][i] * error[j];
81 double sigma2 = (covDiagE.
t() * covDiag * e) / (
static_cast<double>(e.getRows()));
82 return (DJ.
t() * covDiag * DJ).pseudoInverse() * sigma2;
unsigned int getCols() const
Type * data
Address of the first element of the data array.
unsigned int getRows() const
Implementation of column vector and the associated operations.
void resize(unsigned int i, bool flagNullify=true)
error that can be emitted by the vpMatrix class and its derivatives
@ incorrectMatrixSizeError
Incorrect matrix size.
Implementation of a matrix and operations on matrices.
void diag(const double &val=1.0)
std::shared_ptr< vpTemporalWeighting > m_weighting
Number of considered features.
bool m_jacobianInObjectSpace
Matrix representation of the estimated DOFS.
bool m_enableDisplay
Whether VVS has converged, should be updated every VVS iteration.
static vpMatrix computeCovarianceMatrix(const vpMatrix &A, const vpColVector &b, const vpMatrix &W)
vpColVector m_covWeightDiag
Covariance matrix.
void setEstimatedDofs(const std::array< bool, 6 > &dofs)
static void computeJTR(const vpMatrix &interaction, const vpColVector &error, vpColVector &JTR)
bool m_vvsConverged
User-defined weight for this specific type of feature.
virtual void updateCovariance(const double lambda)
Update the covariance matrix.
unsigned m_numFeatures
Error weights.
vpMatrix m_cov
Right side of the Gauss Newton minimization.