42 #include <visp/vpTemplateTrackerWarpHomography.h>
43 #include <visp/vpTrackingException.h>
75 dIdW[2]=-j*j*dx-i*j*dy;
78 dIdW[5]=-i*j*dx-i*i*dy;
105 denom=(1./(ParamM[2]*vX[0]+ParamM[5]*vX[1]+1.));
110 j2=((1.+ParamM[0])*j+ParamM[3]*i+ParamM[6])*
denom;
111 i2=(ParamM[1]*j+(1.+ParamM[4])*i+ParamM[7])*
denom;
120 vXres[0]=((1+ParamM[0])*vX[0]+ParamM[3]*vX[1]+ParamM[6])*
denom;
121 vXres[1]=(ParamM[1]*vX[0]+(1+ParamM[4])*vX[1]+ParamM[7])*
denom;
133 dW_[0][2]=-j*X2[0]*
denom;
135 dW_[0][5]=-i*X2[0]*
denom;
139 dW_[1][2]=-j*X2[1]*
denom;
141 dW_[1][5]=-i*X2[1]*
denom;
152 dwdx0=((1.+ParamM[0])-X2[0]*ParamM[2])*
denom;
153 dwdx1=(ParamM[1]-X2[1]*ParamM[2])*
denom;
154 dwdy0=(ParamM[3]-X2[0]*ParamM[5])*
denom;
155 dwdy1=((1.+ParamM[4])-X2[1]*ParamM[5])*
denom;
156 for(
unsigned int i=0;i<
nbParam;i++)
158 dW_[0][i]=dwdx0*dwdp0[i]+dwdy0*dwdp0[i+
nbParam];
159 dW_[1][i]=dwdx1*dwdp0[i]+dwdy1*dwdp0[i+
nbParam];
166 if((ParamM[2]*vX[0]+ParamM[5]*vX[1]+1)<0)
168 vXres[0]=((1+ParamM[0])*vX[0]+ParamM[3]*vX[1]+ParamM[6])/(ParamM[2]*vX[0]+ParamM[5]*vX[1]+1);
169 vXres[1]=(ParamM[1]*vX[0]+(1+ParamM[4])*vX[1]+ParamM[7])/(ParamM[2]*vX[0]+ParamM[5]*vX[1]+1);
185 for(
unsigned int i=0;i<3;i++)
186 for(
unsigned int j=0;j<3;j++)
190 H[i][j]=ParamM[i+3*j];
202 for(
unsigned int i=0;i<3;i++)
203 for(
unsigned int j=0;j<3;j++)
207 par[i+3*j]=H[i][j]/H[2][2];
208 if(i==j)par[i+3*j]--;
void getdW0(const int &i, const int &j, const double &dy, const double &dx, double *dIdW)
Definition of the vpMatrix class.
void resize(const unsigned int nrows, const unsigned int ncols, const bool nullify=true)
void getParamPyramidDown(const vpColVector &p, vpColVector &pdown)
void dWarpCompo(const vpColVector &X1, const vpColVector &X2, const vpColVector &ParamM, const double *dwdp0, vpMatrix &dW)
This class aims to compute the homography wrt.two images.
Error that can be emited by the vpTracker class and its derivates.
void getParamInverse(const vpColVector &ParamM, vpColVector &ParamMinv) const
void computeDenom(vpColVector &vX, const vpColVector &ParamM)
void dWarp(const vpColVector &X1, const vpColVector &X2, const vpColVector &ParamM, vpMatrix &dW)
void getdWdp0(const int &i, const int &j, double *dIdW)
void pRondp(const vpColVector &p1, const vpColVector &p2, vpColVector &pres) const
Class that provides a data structure for the column vectors as well as a set of operations on these v...
vpTemplateTrackerWarpHomography()
vpHomography inverse() const
invert the homography
void warpX(const vpColVector &vX, vpColVector &vXres, const vpColVector &ParamM)
void getParam(const vpHomography &H, vpColVector &par) const
void getParamPyramidUp(const vpColVector &p, vpColVector &pup)
void warpXInv(const vpColVector &vX, vpColVector &vXres, const vpColVector &ParamM)
vpHomography getHomography(const vpColVector &ParamM) const