Visual Servoing Platform
version 3.7.0
Toggle main menu visibility
Loading...
Searching...
No Matches
vpTemplateTrackerMI.h
1
/*
2
* ViSP, open source Visual Servoing Platform software.
3
* Copyright (C) 2005 - 2025 by Inria. All rights reserved.
4
*
5
* This software is free software; you can redistribute it and/or modify
6
* it under the terms of the GNU General Public License as published by
7
* the Free Software Foundation; either version 2 of the License, or
8
* (at your option) any later version.
9
* See the file LICENSE.txt at the root directory of this source
10
* distribution for additional information about the GNU GPL.
11
*
12
* For using ViSP with software that can not be combined with the GNU
13
* GPL, please contact Inria about acquiring a ViSP Professional
14
* Edition License.
15
*
16
* See https://visp.inria.fr for more information.
17
*
18
* This software was developed at:
19
* Inria Rennes - Bretagne Atlantique
20
* Campus Universitaire de Beaulieu
21
* 35042 Rennes Cedex
22
* France
23
*
24
* If you have questions regarding the use of this file, please contact
25
* Inria at visp@inria.fr
26
*
27
* This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
28
* WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
29
*
30
* Description:
31
* Example of template tracking.
32
*/
33
#ifndef vpTemplateTrackerMI_hh
34
#define vpTemplateTrackerMI_hh
35
36
#include <visp3/core/vpConfig.h>
37
38
#include <visp3/core/vpImageFilter.h>
39
#include <visp3/tt/vpTemplateTracker.h>
40
#include <visp3/tt/vpTemplateTrackerHeader.h>
41
42
BEGIN_VISP_NAMESPACE
54
class
VISP_EXPORT
vpTemplateTrackerMI
:
public
vpTemplateTracker
55
{
56
public
:
58
typedef
enum
59
{
60
HESSIAN_NONSECOND
= -1,
61
HESSIAN_0
,
62
HESSIAN_d2I
,
63
HESSIAN_YOUCEF
,
64
HESSIAN_EXACT
,
65
HESSIAN_NEW
66
} vpHessienApproximationType;
67
69
typedef
enum
{
USE_HESSIEN_NORMAL
,
USE_HESSIEN_DESIRE
,
USE_HESSIEN_BEST_COND
} vpHessienType;
70
72
typedef
enum
{
BSPLINE_THIRD_ORDER
= 3,
BSPLINE_FOURTH_ORDER
= 4 } vpBsplineType;
73
74
protected
:
75
vpHessienType
hessianComputation
;
76
vpHessienApproximationType
ApproxHessian
;
77
double
lambda
;
78
79
double
*
temp
;
80
double
*
Prt
;
81
double
*
dPrt
;
82
double
*
Pt
;
83
double
*
Pr
;
84
double
*
d2Prt
;
85
double
*
PrtTout
;
86
double
*
dprtemp
;
87
88
double
*
PrtD
;
89
double
*
dPrtD
;
90
int
influBspline
;
91
92
int
bspline
;
93
// Nombre de couleur concidere dans l'histogramme
94
int
Nc
;
95
int
Ncb
;
96
97
vpImage<double>
d2Ix
;
98
vpImage<double>
d2Iy
;
99
vpImage<double>
d2Ixy
;
100
101
double
MI_preEstimation
;
102
double
MI_postEstimation
;
103
104
double
NMI_preEstimation
;
105
double
NMI_postEstimation
;
106
107
vpMatrix
covarianceMatrix
;
108
bool
computeCovariance
;
109
110
// Internal vars for computeHessienNormalized()
111
std::vector<double>
m_du
;
112
std::vector<double>
m_dv
;
113
std::vector<double>
m_A
;
114
std::vector<double>
m_dB
;
115
std::vector<std::vector<double> >
m_d2u
;
116
std::vector<std::vector<double> >
m_d2v
;
117
std::vector<std::vector<double> >
m_dA
;
118
119
protected
:
120
void
computeGradient
();
121
void
computeHessien
(
vpMatrix
&
H
);
122
void
computeHessienNormalized
(
vpMatrix
&
H
);
123
void
computeMI
(
double
&MI);
124
void
computeProba
(
int
&nbpoint);
125
126
double
getCost
(
const
vpImage<unsigned char>
&I,
const
vpColVector
&tp) VP_OVERRIDE;
127
double
getCost
(
const
vpImage<unsigned char>
&I) {
return
getCost
(I,
p
); }
128
double
getNormalizedCost(
const
vpImage<unsigned char>
&I,
const
vpColVector
&tp);
129
double
getNormalizedCost
(
const
vpImage<unsigned char>
&I) {
return
getNormalizedCost
(I,
p
); }
130
void
zeroProbabilities();
131
132
// private:
133
//#ifndef DOXYGEN_SHOULD_SKIP_THIS
134
// vpTemplateTrackerMI(const vpTemplateTrackerMI &)
135
// : vpTemplateTracker(), hessianComputation(USE_HESSIEN_NORMAL),
136
// ApproxHessian(HESSIAN_0), lambda(0),
137
// temp(nullptr), Prt(nullptr), dPrt(nullptr), Pt(nullptr), Pr(nullptr), d2Prt(nullptr),
138
// PrtTout(nullptr), dprtemp(nullptr), PrtD(nullptr), dPrtD(nullptr),
139
// influBspline(0), bspline(0), Nc(0), Ncb(0), d2Ix(), d2Iy(), d2Ixy(),
140
// MI_preEstimation(0), MI_postEstimation(0), NMI_preEstimation(0),
141
// NMI_postEstimation(0), covarianceMatrix(), computeCovariance(false)
142
// {
143
// throw vpException(vpException::functionNotImplementedError, "Not
144
// implemented!");
145
// }
146
// vpTemplateTrackerMI &operator=(const vpTemplateTrackerMI &){
147
// throw vpException(vpException::functionNotImplementedError, "Not
148
// implemented!"); return *this;
149
// }
150
//#endif
151
152
#if (VISP_CXX_STANDARD >= VISP_CXX_STANDARD_11)
153
vpTemplateTrackerMI
(
const
vpTemplateTrackerMI
&) =
delete
;
// non construction-copyable
154
vpTemplateTrackerMI
&
operator=
(
const
vpTemplateTrackerMI
&) =
delete
;
// non copyable
155
#endif
156
157
public
:
159
vpTemplateTrackerMI
()
160
:
vpTemplateTracker
(),
hessianComputation
(
USE_HESSIEN_NORMAL
),
ApproxHessian
(
HESSIAN_0
),
lambda
(0),
temp
(nullptr),
161
Prt
(nullptr),
dPrt
(nullptr),
Pt
(nullptr),
Pr
(nullptr),
d2Prt
(nullptr),
PrtTout
(nullptr),
dprtemp
(nullptr),
PrtD
(nullptr),
dPrtD
(nullptr),
162
influBspline
(0),
bspline
(0),
Nc
(0),
Ncb
(0),
d2Ix
(),
d2Iy
(),
d2Ixy
(),
MI_preEstimation
(0),
MI_postEstimation
(0),
163
NMI_preEstimation
(0),
NMI_postEstimation
(0),
covarianceMatrix
(),
computeCovariance
(false),
m_du
(),
m_dv
(),
m_A
(),
164
m_dB
(),
m_d2u
(),
m_d2v
(),
m_dA
()
165
{ }
166
VP_EXPLICIT
vpTemplateTrackerMI
(
vpTemplateTrackerWarp
*_warp);
167
virtual
~vpTemplateTrackerMI
() VP_OVERRIDE;
168
vpMatrix
getCovarianceMatrix
()
const
{
return
covarianceMatrix
; }
169
double
getMI
()
const
{
return
MI_postEstimation
; }
170
double
getMI(
const
vpImage<unsigned char>
&I,
int
&nc,
const
int
&bspline,
vpColVector
&tp);
171
double
getMI256(
const
vpImage<unsigned char>
&I,
const
vpColVector
&tp);
172
double
getNMI
()
const
{
return
NMI_postEstimation
; }
173
// initialisation du Hessien en position desiree
174
void
setApprocHessian
(
vpHessienApproximationType
approx) {
ApproxHessian
= approx; }
175
void
setCovarianceComputation
(
const
bool
&flag) {
computeCovariance
= flag; }
176
void
setHessianComputation
(
vpHessienType
type) {
hessianComputation
= type; }
177
void
setBspline(
const
vpBsplineType &newbs);
178
void
setLambda
(
double
_l) {
lambda
= _l; }
179
void
setNc(
int
newNc);
180
};
181
END_VISP_NAMESPACE
182
#endif
vpColVector
Implementation of column vector and the associated operations.
Definition
vpColVector.h:191
vpImage
Definition of the vpImage class member functions.
Definition
vpImage.h:131
vpMatrix
Implementation of a matrix and operations on matrices.
Definition
vpMatrix.h:175
vpTemplateTrackerMI
Definition
vpTemplateTrackerMI.h:55
vpTemplateTrackerMI::Prt
double * Prt
Definition
vpTemplateTrackerMI.h:80
vpTemplateTrackerMI::lambda
double lambda
Definition
vpTemplateTrackerMI.h:77
vpTemplateTrackerMI::dPrtD
double * dPrtD
Definition
vpTemplateTrackerMI.h:89
vpTemplateTrackerMI::MI_postEstimation
double MI_postEstimation
Definition
vpTemplateTrackerMI.h:102
vpTemplateTrackerMI::ApproxHessian
vpHessienApproximationType ApproxHessian
Definition
vpTemplateTrackerMI.h:76
vpTemplateTrackerMI::d2Ix
vpImage< double > d2Ix
Definition
vpTemplateTrackerMI.h:97
vpTemplateTrackerMI::BSPLINE_FOURTH_ORDER
@ BSPLINE_FOURTH_ORDER
Definition
vpTemplateTrackerMI.h:72
vpTemplateTrackerMI::BSPLINE_THIRD_ORDER
@ BSPLINE_THIRD_ORDER
Definition
vpTemplateTrackerMI.h:72
vpTemplateTrackerMI::MI_preEstimation
double MI_preEstimation
Definition
vpTemplateTrackerMI.h:101
vpTemplateTrackerMI::PrtD
double * PrtD
Definition
vpTemplateTrackerMI.h:88
vpTemplateTrackerMI::computeHessienNormalized
void computeHessienNormalized(vpMatrix &H)
Definition
vpTemplateTrackerMI.cpp:454
vpTemplateTrackerMI::Ncb
int Ncb
Definition
vpTemplateTrackerMI.h:95
vpTemplateTrackerMI::m_d2v
std::vector< std::vector< double > > m_d2v
Definition
vpTemplateTrackerMI.h:116
vpTemplateTrackerMI::hessianComputation
vpHessienType hessianComputation
Definition
vpTemplateTrackerMI.h:75
vpTemplateTrackerMI::d2Prt
double * d2Prt
Definition
vpTemplateTrackerMI.h:84
vpTemplateTrackerMI::computeMI
void computeMI(double &MI)
Definition
vpTemplateTrackerMI.cpp:381
vpTemplateTrackerMI::setHessianComputation
void setHessianComputation(vpHessienType type)
Definition
vpTemplateTrackerMI.h:176
vpTemplateTrackerMI::NMI_preEstimation
double NMI_preEstimation
Definition
vpTemplateTrackerMI.h:104
vpTemplateTrackerMI::m_dB
std::vector< double > m_dB
Definition
vpTemplateTrackerMI.h:114
vpTemplateTrackerMI::m_du
std::vector< double > m_du
Definition
vpTemplateTrackerMI.h:111
vpTemplateTrackerMI::influBspline
int influBspline
Definition
vpTemplateTrackerMI.h:90
vpTemplateTrackerMI::Pr
double * Pr
Definition
vpTemplateTrackerMI.h:83
vpTemplateTrackerMI::computeProba
void computeProba(int &nbpoint)
Definition
vpTemplateTrackerMI.cpp:336
vpTemplateTrackerMI::vpTemplateTrackerMI
vpTemplateTrackerMI()
Default constructor.
Definition
vpTemplateTrackerMI.h:159
vpTemplateTrackerMI::Nc
int Nc
Definition
vpTemplateTrackerMI.h:94
vpTemplateTrackerMI::computeHessien
void computeHessien(vpMatrix &H)
Definition
vpTemplateTrackerMI.cpp:414
vpTemplateTrackerMI::setApprocHessian
void setApprocHessian(vpHessienApproximationType approx)
Definition
vpTemplateTrackerMI.h:174
vpTemplateTrackerMI::getCost
double getCost(const vpImage< unsigned char > &I)
Definition
vpTemplateTrackerMI.h:127
vpTemplateTrackerMI::m_dv
std::vector< double > m_dv
Definition
vpTemplateTrackerMI.h:112
vpTemplateTrackerMI::vpHessienApproximationType
vpHessienApproximationType
Definition
vpTemplateTrackerMI.h:59
vpTemplateTrackerMI::HESSIAN_YOUCEF
@ HESSIAN_YOUCEF
Definition
vpTemplateTrackerMI.h:63
vpTemplateTrackerMI::HESSIAN_d2I
@ HESSIAN_d2I
Definition
vpTemplateTrackerMI.h:62
vpTemplateTrackerMI::HESSIAN_NONSECOND
@ HESSIAN_NONSECOND
Definition
vpTemplateTrackerMI.h:60
vpTemplateTrackerMI::HESSIAN_NEW
@ HESSIAN_NEW
Definition
vpTemplateTrackerMI.h:65
vpTemplateTrackerMI::HESSIAN_EXACT
@ HESSIAN_EXACT
Definition
vpTemplateTrackerMI.h:64
vpTemplateTrackerMI::HESSIAN_0
@ HESSIAN_0
Definition
vpTemplateTrackerMI.h:61
vpTemplateTrackerMI::m_d2u
std::vector< std::vector< double > > m_d2u
Definition
vpTemplateTrackerMI.h:115
vpTemplateTrackerMI::computeGradient
void computeGradient()
Definition
vpTemplateTrackerMI.cpp:544
vpTemplateTrackerMI::operator=
vpTemplateTrackerMI & operator=(const vpTemplateTrackerMI &)=delete
vpTemplateTrackerMI::bspline
int bspline
Definition
vpTemplateTrackerMI.h:92
vpTemplateTrackerMI::getNormalizedCost
double getNormalizedCost(const vpImage< unsigned char > &I)
Definition
vpTemplateTrackerMI.h:129
vpTemplateTrackerMI::d2Ixy
vpImage< double > d2Ixy
Definition
vpTemplateTrackerMI.h:99
vpTemplateTrackerMI::getCovarianceMatrix
vpMatrix getCovarianceMatrix() const
Definition
vpTemplateTrackerMI.h:168
vpTemplateTrackerMI::computeCovariance
bool computeCovariance
Definition
vpTemplateTrackerMI.h:108
vpTemplateTrackerMI::temp
double * temp
Definition
vpTemplateTrackerMI.h:79
vpTemplateTrackerMI::PrtTout
double * PrtTout
Definition
vpTemplateTrackerMI.h:85
vpTemplateTrackerMI::getMI
double getMI() const
Definition
vpTemplateTrackerMI.h:169
vpTemplateTrackerMI::m_dA
std::vector< std::vector< double > > m_dA
Definition
vpTemplateTrackerMI.h:117
vpTemplateTrackerMI::getNMI
double getNMI() const
Definition
vpTemplateTrackerMI.h:172
vpTemplateTrackerMI::vpTemplateTrackerMI
vpTemplateTrackerMI(const vpTemplateTrackerMI &)=delete
vpTemplateTrackerMI::Pt
double * Pt
Definition
vpTemplateTrackerMI.h:82
vpTemplateTrackerMI::d2Iy
vpImage< double > d2Iy
Definition
vpTemplateTrackerMI.h:98
vpTemplateTrackerMI::covarianceMatrix
vpMatrix covarianceMatrix
Definition
vpTemplateTrackerMI.h:107
vpTemplateTrackerMI::setLambda
void setLambda(double _l)
Definition
vpTemplateTrackerMI.h:178
vpTemplateTrackerMI::setCovarianceComputation
void setCovarianceComputation(const bool &flag)
Definition
vpTemplateTrackerMI.h:175
vpTemplateTrackerMI::dprtemp
double * dprtemp
Definition
vpTemplateTrackerMI.h:86
vpTemplateTrackerMI::dPrt
double * dPrt
Definition
vpTemplateTrackerMI.h:81
vpTemplateTrackerMI::m_A
std::vector< double > m_A
Definition
vpTemplateTrackerMI.h:113
vpTemplateTrackerMI::vpHessienType
vpHessienType
Definition
vpTemplateTrackerMI.h:69
vpTemplateTrackerMI::USE_HESSIEN_DESIRE
@ USE_HESSIEN_DESIRE
Definition
vpTemplateTrackerMI.h:69
vpTemplateTrackerMI::USE_HESSIEN_NORMAL
@ USE_HESSIEN_NORMAL
Definition
vpTemplateTrackerMI.h:69
vpTemplateTrackerMI::USE_HESSIEN_BEST_COND
@ USE_HESSIEN_BEST_COND
Definition
vpTemplateTrackerMI.h:69
vpTemplateTrackerMI::NMI_postEstimation
double NMI_postEstimation
Definition
vpTemplateTrackerMI.h:105
vpTemplateTrackerWarp
Definition
vpTemplateTrackerWarp.h:65
vpTemplateTracker::vpTemplateTracker
vpTemplateTracker()
Default constructor.
Definition
vpTemplateTracker.h:154
vpTemplateTracker::p
vpColVector p
Definition
vpTemplateTracker.h:138
vpTemplateTracker::H
vpMatrix H
Definition
vpTemplateTracker.h:103
vpTemplateTracker::getCost
virtual double getCost(const vpImage< unsigned char > &I, const vpColVector &tp)=0
BEGIN_VISP_NAMESPACE
Definition
vpMbtDistanceCircle.cpp:55
modules
tracker
tt_mi
include
visp3
tt_mi
vpTemplateTrackerMI.h
Generated by
1.17.0