33#if defined(PowerMap_RECURSES)
34#error Recursive header files inclusion detected in PowerMap.h
37#define PowerMap_RECURSES
39#if !defined PowerMap_h
48#include "DGtal/base/Common.h"
49#include "DGtal/base/CountedPtr.h"
50#include "DGtal/base/ConstAlias.h"
51#include "DGtal/images/ImageContainerBySTLVector.h"
52#include "DGtal/kernel/domains/HyperRectDomain.h"
53#include "DGtal/images/CConstImage.h"
54#include "DGtal/images/CImage.h"
55#include "DGtal/geometry/volumes/distance/CPowerSeparableMetric.h"
56#include "DGtal/kernel/domains/HyperRectDomain.h"
105 template <
typename TWeightImage,
106 typename TPowerSeparableMetric,
108 ImageContainerBySTLVector<HyperRectDomain<typename TWeightImage::Domain::Space>,
109 typename TWeightImage::Domain::Space::Vector> >
121 typedef typename TWeightImage::Value
Weight;
122 typedef typename WeightImage::Domain::Space
Space;
127 typedef typename Space::Point::Coordinate
Abscissa;
131 typename TImageContainer::Domain::Space >::value ));
424 template <
typename W,
435#include "DGtal/geometry/volumes/distance/PowerMap.ih"
442#undef PowerMap_RECURSES
Aim: This class encapsulates its parameter class so that to indicate to the user that the object/poin...
Aim: Smart pointer based on reference counts.
Aim: Parallelepidec region of a digital space, model of a 'CDomain'.
ConstRange constRange() const
Aim: implements association bewteen points lying in a digital domain and values.
Aim: Implementation of the linear in time Power map construction.
Point myUpperBoundCopy
Copy of the image lower bound.
std::vector< Dimension > myPeriodicityIndex
Index of the periodic dimensions.
Point myDomainExtent
Domain extent.
Space::Point::Coordinate Abscissa
BOOST_STATIC_ASSERT((boost::is_same< typename TWeightImage::Domain::Space::Vector, typename TImageContainer::Value >::value))
BOOST_CONCEPT_ASSERT((concepts::CPowerSeparableMetric< TPowerSeparableMetric >))
TWeightImage::Value Weight
void computeOtherStep1D(const Point &row, const Dimension dim) const
PowerMap(ConstAlias< Domain > aDomain, ConstAlias< WeightImage > aWeightImage, ConstAlias< PowerSeparableMetric > aMetric, PeriodicitySpec const &aPeriodicitySpec)
const WeightImage * weightImagePtr() const
ConstRange constRange() const
const WeightImage * myWeightImagePtr
Pointer to the point predicate.
PowerMap(ConstAlias< Domain > aDomain, ConstAlias< WeightImage > aWeightImage, ConstAlias< PowerSeparableMetric > aMetric)
Point projectPoint(Point aPoint) const
std::array< bool, Space::dimension > PeriodicitySpec
Periodicity specification type.
Value operator()(const Point &aPoint) const
const Domain * myDomainPtr
Pointer to the computation domain.
PeriodicitySpec const & getPeriodicitySpec() const
bool isPeriodic(const Dimension n) const
TImageContainer OutputImage
Type of resulting image.
TImageContainer::Domain Domain
Definition of the underlying domain type.
const PowerSeparableMetric * myMetricPtr
Pointer to the separable metric instance.
Point::Coordinate projectCoordinate(typename Point::Coordinate aCoordinate, const Dimension aDim) const
WeightImage::Domain::Space Space
const Domain & domain() const
const PowerSeparableMetric * metricPtr() const
BOOST_CONCEPT_ASSERT((concepts::CImage< TImageContainer >))
TWeightImage WeightImage
Copy of the distance image types.
Vector Value
Definition of the image model value type.
PowerMap< TWeightImage, TPowerSeparableMetric, TImageContainer > Self
Self type.
TPowerSeparableMetric PowerSeparableMetric
We construct the type associated to the separable metric.
void computeOtherSteps(const Dimension dim) const
BOOST_STATIC_ASSERT((boost::is_same< HyperRectDomain< typename TWeightImage::Domain::Space >, typename TImageContainer::Domain >::value))
BOOST_STATIC_ASSERT((boost::is_same< typename TWeightImage::Domain::Space, typename TImageContainer::Domain::Space >::value))
PeriodicitySpec myPeriodicitySpec
Periodicity along each dimension.
void selfDisplay(std::ostream &out) const
Point myInfinity
Value to act as a +infinity value.
BOOST_CONCEPT_ASSERT((concepts::CConstImage< TWeightImage >))
Self & operator=(const Self &aOtherPowerMap)=default
OutputImage::ConstRange ConstRange
Definition of the image value type.
Point myLowerBoundCopy
Copy of the image lower bound.
Space::Dimension Dimension
CountedPtr< OutputImage > myImagePtr
Power map image.
Point projectPoint(Point aPoint, const Dimension aMaxDim) const
Aim: model of CConstBidirectionalRangeFromPoint that adapts any range of elements bounded by two iter...
PointVector< dim, Integer > Point
Points in DGtal::SpaceND.
size_t Size
Type used to represent sizes in the digital space.
PointVector< dim, Integer > Vector
Vectors in DGtal::SpaceND.
DGtal::Dimension Dimension
Copy of the type used for the dimension.
DGtal is the top-level namespace which contains all DGtal functions and types.
std::ostream & operator<<(std::ostream &out, const ClosedIntegerHalfPlane< TSpace > &object)
Aim: Defines the concept describing a read-only image, which is a refinement of CPointFunctor.
Aim: Defines the concept describing a read/write image, having an output iterator.
Aim: defines the concept of separable metrics.
ImageContainerBySTLVector< HyperRectDomain< Z2i::Space >, std::unordered_set< Z2i::Point > > TImageContainer