32#include "DGtal/base/Common.h"
33#include "DGtal/helpers/StdDefs.h"
34#include "DGtal/geometry/volumes/distance/DistanceTransformation.h"
35#include "DGtal/geometry/volumes/distance/ExactPredicateLpSeparableMetric.h"
36#include "DGtal/geometry/volumes/distance/InexactPredicateLpSeparableMetric.h"
37#include "DGtal/images/ImageContainerBySTLVector.h"
38#include "DGtal/kernel/sets/DigitalSetBySTLSet.h"
46template<
typename Image>
52 for (
Dimension i = 0; i < Image::Domain::dimension; i++)
53 ext[i] = up[i] - low[i] + 1;
56 for (
unsigned int k = 0 ; k < nb; k++)
58 for (
unsigned int dim = 0;
dim < Image::dimension;
dim++)
67template<
typename Image,
typename Pred,
typename Metric>
76 typename Metric::Value dist = result(*it);
80 itbis != itendbis; ++itbis)
82 if (!pointPredicate(*itbis) && (metric(*it, *itbis) < dist))
84 trace.error()<<
"Error in Voronoi map at "<< *it<<
" computed="<<dist<<
" but find="<<metric(*it, *itbis) << std::endl;
93template <
typename Space,
int norm>
96 trace.beginBlock(
"Checking Exact/Inexct predicate metrics");
103 Point low=Point::diagonal(0),
104 up=Point::diagonal(size);
109 for(
unsigned int i = 0; i<nb; ++i)
113 p[
dim] = rand() % size;
117 trace.info()<<
"Testing metrics "<<MetricEx()<<std::endl;
119 trace.info()<<
"Inserting "<<set.size() <<
" points."<<std::endl;
121 NegPredicate negPred(set);
125 DTEx dtex(&
domain, &negPred, &metricEx);
135template <
typename Space>
138 trace.beginBlock(
"Checking Exact/Inexct predicate metrics");
145 Point low=Point::diagonal(0),
146 up=Point::diagonal(size);
151 for(
unsigned int i = 0; i<nb; ++i)
155 p[
dim] = rand() % size;
159 trace.info()<<
"Testing metrics "<<MetricInex(norm)<<std::endl;
161 trace.info()<<
"Inserting "<<set.size() <<
" points."<<std::endl;
163 NegPredicate negPred(set);
166 MetricInex metricInex(norm);
167 DTIn dtinex(&
domain, &negPred, &metricInex);
178int main(
int argc,
char** argv )
180 trace.beginBlock (
"Testing class DistanceTransformationMetrics" );
181 trace.info() <<
"Args:";
182 for (
int i = 0; i < argc; ++i )
183 trace.info() <<
" " << argv[ i ];
184 trace.info() << endl;
195 trace.emphase() << ( res ?
"Passed." :
"Error." ) << endl;
178int main(
int argc,
char** argv ) {
…}
Aim: A container class for storing sets of digital points within some given domain.
Aim: implements separable l_p metrics with exact predicates.
Aim: Parallelepidec region of a digital space, model of a 'CDomain'.
const ConstIterator & begin() const
const Point & lowerBound() const
const Point & upperBound() const
const ConstIterator & end() const
Aim: implements association bewteen points lying in a digital domain and values.
const Domain & domain() const
void setValue(const Point &aPoint, const Value &aValue)
Aim: implements separable l_p metrics with approximated predicates.
PointVector< dim, Integer > Point
static const Dimension dimension
DGtal is the top-level namespace which contains all DGtal functions and types.
DGtal::uint32_t Dimension
Aim: The predicate returns true when the point predicate given at construction return false....