Visual Servoing Platform
version 3.3.0
vpTemplateTrackerWarp.h
1
/****************************************************************************
2
*
3
* ViSP, open source Visual Servoing Platform software.
4
* Copyright (C) 2005 - 2019 by Inria. All rights reserved.
5
*
6
* This software is free software; you can redistribute it and/or modify
7
* it under the terms of the GNU General Public License as published by
8
* the Free Software Foundation; either version 2 of the License, or
9
* (at your option) any later version.
10
* See the file LICENSE.txt at the root directory of this source
11
* distribution for additional information about the GNU GPL.
12
*
13
* For using ViSP with software that can not be combined with the GNU
14
* GPL, please contact Inria about acquiring a ViSP Professional
15
* Edition License.
16
*
17
* See http://visp.inria.fr for more information.
18
*
19
* This software was developed at:
20
* Inria Rennes - Bretagne Atlantique
21
* Campus Universitaire de Beaulieu
22
* 35042 Rennes Cedex
23
* France
24
*
25
* If you have questions regarding the use of this file, please contact
26
* Inria at visp@inria.fr
27
*
28
* This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
29
* WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
30
*
31
* Description:
32
* Template tracker.
33
*
34
* Authors:
35
* Amaury Dame
36
* Aurelien Yol
37
* Fabien Spindler
38
*
39
*****************************************************************************/
45
#ifndef vpTemplateTrackerWarp_hh
46
#define vpTemplateTrackerWarp_hh
47
48
#include <visp3/core/vpDisplay.h>
49
#include <visp3/core/vpTrackingException.h>
50
#include <visp3/tt/vpTemplateTrackerHeader.h>
51
#include <visp3/tt/vpTemplateTrackerTriangle.h>
52
#include <visp3/tt/vpTemplateTrackerZone.h>
53
58
class
VISP_EXPORT
vpTemplateTrackerWarp
59
{
60
protected
:
61
double
denom;
62
vpMatrix
dW;
63
unsigned
int
nbParam;
64
65
public
:
66
// constructor;
67
vpTemplateTrackerWarp
() : denom(1.), dW(), nbParam(0) {}
68
virtual
~
vpTemplateTrackerWarp
() {}
69
70
#ifndef DOXYGEN_SHOULD_SKIP_THIS
71
virtual
void
computeCoeff(
const
vpColVector
&p) = 0;
72
virtual
void
computeDenom(
vpColVector
&vX,
const
vpColVector
&ParamM) = 0;
73
#endif
74
84
virtual
void
dWarp(
const
vpColVector
&X1,
const
vpColVector
&X2,
const
vpColVector
&ParamM,
vpMatrix
&dW) = 0;
85
97
virtual
void
dWarpCompo(
const
vpColVector
&X1,
const
vpColVector
&X2,
const
vpColVector
&ParamM,
const
double
*dwdp0,
98
vpMatrix
&dW) = 0;
99
100
#ifndef DOXYGEN_SHOULD_SKIP_THIS
101
void
findWarp(
const
double
*ut0,
const
double
*vt0,
const
double
*u,
const
double
*v,
int
nb_pt,
vpColVector
&p);
102
#endif
103
115
virtual
void
getdW0(
const
int
&i,
const
int
&j,
const
double
&dy,
const
double
&dx,
double
*dIdW) = 0;
116
126
virtual
void
getdWdp0(
const
int
&i,
const
int
&j,
double
*dIdW) = 0;
127
134
double
getDistanceBetweenZoneAndWarpedZone(
const
vpTemplateTrackerZone
&Z,
const
vpColVector
&p);
135
141
unsigned
int
getNbParam()
const
{
return
nbParam; }
142
149
virtual
void
getParamInverse(
const
vpColVector
&ParamM,
vpColVector
&ParamMinv)
const
= 0;
150
157
virtual
void
getParamPyramidDown(
const
vpColVector
&p,
vpColVector
&pdown) = 0;
158
165
virtual
void
getParamPyramidUp(
const
vpColVector
&p,
vpColVector
&pup) = 0;
166
172
virtual
bool
isESMcompatible()
const
= 0;
173
182
virtual
void
pRondp(
const
vpColVector
&p1,
const
vpColVector
&p2,
vpColVector
&pres)
const
= 0;
183
189
void
setNbParam(
unsigned
int
nb)
190
{
191
nbParam = nb;
192
dW.
resize
(2, nbParam);
193
}
194
205
void
warp(
const
double
*ut0,
const
double
*vt0,
int
nb_pt,
const
vpColVector
&p,
double
*u,
double
*v);
206
216
virtual
void
warpX(
const
int
&i,
const
int
&j,
double
&i2,
double
&j2,
const
vpColVector
&ParamM) = 0;
217
225
virtual
void
warpX(
const
vpColVector
&vX,
vpColVector
&vXres,
const
vpColVector
&ParamM) = 0;
226
234
virtual
void
warpXInv(
const
vpColVector
&vX,
vpColVector
&vXres,
const
vpColVector
&ParamM) = 0;
235
244
void
warpTriangle(
const
vpTemplateTrackerTriangle
&in,
const
vpColVector
&p,
vpTemplateTrackerTriangle
&out);
245
254
void
warpZone(
const
vpTemplateTrackerZone
&in,
const
vpColVector
&p,
vpTemplateTrackerZone
&out);
255
};
256
257
#endif
vpTemplateTrackerZone
Definition:
vpTemplateTrackerZone.h:61
vpTemplateTrackerWarp
Definition:
vpTemplateTrackerWarp.h:57
vpColVector
Implementation of column vector and the associated operations.
Definition:
vpColVector.h:129
vpMatrix
Implementation of a matrix and operations on matrices.
Definition:
vpMatrix.h:163
vpArray2D::resize
void resize(unsigned int nrows, unsigned int ncols, bool flagNullify=true, bool recopy_=true)
Definition:
vpArray2D.h:304
vpTemplateTrackerTriangle
Definition:
vpTemplateTrackerTriangle.h:60
modules
tracker
tt
include
visp3
tt
vpTemplateTrackerWarp.h
Generated by
1.8.16