DGtal 1.4.0
Loading...
Searching...
No Matches
DGtal::DistanceTransformation< TSpace, TPointPredicate, TSeparableMetric, TImageContainer > Class Template Reference

Aim: Implementation of the linear in time distance transformation for separable metrics. More...

#include <DGtal/geometry/volumes/distance/DistanceTransformation.h>

Inheritance diagram for DGtal::DistanceTransformation< TSpace, TPointPredicate, TSeparableMetric, TImageContainer >:
[legend]

Public Types

typedef TSeparableMetric SeparableMetric
 Separable Metric type.
 
typedef TSpace Space
 Separable Metric type.
 
typedef TSpace::Vector Vector
 Separable Metric type.
 
typedef TPointPredicate PointPredicate
 Point Predicate type.
 
typedef SeparableMetric::Value Value
 Definition of the image value type.
 
typedef SeparableMetric::Point Point
 Definition of the image value type.
 
typedef DistanceTransformation< TSpace, TPointPredicate, TSeparableMetric > Self
 Definition of the image.
 
typedef VoronoiMap< TSpace, TPointPredicate, TSeparableMetric > Parent
 
typedef DefaultConstImageRange< SelfConstRange
 Definition of the image constRange.
 
typedef VoronoiMap< TSpace, TPointPredicate, TSeparableMetric, TImageContainer >::Domain Domain
 Definition of the image value type.
 
- Public Types inherited from DGtal::VoronoiMap< TSpace, TPointPredicate, TSeparableMetric, TImageContainer >
typedef TSpace Space
 Copy of the space type.
 
typedef TPointPredicate PointPredicate
 Copy of the point predicate type.
 
typedef TImageContainer::Domain Domain
 Definition of the underlying domain type.
 
typedef TSeparableMetric SeparableMetric
 Definition of the separable metric type.
 
typedef DGtal::int64_t IntegerLong
 Large integer type for SeparableMetricHelper construction.
 
typedef Space::Vector Vector
 
typedef Space::Point Point
 
typedef Space::Dimension Dimension
 
typedef Space::Size Size
 
typedef Space::Point::Coordinate Abscissa
 
typedef TImageContainer OutputImage
 Type of resulting image.
 
typedef Vector Value
 Definition of the image value type.
 
typedef OutputImage::ConstRange ConstRange
 Definition of the image value type.
 
typedef VoronoiMap< TSpace, TPointPredicate, TSeparableMetric, TImageContainerSelf
 Self type.
 
typedef std::array< bool, Space::dimensionPeriodicitySpec
 Periodicity specification type.
 

Public Member Functions

 BOOST_CONCEPT_ASSERT ((concepts::CSpace< TSpace >))
 
 BOOST_CONCEPT_ASSERT ((concepts::CPointPredicate< TPointPredicate >))
 
 BOOST_CONCEPT_ASSERT ((concepts::CSeparableMetric< TSeparableMetric >))
 
 BOOST_STATIC_ASSERT ((boost::is_same< typename Space::Point, typename SeparableMetric::Point >::value))
 
 DistanceTransformation (ConstAlias< Domain > aDomain, ConstAlias< PointPredicate > predicate, ConstAlias< SeparableMetric > aMetric)
 
 DistanceTransformation (ConstAlias< Domain > aDomain, ConstAlias< PointPredicate > predicate, ConstAlias< SeparableMetric > aMetric, typename Parent::PeriodicitySpec const &aPeriodicitySpec)
 
 ~DistanceTransformation ()
 
const Domaindomain () const
 
ConstRange constRange () const
 
Value operator() (const Point &aPoint) const
 
Vector getVoronoiSite (const Point &aPoint) const
 
const SeparableMetricmetric () const
 
void selfDisplay (std::ostream &out) const
 
