42#ifndef vpTemplateTrackerMIBSpline_hh
43#define vpTemplateTrackerMIBSpline_hh
45#include <visp3/core/vpConfig.h>
47#include <visp3/core/vpImage.h>
48#include <visp3/core/vpMath.h>
49#include <visp3/tt/vpTemplateTrackerBSpline.h>
50#include <visp3/tt/vpTemplateTrackerHeader.h>
52#include <visp3/tt_mi/vpTemplateTrackerMI.h>
54#ifndef DOXYGEN_SHOULD_SKIP_THIS
67 class VISP_EXPORT vpTemplateTrackerMIBSpline
70 static void PutPVBsplineD(
double *Prt,
int cr,
double er,
int ct,
double et,
int Nc,
double val,
const int °re);
71 static void PutPVBsplineD3(
double *Prt,
int cr,
double er,
int ct,
double et,
int Nc,
double val);
72 static void PutPVBsplineD4(
double *Prt,
int cr,
double er,
int ct,
double et,
int Nc,
double val);
74 static void PutTotPVBspline(
double *Prt,
int cr,
double &er,
int ct,
double &et,
int Nc,
double *val,
75 unsigned int &NbParam,
int °ree);
76 static void PutTotPVBspline(
double *Prt,
double *dPrt,
double *d2Prt,
int cr,
double &er,
int ct,
double &et,
int Ncb,
77 double *val,
unsigned int &NbParam,
int °ree);
78 static void PutTotPVBspline3(
double *Prt,
int cr,
double &er,
int ct,
double &et,
int Nc,
double *val,
79 unsigned int &NbParam);
80 static void PutTotPVBspline3(
double *Prt,
double *dPrt,
double *d2Prt,
int cr,
double &er,
int ct,
double &et,
81 int Ncb,
double *val,
unsigned int &NbParam);
82 static void PutTotPVBspline4(
double *Prt,
int cr,
double er,
int ct,
double et,
int Nc,
double *val,
83 unsigned int &NbParam);
84 static void PutTotPVBspline4(
double *Prt,
double *dPrt,
double *d2Prt,
int cr,
double er,
int ct,
double et,
int Ncb,
85 double *val,
unsigned int &NbParam);
88 static void PutTotPVBspline3(
double *Prt,
double &er,
double *et,
unsigned int NbParam);
89 static void PutTotPVBspline4(
double *Prt,
double &er,
double *et,
unsigned int NbParam);
92 static void PutTotPVBsplineNoSecond(
double *Prt,
int &cr,
double &er,
int &ct,
double &et,
int &Nc,
double *val,
93 unsigned int &NbParam,
int °ree);
94 static void PutTotPVBsplineNoSecond(
double *Prt,
double *dPrt,
int &cr,
double &er,
int &ct,
double &et,
int &Ncb,
95 double *val,
unsigned int &NbParam,
int °ree);
96 static void PutTotPVBspline3NoSecond(
double *Prt,
int &cr,
double &er,
int &ct,
double &et,
int &Nc,
double *val,
97 unsigned int &NbParam);
98 static void PutTotPVBspline3NoSecond(
double *Prt,
double *dPrt,
int &cr,
double &er,
int &ct,
double &et,
int &Ncb,
99 double *val,
unsigned int &NbParam);
100 static void PutTotPVBspline4NoSecond(
double *Prt,
int &cr,
double &er,
int &ct,
double &et,
int &Nc,
double *val,
101 unsigned int &NbParam);
102 static void PutTotPVBspline4NoSecond(
double *Prt,
double *dPrt,
int &cr,
double &er,
int &ct,
double &et,
int &Ncb,
103 double *val,
unsigned int &NbParam);
105 static void PutTotPVBsplinePrtTout(
double *Prt,
int &cr,
double &er,
int &ct,
double &et,
int &Nc,
106 unsigned int &NbParam,
int °ree);
107 static void PutTotPVBspline3PrtTout(
double *Prt,
int &cr,
double &er,
int &ct,
double &et,
int &Nc,
108 unsigned int &NbParam);
109 static void PutTotPVBspline4PrtTout(
double *Prt,
int &cr,
double &er,
int &ct,
double &et,
int &Nc,
110 unsigned int &NbParam);
112 static void PutTotPVBsplinePrt(
double *Prt,
int &cr,
double &er,
int &ct,
double &et,
int &Ncb,
unsigned int &NbParam,
114 static void PutTotPVBspline3Prt(
double *Prt,
int &cr,
double &er,
int &ct,
double &et,
int &Ncb);
115 static void PutTotPVBspline4Prt(
double *Prt,
int &cr,
double &er,
int &ct,
double &et,
int &Ncb);
117 static double Bspline3(
double diff);
118 static double Bspline4i(
double diff,
int &interv);
120 static double dBspline3(
double diff);
121 static double dBspline4(
double diff);
123 static double d2Bspline3(
double diff);
124 static double d2Bspline4(
double diff);
126 static void computeProbabilities(
double *Prt,
int &cr,
double &er,
int &ct,
double &et,
int &Nc,
double *dW,
127 unsigned int &NbParam,
int &bspline,
vpHessienApproximationType