DGtal
2.2.0
Toggle main menu visibility
Loading...
Searching...
No Matches
CompareLocalEstimators.h
1
16
17
#pragma once
18
33
34
#if defined(CompareLocalEstimators_RECURSES)
35
#error Recursive header files inclusion detected in CompareLocalEstimators.h
36
#else
// defined(CompareLocalEstimators_RECURSES)
38
#define CompareLocalEstimators_RECURSES
39
40
#if !defined CompareLocalEstimators_h
42
#define CompareLocalEstimators_h
43
45
// Inclusions
46
#include <cmath>
47
#include <iostream>
48
#include "DGtal/base/Common.h"
49
#include "DGtal/math/Statistic.h"
50
52
namespace
DGtal
53
{
55
// template class CompareLocalEstimators
65
template
<
typename
TFirstEsimator,
typename
TSecondEstimator>
66
struct
CompareLocalEstimators
67
{
68
69
// ----------------------- Types ------------------------------
70
public
:
71
72
typedef
TFirstEsimator
FirstEstimator
;
73
typedef
TSecondEstimator
SecondEstimator
;
74
75
typedef
typename
FirstEstimator::ConstIterator
ConstIterator
;
76
typedef
typename
FirstEstimator::Quantity
Quantity
;
77
79
typedef
Statistic<Quantity>
OutputStatistic
;
80
typedef
Statistic<double>
OutputVectorStatistic
;
81
83
84
// ----------------------- Interface --------------------------------------
85
public
:
86
101
static
102
Quantity
compare
(
FirstEstimator
& aFirstEstimator,
103
SecondEstimator
& aSecondEstimator,
104
const
ConstIterator
&it,
105
const
double
h = 1.)
106
{
107
ASSERT( aFirstEstimator.isValid() );
108
ASSERT( aSecondEstimator.isValid( ));
109
110
return
aFirstEstimator.eval(it, h) - aSecondEstimator.eval(it, h);
111
}
112
113
130
static
131
OutputStatistic
132
compare
(
FirstEstimator
& aFirstEstimator,
133
SecondEstimator
& aSecondEstimator,
134
const
ConstIterator
& itb,
135
const
ConstIterator
& ite,
136
const
double
h = 1.,
137
const
bool
storeSamples =
false
)
138
{
139
OutputStatistic
stats(storeSamples);
140
141
for
(
ConstIterator
it = itb; it!= ite; ++it)
142
stats.
addValue
(
compare
(aFirstEstimator, aSecondEstimator, it, h));
143
144
stats.
terminate
();
145
return
stats;
146
}
147
148
164
static
165
double
166
compareVectors
(
FirstEstimator
& aFirstEstimator,
167
SecondEstimator
& aSecondEstimator,
168
const
ConstIterator
&it,
169
const
double
h = 1.)
170
{
171
ASSERT( aFirstEstimator.isValid());
172
ASSERT( aSecondEstimator.isValid());
173
Quantity
v1 = aFirstEstimator.eval(it, h), v2 = aSecondEstimator.eval(it, h);
174
175
ASSERT( v1.norm() != 0.0 );
176
ASSERT( v2.norm() != 0.0 );
177
double
ndot = (double) v1.dot(v2)
178
/ ( (double) ( v1.norm() * v2.norm() ) );
179
return
( ndot > 1.0 ) ? 0.0
180
: ( ndot < -1.0 ) ? M_PI : acos( ndot );
181
}
182
183
200
static
201
OutputVectorStatistic
202
compareVectors
(
FirstEstimator
& aFirstEstimator,
203
SecondEstimator
& aSecondEstimator,
204
const
ConstIterator
& itb,
205
const
ConstIterator
& ite,
206
const
double
h,
207
const
bool
storeSamples =
false
)
208
{
209
OutputVectorStatistic
stats(storeSamples);
210
211
for
(
ConstIterator
it = itb; it!= ite; ++it)
212
stats.
addValue
(
compareVectors
(aFirstEstimator, aSecondEstimator, it, h));
213
214
stats.
terminate
();
215
return
stats;
216
}
217
218
// ------------------------- Hidden services ------------------------------
219
private
:
220
226
CompareLocalEstimators
(
const
CompareLocalEstimators
& other );
227
234
CompareLocalEstimators
&
operator=
(
const
CompareLocalEstimators
& other );
235
236
237
};
// end of class CompareLocalEstimators
238
239
}
// namespace DGtal
240
241
243
244
#endif
// !defined CompareLocalEstimators_h
245
246
#undef CompareLocalEstimators_RECURSES
247
#endif
// else defined(CompareLocalEstimators_RECURSES)
DGtal::Statistic
Aim: This class processes a set of sample values for one variable and can then compute different stat...
Definition
Statistic.h:70
DGtal::Statistic::terminate
void terminate()
DGtal::Statistic::addValue
void addValue(Quantity v)
DGtal
DGtal is the top-level namespace which contains all DGtal functions and types.
Definition
ClosedIntegerHalfPlane.h:49
DGtal::CompareLocalEstimators::compare
static OutputStatistic compare(FirstEstimator &aFirstEstimator, SecondEstimator &aSecondEstimator, const ConstIterator &itb, const ConstIterator &ite, const double h=1., const bool storeSamples=false)
Definition
CompareLocalEstimators.h:132
DGtal::CompareLocalEstimators::compareVectors
static OutputVectorStatistic compareVectors(FirstEstimator &aFirstEstimator, SecondEstimator &aSecondEstimator, const ConstIterator &itb, const ConstIterator &ite, const double h, const bool storeSamples=false)
Definition
CompareLocalEstimators.h:202
DGtal::CompareLocalEstimators::SecondEstimator
TSecondEstimator SecondEstimator
Definition
CompareLocalEstimators.h:73
DGtal::CompareLocalEstimators::OutputVectorStatistic
Statistic< double > OutputVectorStatistic
Definition
CompareLocalEstimators.h:80
DGtal::CompareLocalEstimators::compareVectors
static double compareVectors(FirstEstimator &aFirstEstimator, SecondEstimator &aSecondEstimator, const ConstIterator &it, const double h=1.)
Definition
CompareLocalEstimators.h:166
DGtal::CompareLocalEstimators::operator=
CompareLocalEstimators & operator=(const CompareLocalEstimators &other)
DGtal::CompareLocalEstimators::FirstEstimator
TFirstEsimator FirstEstimator
Definition
CompareLocalEstimators.h:72
DGtal::CompareLocalEstimators::OutputStatistic
Statistic< Quantity > OutputStatistic
Output statistic type.
Definition
CompareLocalEstimators.h:79
DGtal::CompareLocalEstimators::Quantity
FirstEstimator::Quantity Quantity
Definition
CompareLocalEstimators.h:76
DGtal::CompareLocalEstimators::compare
static Quantity compare(FirstEstimator &aFirstEstimator, SecondEstimator &aSecondEstimator, const ConstIterator &it, const double h=1.)
Definition
CompareLocalEstimators.h:102
DGtal::CompareLocalEstimators::CompareLocalEstimators
CompareLocalEstimators(const CompareLocalEstimators &other)
DGtal::CompareLocalEstimators::ConstIterator
FirstEstimator::ConstIterator ConstIterator
Definition
CompareLocalEstimators.h:75
src
DGtal
geometry
curves
estimation
CompareLocalEstimators.h
Generated on
for DGtal by
1.18.0