- Public Member Functions inherited from DGtal::VoronoiMap< TSpace, TPointPredicate, TSeparableMetric, TImageContainer >
 BOOST_CONCEPT_ASSERT ((concepts::CSpace< TSpace >))
 
 BOOST_CONCEPT_ASSERT ((concepts::CPointPredicate< TPointPredicate >))
 
 BOOST_CONCEPT_ASSERT ((concepts::CSeparableMetric< TSeparableMetric >))
 
 BOOST_CONCEPT_ASSERT ((concepts::CImage< TImageContainer >))
 
 BOOST_STATIC_ASSERT ((boost::is_same< typename TSpace::Point, typename TPointPredicate::Point >::value))
 Both Space points and PointPredicate points must be the same.
 
 BOOST_STATIC_ASSERT ((boost::is_same< TSpace, typename TImageContainer::Domain::Space >::value))
 
 BOOST_STATIC_ASSERT ((boost::is_same< typename TSpace::Vector, typename TImageContainer::Value >::value))
 
 BOOST_STATIC_ASSERT ((boost::is_same< HyperRectDomain< TSpace >, typename TImageContainer::Domain >::value))
 
 VoronoiMap (ConstAlias< Domain > aDomain, ConstAlias< PointPredicate > predicate, ConstAlias< SeparableMetric > aMetric)
 
 VoronoiMap (ConstAlias< Domain > aDomain, ConstAlias< PointPredicate > predicate, ConstAlias< SeparableMetric > aMetric, PeriodicitySpec const &aPeriodicitySpec)
 
 ~VoronoiMap ()=default
 
 VoronoiMap ()=delete
 
Selfoperator= (const Self &aOtherVoronoiMap)=default
 
const Domaindomain () const
 
ConstRange constRange () const
 
Value operator() (const Point &aPoint) const
 
const SeparableMetricmetric () const
 
PeriodicitySpec const & getPeriodicitySpec () const
 
bool isPeriodic (const Dimension n) const
 
Point projectPoint (Point aPoint) const
 
void selfDisplay (std::ostream &out) const
 

Protected Member Functions

 DistanceTransformation ()
 

Additional Inherited Members

- Protected Attributes inherited from DGtal::VoronoiMap< TSpace, TPointPredicate, TSeparableMetric, TImageContainer >
const SeparableMetricmyMetricPtr
 Pointer to the separable metric instance.
 
CountedPtr< OutputImagemyImagePtr
 Voronoi map image.
 
PeriodicitySpec myPeriodicitySpec
 Periodicity along each dimension.
 

Detailed Description

template<typename TSpace, typename TPointPredicate, typename TSeparableMetric, typename TImageContainer = ImageContainerBySTLVector< HyperRectDomain<TSpace>, typename TSpace::Vector >>
class DGtal::DistanceTransformation< TSpace, TPointPredicate, TSeparableMetric, TImageContainer >

Aim: Implementation of the linear in time distance transformation for separable metrics.

Description of template class 'DistanceTransformation'

This class is a wrapper around a Voronoi map construction (see VoronoiMap). More precisely, at a point p, since the VoronoiMap at p returns a vector to the closest site, this class adapts the operator() in order to returns the distance to the closest site for the considered metric.

Please refer to VoronoiMap documentation for details on the computational cost and parameter description.

This class is a model of concepts::CConstImage.

Template Parameters
TSpacetype of Digital Space (model of concepts::CSpace).
TPointPredicatepoint predicate returning false for points from which we compute the distance (model of concepts::CPointPredicate)
TSeparableMetrica model of concepts::CSeparableMetric
TImageContainerany model of concepts::CImage to store the VoronoiMap (default: ImageContainerBySTLVector). The space of the image container and the TSpace should match. Furthermore the container value type must be TSpace::Vector.
See also
distancetransform2D.cpp
distancetransform3D.cpp
Examples
geometry/volumes/distance/distancetransform2D.cpp, geometry/volumes/distance/distancetransform3D.cpp, geometry/volumes/distance/toricdomainvolumetric.cpp, geometry/volumes/distance/voronoimap2D.cpp, and tutorial-examples/volDTGranulo.cpp.

Definition at line 97 of file DistanceTransformation.h.

Member Typedef Documentation

◆ ConstRange

template<typename TSpace , typename TPointPredicate , typename TSeparableMetric , typename TImageContainer = ImageContainerBySTLVector< HyperRectDomain<TSpace>, typename TSpace::Vector >>
typedef DefaultConstImageRange<Self> DGtal::DistanceTransformation< TSpace, TPointPredicate, TSeparableMetric, TImageContainer >::ConstRange

Definition of the image constRange.

Definition at line 132 of file DistanceTransformation.h.

◆ Domain

template<typename TSpace , typename TPointPredicate , typename TSeparableMetric , typename TImageContainer = ImageContainerBySTLVector< HyperRectDomain<TSpace>, typename TSpace::Vector >>
typedef VoronoiMap<TSpace,TPointPredicate,TSeparableMetric,TImageContainer>::Domain DGtal::DistanceTransformation< TSpace, TPointPredicate, TSeparableMetric, TImageContainer >::Domain

