40 #include <visp3/core/vpImageFilter.h> 41 #include <visp3/tt/vpTemplateTrackerSSDForwardCompositional.h> 52 for (
unsigned int point = 0; point <
templateSize; point++) {
69 std::cout <<
"Compositionnal tracking no initialised\nUse " 70 "InitCompo(vpImage<unsigned char> &I) function" 81 double IW, dIWx, dIWy;
83 unsigned int iteration = 0;
88 unsigned int Nbpoint = 0;
92 Warp->computeCoeff(
p);
93 for (
unsigned int point = 0; point <
templateSize; point++) {
104 if ((i2 >= 0) && (j2 >= 0) && (i2 < I.
getHeight() - 1) && (j2 < I.
getWidth() - 1)) {
121 double *tempt =
new double[
nbParam];
122 for (
unsigned int it = 0; it <
nbParam; it++)
123 tempt[it] = dW[0][it] * dIWx + dW[1][it] * dIWy;
125 for (
unsigned int it = 0; it <
nbParam; it++)
126 for (
unsigned int jt = 0; jt <
nbParam; jt++)
127 H[it][jt] += tempt[it] * tempt[jt];
129 double er = (Tij - IW);
130 for (
unsigned int it = 0; it <
nbParam; it++)
131 G[it] += er * tempt[it];
virtual void dWarpCompo(const vpColVector &X1, const vpColVector &X2, const vpColVector &ParamM, const double *dwdp0, vpMatrix &dW)=0
unsigned int getWidth() const
vpTemplateTrackerPoint * ptTemplate
virtual void warpX(const int &i, const int &j, double &i2, double &j2, const vpColVector &ParamM)=0
void computeOptimalBrentGain(const vpImage< unsigned char > &I, vpColVector &tp, double tMI, vpColVector &direction, double &alpha)
error that can be emited by ViSP classes.
static void getGradYGauss2D(const vpImage< unsigned char > &I, vpImage< double > &dIy, const double *gaussianKernel, const double *gaussianDerivativeKernel, unsigned int size)
static void getGradXGauss2D(const vpImage< unsigned char > &I, vpImage< double > &dIx, const double *gaussianKernel, const double *gaussianDerivativeKernel, unsigned int size)
unsigned int templateSize
unsigned int iterationMax
virtual void pRondp(const vpColVector &p1, const vpColVector &p2, vpColVector &pres) const =0
Type getValue(unsigned int i, unsigned int j) const
Error that can be emited by the vpTracker class and its derivates.
vpMatrix inverseByLU() const
unsigned int getHeight() const
static void filter(const vpImage< double > &I, vpImage< double > &Iu, vpImage< double > &Iv, const vpMatrix &M, const bool convolve=false)
virtual void getdWdp0(const int &i, const int &j, double *dIdW)=0
vpTemplateTrackerWarp * Warp
static void computeHLM(const vpMatrix &H, const double &alpha, vpMatrix &HLM)