Definition of the image value type.

Definition at line 137 of file DistanceTransformation.h.

◆ Parent

template<typename TSpace , typename TPointPredicate , typename TSeparableMetric , typename TImageContainer = ImageContainerBySTLVector< HyperRectDomain<TSpace>, typename TSpace::Vector >>
typedef VoronoiMap<TSpace,TPointPredicate,TSeparableMetric> DGtal::DistanceTransformation< TSpace, TPointPredicate, TSeparableMetric, TImageContainer >::Parent

Definition at line 129 of file DistanceTransformation.h.

◆ Point

template<typename TSpace , typename TPointPredicate , typename TSeparableMetric , typename TImageContainer = ImageContainerBySTLVector< HyperRectDomain<TSpace>, typename TSpace::Vector >>
typedef SeparableMetric::Point DGtal::DistanceTransformation< TSpace, TPointPredicate, TSeparableMetric, TImageContainer >::Point

Definition of the image value type.

Definition at line 122 of file DistanceTransformation.h.

◆ PointPredicate

template<typename TSpace , typename TPointPredicate , typename TSeparableMetric , typename TImageContainer = ImageContainerBySTLVector< HyperRectDomain<TSpace>, typename TSpace::Vector >>
typedef TPointPredicate DGtal::DistanceTransformation< TSpace, TPointPredicate, TSeparableMetric, TImageContainer >::PointPredicate

Point Predicate type.

Definition at line 116 of file DistanceTransformation.h.

◆ Self

template<typename TSpace , typename TPointPredicate , typename TSeparableMetric , typename TImageContainer = ImageContainerBySTLVector< HyperRectDomain<TSpace>, typename TSpace::Vector >>
typedef DistanceTransformation<TSpace,TPointPredicate,TSeparableMetric> DGtal::DistanceTransformation< TSpace, TPointPredicate, TSeparableMetric, TImageContainer >::Self

Definition of the image.

Definition at line 127 of file DistanceTransformation.h.

◆ SeparableMetric

template<typename TSpace , typename TPointPredicate , typename TSeparableMetric , typename TImageContainer = ImageContainerBySTLVector< HyperRectDomain<TSpace>, typename TSpace::Vector >>
typedef TSeparableMetric DGtal::DistanceTransformation< TSpace, TPointPredicate, TSeparableMetric, TImageContainer >::SeparableMetric

Separable Metric type.

Definition at line 107 of file DistanceTransformation.h.

◆ Space

template<typename TSpace , typename TPointPredicate , typename TSeparableMetric , typename TImageContainer = ImageContainerBySTLVector< HyperRectDomain<TSpace>, typename TSpace::Vector >>
typedef TSpace DGtal::DistanceTransformation< TSpace, TPointPredicate, TSeparableMetric, TImageContainer >::Space

Separable Metric type.

Definition at line 110 of file DistanceTransformation.h.

◆ Value

template<typename TSpace , typename TPointPredicate , typename TSeparableMetric , typename TImageContainer = ImageContainerBySTLVector< HyperRectDomain<TSpace>, typename TSpace::Vector >>
typedef SeparableMetric::Value DGtal::DistanceTransformation< TSpace, TPointPredicate, TSeparableMetric, TImageContainer >::Value

Definition of the image value type.

Definition at line 119 of file DistanceTransformation.h.

◆ Vector

template<typename TSpace , typename TPointPredicate , typename TSeparableMetric , typename TImageContainer = ImageContainerBySTLVector< HyperRectDomain<TSpace>, typename TSpace::Vector >>
typedef TSpace::Vector DGtal::DistanceTransformation< TSpace, TPointPredicate, TSeparableMetric, TImageContainer >::Vector

Separable Metric type.

Definition at line 113 of file DistanceTransformation.h.

Constructor & Destructor Documentation

◆ DistanceTransformation() [1/3]

template<typename TSpace , typename TPointPredicate , typename TSeparableMetric , typename TImageContainer = ImageContainerBySTLVector< HyperRectDomain<TSpace>, typename TSpace::Vector >>
DGtal::DistanceTransformation< TSpace, TPointPredicate, TSeparableMetric, TImageContainer >::DistanceTransformation ( ConstAlias< Domain > aDomain,
ConstAlias< PointPredicate > predicate,
ConstAlias< SeparableMetric > aMetric )
inline

Constructor in the non-periodic case.

See documentation of VoronoiMap constructor.

Definition at line 144 of file DistanceTransformation.h.

146 :
148 predicate,
149 aMetric)
150 {}

◆ DistanceTransformation() [2/3]

template<typename TSpace , typename TPointPredicate , typename TSeparableMetric , typename TImageContainer = ImageContainerBySTLVector< HyperRectDomain<TSpace>, typename TSpace::Vector >>
DGtal::DistanceTransformation< TSpace, TPointPredicate, TSeparableMetric, TImageContainer >::DistanceTransformation ( ConstAlias< Domain > aDomain,
ConstAlias< PointPredicate > predicate,
ConstAlias< SeparableMetric > aMetric,
typename Parent::PeriodicitySpec const & aPeriodicitySpec )
inline

Constructor with periodicity specification.

See documentation of VoronoiMap constructor.

Definition at line 157 of file DistanceTransformation.h.

162 predicate,
163 aMetric,
164 aPeriodicitySpec)
165 {}

◆ ~DistanceTransformation()

template<typename TSpace , typename TPointPredicate , typename TSeparableMetric , typename TImageContainer = ImageContainerBySTLVector< HyperRectDomain<TSpace>, typename TSpace::Vector >>
DGtal::DistanceTransformation< TSpace, TPointPredicate, TSeparableMetric, TImageContainer >::~DistanceTransformation ( )
inline

Default destructor

Definition at line 170 of file DistanceTransformation.h.

170{};

◆ DistanceTransformation() [3/3]

template<typename TSpace , typename TPointPredicate , typename TSeparableMetric , typename TImageContainer = ImageContainerBySTLVector< HyperRectDomain<TSpace>, typename TSpace::Vector >>
DGtal::DistanceTransformation< TSpace, TPointPredicate, TSeparableMetric, TImageContainer >::DistanceTransformation ( )
protected

Default Constructor.

Member Function Documentation

◆ BOOST_CONCEPT_ASSERT() [1/3]

template<typename TSpace , typename TPointPredicate , typename TSeparableMetric , typename TImageContainer = ImageContainerBySTLVector< HyperRectDomain<TSpace>, typename TSpace::Vector >>
DGtal::DistanceTransformation< TSpace, TPointPredicate, TSeparableMetric, TImageContainer >::BOOST_CONCEPT_ASSERT ( (concepts::CPointPredicate< TPointPredicate >) )

◆ BOOST_CONCEPT_ASSERT() [2/3]

template<typename TSpace , typename TPointPredicate , typename TSeparableMetric , typename TImageContainer = ImageContainerBySTLVector< HyperRectDomain<TSpace>, typename TSpace::Vector >>
DGtal::DistanceTransformation< TSpace, TPointPredicate, TSeparableMetric, TImageContainer >::BOOST_CONCEPT_ASSERT ( (concepts::CSeparableMetric< TSeparableMetric >) )

◆ BOOST_CONCEPT_ASSERT() [3/3]

template<typename TSpace , typename TPointPredicate , typename TSeparableMetric , typename TImageContainer = ImageContainerBySTLVector< HyperRectDomain<TSpace>, typename TSpace::Vector >>
DGtal::DistanceTransformation< TSpace, TPointPredicate, TSeparableMetric, TImageContainer >::BOOST_CONCEPT_ASSERT ( (concepts::CSpace< TSpace >) )

◆ BOOST_STATIC_ASSERT()

template<typename TSpace , typename TPointPredicate , typename TSeparableMetric , typename TImageContainer = ImageContainerBySTLVector< HyperRectDomain<TSpace>, typename TSpace::Vector >>
DGtal::DistanceTransformation< TSpace, TPointPredicate, TSeparableMetric, TImageContainer >::BOOST_STATIC_ASSERT ( (boost::is_same< typename Space::Point, typename SeparableMetric::Point >::value) )

◆ constRange()

template<typename TSpace , typename TPointPredicate , typename TSeparableMetric , typename TImageContainer = ImageContainerBySTLVector< HyperRectDomain<TSpace>, typename TSpace::Vector >>
ConstRange DGtal::DistanceTransformation< TSpace, TPointPredicate, TSeparableMetric, TImageContainer >::constRange ( ) const
inline

Returns a const range on the DistanceMap values.

Returns
a const range

Definition at line 188 of file DistanceTransformation.h.

189 {
190 return ConstRange(*this);
191 }
DefaultConstImageRange< Self > ConstRange
Definition of the image constRange.

◆ domain()

template<typename TSpace , typename TPointPredicate , typename TSeparableMetric , typename TImageContainer = ImageContainerBySTLVector< HyperRectDomain<TSpace>, typename TSpace::Vector >>
const Domain & DGtal::DistanceTransformation< TSpace, TPointPredicate, TSeparableMetric, TImageContainer >::domain ( ) const
inline

Returns a const range on the DistanceMap values.

Returns
a const range

Definition at line 179 of file DistanceTransformation.h.

180 {
181 return Parent::domain();
182 }
const Domain & domain() const
Definition VoronoiMap.h:265

References DGtal::VoronoiMap< TSpace, TPointPredicate, TSeparableMetric, TImageContainer >::domain().

◆ getVoronoiSite()

template<typename TSpace , typename TPointPredicate , typename TSeparableMetric , typename TImageContainer = ImageContainerBySTLVector< HyperRectDomain<TSpace>, typename TSpace::Vector >>
Vector DGtal::DistanceTransformation< TSpace, TPointPredicate, TSeparableMetric, TImageContainer >::getVoronoiSite ( const Point & aPoint) const
inline

Access to the Voronoi site inducing the DistanceMap value (a.k.a. the vector such that its norm is the DT value) at a point.

Parameters
[in]aPointthe point to probe.

Definition at line 211 of file DistanceTransformation.h.

212 {
213 return this->myImagePtr->operator()(aPoint);
214 }
CountedPtr< OutputImage > myImagePtr
Voronoi map image.
Definition VoronoiMap.h:409
const Point aPoint(3, 4)

References aPoint(), and DGtal::VoronoiMap< TSpace, TPointPredicate, TSeparableMetric, TImageContainer >::myImagePtr.

◆ metric()

template<typename TSpace , typename TPointPredicate , typename TSeparableMetric , typename TImageContainer = ImageContainerBySTLVector< HyperRectDomain<TSpace>, typename TSpace::Vector >>
const SeparableMetric * DGtal::DistanceTransformation< TSpace, TPointPredicate, TSeparableMetric, TImageContainer >::metric ( ) const
inline
Returns
Returns the underlying metric.

Definition at line 219 of file DistanceTransformation.h.

220 {
221 return Parent::metric();
222 }
const SeparableMetric * metric() const
Definition VoronoiMap.h:293

References DGtal::VoronoiMap< TSpace, TPointPredicate, TSeparableMetric, TImageContainer >::metric().

◆ operator()()

template<typename TSpace , typename TPointPredicate , typename TSeparableMetric , typename TImageContainer = ImageContainerBySTLVector< HyperRectDomain<TSpace>, typename TSpace::Vector >>
Value DGtal::DistanceTransformation< TSpace, TPointPredicate, TSeparableMetric, TImageContainer >::operator() ( const Point & aPoint) const
inline

Access to a DistanceMap value (a.k.a. the norm of the associated Voronoi vector) at a point.

Parameters
aPointthe point to probe.

Definition at line 199 of file DistanceTransformation.h.

200 {
201 return this->myMetricPtr->operator()(aPoint,
202 this->myImagePtr->operator()(aPoint));
203 }
const SeparableMetric * myMetricPtr
Pointer to the separable metric instance.
Definition VoronoiMap.h:406

References aPoint(), DGtal::VoronoiMap< TSpace, TPointPredicate, TSeparableMetric, TImageContainer >::myImagePtr, and DGtal::VoronoiMap< TSpace, TPointPredicate, TSeparableMetric, TImageContainer >::myMetricPtr.

◆ selfDisplay()

template<typename TSpace , typename TPointPredicate , typename TSeparableMetric , typename TImageContainer = ImageContainerBySTLVector< HyperRectDomain<TSpace>, typename TSpace::Vector >>
void DGtal::DistanceTransformation< TSpace, TPointPredicate, TSeparableMetric, TImageContainer >::selfDisplay ( std::ostream & out) const
inline

Self Display method.

Parameters
[out]outoutput stream

Definition at line 229 of file DistanceTransformation.h.

230 {
231 out << "[DistanceTransformation] underlying VoronoiMap={";
233 out << "}";
234 }
void selfDisplay(std::ostream &out) const

References DGtal::VoronoiMap< TSpace, TPointPredicate, TSeparableMetric, TImageContainer >::selfDisplay().


The documentation for this class was generated from the following file: