DGtal  0.9.4beta
Public Types | Public Member Functions | Protected Attributes | Private Member Functions
DGtal::ConstImageAdapter< TImageContainer, TNewDomain, TFunctorD, TNewValue, TFunctorV > Class Template Reference

#include <DGtal/images/ConstImageAdapter.h>

Public Types

typedef ConstImageAdapter< TImageContainer, TNewDomain, TFunctorD, TNewValue, TFunctorV > Self
 
typedef TNewDomain Domain
 
typedef TNewDomain::Point Point
 
typedef TNewValue Value
 
typedef TImageContainer ImageContainer
 
typedef DefaultConstImageRange< SelfConstRange
 

Public Member Functions

 BOOST_CONCEPT_ASSERT ((concepts::CConstImage< TImageContainer >))
 
 BOOST_CONCEPT_ASSERT ((concepts::CDomain< TNewDomain >))
 
 BOOST_CONCEPT_ASSERT ((concepts::CUnaryFunctor< TFunctorD, Point, typename TImageContainer::Point >))
 
 BOOST_CONCEPT_ASSERT ((concepts::CUnaryFunctor< TFunctorV, typename TImageContainer::Value, Value >))
 
 ConstImageAdapter (ConstAlias< ImageContainer > anImage, ConstAlias< Domain > aDomain, ConstAlias< TFunctorD > aFD, ConstAlias< TFunctorV > aFV)
 
ConstImageAdapteroperator= (const ConstImageAdapter &other)
 
 ~ConstImageAdapter ()
 
const Domaindomain () const
 
ConstRange constRange () const
 
Value operator() (const Point &aPoint) const
 
void selfDisplay (std::ostream &out) const
 
bool isValid () const
 
std::string className () const
 
const ImageContainergetPointer () const
 
void setDefaultValue (Value aValue)
 
Value getDefaultValue () const
 

Protected Attributes

const ImageContainermyImagePtr
 
const DomainmySubDomainPtr
 
const TFunctorD * myFD
 
const TFunctorV * myFV
 
Value defaultValue
 

Private Member Functions

 ConstImageAdapter ()
 

Detailed Description

template<typename TImageContainer, typename TNewDomain, typename TFunctorD, typename TNewValue, typename TFunctorV>
class DGtal::ConstImageAdapter< TImageContainer, TNewDomain, TFunctorD, TNewValue, TFunctorV >

Aim: implements a const image adapter with a given domain (i.e. a subdomain) and 2 functors : g for domain, f for accessing point values.

Description of template class 'ConstImageAdapter'

This class is (like Image class) a lightweight proxy on any models of CConstImage. It uses a given Domain (i.e. a subdomain) but work directly (for accessing process) thanks to an alias (i.e. a pointer) on the original Image given in argument.

ConstImageAdapter class is also a model of CConstImage.

Caution :

Template Parameters
TImageContaineran image container type (model of CConstImage).
TNewDomaina domain.
TFunctorDthe functor g that transforms the domain into another one
TNewValuethe type of value return by the functor f.
TFunctorVthe functor f that transforms the value into another one during reading process

The values associated to accessing the point values are adapted with a functor g and a functor f given at construction so that operator() calls f(img(g(aPoint))), instead of calling directly operator() of the underlying image img.

Here is the construction of a simple ConstImageAdapter that is a thresholded view of the initial scalar image:

typedef ConstImageAdapter<Image, Domain, functors::Identity, bool, DGtal::functors::Thresholder<Image::Value> > ConstImageAdapterForThresholderImage;
ConstImageAdapterForThresholderImage thresholderImage(image, domain, df, t);

NB: the underlying image as well as the 2 functors are stored in the adapter as aliasing pointer in order to avoid copies. The pointed objects must exist and must not be deleted during the use of the adapter

Examples:
geometry/volumes/distance/exampleFMM3D.cpp, images/exampleConstImageAdapter.cpp, images/exampleRigidtransformation2d.cpp, images/exampleRigidtransformation3d.cpp, images/extract2DImagesFrom3D.cpp, images/extract2DImagesFrom3DandVisu.cpp, images/extract2DSlicesImagesFrom3D.cpp, images/imageBasicSubsampling.cpp, io/viewers/viewer3D-8bis-2Dimages.cpp, and tutorial-examples/2DSliceImageFromVol.cpp.

Definition at line 105 of file ConstImageAdapter.h.

Member Typedef Documentation

template<typename TImageContainer, typename TNewDomain, typename TFunctorD, typename TNewValue, typename TFunctorV>
typedef DefaultConstImageRange<Self> DGtal::ConstImageAdapter< TImageContainer, TNewDomain, TFunctorD, TNewValue, TFunctorV >::ConstRange

Definition at line 128 of file ConstImageAdapter.h.

template<typename TImageContainer, typename TNewDomain, typename TFunctorD, typename TNewValue, typename TFunctorV>
typedef TNewDomain DGtal::ConstImageAdapter< TImageContainer, TNewDomain, TFunctorD, TNewValue, TFunctorV >::Domain

Definition at line 117 of file ConstImageAdapter.h.

template<typename TImageContainer, typename TNewDomain, typename TFunctorD, typename TNewValue, typename TFunctorV>
typedef TImageContainer DGtal::ConstImageAdapter< TImageContainer, TNewDomain, TFunctorD, TNewValue, TFunctorV >::ImageContainer

Types copied from the container.

Definition at line 126 of file ConstImageAdapter.h.

template<typename TImageContainer, typename TNewDomain, typename TFunctorD, typename TNewValue, typename TFunctorV>
typedef TNewDomain::Point DGtal::ConstImageAdapter< TImageContainer, TNewDomain, TFunctorD, TNewValue, TFunctorV >::Point

Definition at line 118 of file ConstImageAdapter.h.

template<typename TImageContainer, typename TNewDomain, typename TFunctorD, typename TNewValue, typename TFunctorV>
typedef ConstImageAdapter<TImageContainer, TNewDomain, TFunctorD, TNewValue, TFunctorV> DGtal::ConstImageAdapter< TImageContainer, TNewDomain, TFunctorD, TNewValue, TFunctorV >::Self

Definition at line 111 of file ConstImageAdapter.h.

template<typename TImageContainer, typename TNewDomain, typename TFunctorD, typename TNewValue, typename TFunctorV>
typedef TNewValue DGtal::ConstImageAdapter< TImageContainer, TNewDomain, TFunctorD, TNewValue, TFunctorV >::Value

Definition at line 119 of file ConstImageAdapter.h.

Constructor & Destructor Documentation

template<typename TImageContainer, typename TNewDomain, typename TFunctorD, typename TNewValue, typename TFunctorV>
DGtal::ConstImageAdapter< TImageContainer, TNewDomain, TFunctorD, TNewValue, TFunctorV >::ConstImageAdapter ( ConstAlias< ImageContainer anImage,
ConstAlias< Domain aDomain,
ConstAlias< TFunctorD >  aFD,
ConstAlias< TFunctorV >  aFV 
)
inline

Definition at line 134 of file ConstImageAdapter.h.

References DGtal::ConstImageAdapter< TImageContainer, TNewDomain, TFunctorD, TNewValue, TFunctorV >::defaultValue, DGtal::trace, and DGtal::Trace::warning().

139  :
140  myImagePtr(&anImage), mySubDomainPtr(&aDomain), myFD(&aFD), myFV(&aFV)
141  {
142  defaultValue = 0;
143 #ifdef DEBUG_VERBOSE
144  trace.warning() << "ConstImageAdapter Ctor fromRef " << std::endl;
145 #endif
146  }
Trace trace
Definition: Common.h:137
const ImageContainer * myImagePtr
Alias on the image container.
std::ostream & warning()
template<typename TImageContainer, typename TNewDomain, typename TFunctorD, typename TNewValue, typename TFunctorV>
DGtal::ConstImageAdapter< TImageContainer, TNewDomain, TFunctorD, TNewValue, TFunctorV >::~ConstImageAdapter ( )
inline

Destructor. Does nothing

Definition at line 174 of file ConstImageAdapter.h.

174 {}
template<typename TImageContainer, typename TNewDomain, typename TFunctorD, typename TNewValue, typename TFunctorV>
DGtal::ConstImageAdapter< TImageContainer, TNewDomain, TFunctorD, TNewValue, TFunctorV >::ConstImageAdapter ( )
inlineprivate

Default constructor.

Definition at line 279 of file ConstImageAdapter.h.

References DGtal::trace, and DGtal::Trace::warning().

279  {
280 #ifdef DEBUG_VERBOSE
281  trace.warning() << "ConstImageAdapter Ctor default " << std::endl;
282 #endif
283  }
Trace trace
Definition: Common.h:137
std::ostream & warning()

Member Function Documentation

template<typename TImageContainer, typename TNewDomain, typename TFunctorD, typename TNewValue, typename TFunctorV>
DGtal::ConstImageAdapter< TImageContainer, TNewDomain, TFunctorD, TNewValue, TFunctorV >::BOOST_CONCEPT_ASSERT ( (concepts::CConstImage< TImageContainer >)  )

Checking concepts.

template<typename TImageContainer, typename TNewDomain, typename TFunctorD, typename TNewValue, typename TFunctorV>
DGtal::ConstImageAdapter< TImageContainer, TNewDomain, TFunctorD, TNewValue, TFunctorV >::BOOST_CONCEPT_ASSERT ( (concepts::CDomain< TNewDomain >)  )
template<typename TImageContainer, typename TNewDomain, typename TFunctorD, typename TNewValue, typename TFunctorV>
DGtal::ConstImageAdapter< TImageContainer, TNewDomain, TFunctorD, TNewValue, TFunctorV >::BOOST_CONCEPT_ASSERT ( (concepts::CUnaryFunctor< TFunctorD, Point, typename TImageContainer::Point >)  )
template<typename TImageContainer, typename TNewDomain, typename TFunctorD, typename TNewValue, typename TFunctorV>
DGtal::ConstImageAdapter< TImageContainer, TNewDomain, TFunctorD, TNewValue, TFunctorV >::BOOST_CONCEPT_ASSERT ( (concepts::CUnaryFunctor< TFunctorV, typename TImageContainer::Value, Value >)  )
template<typename TImageContainer, typename TNewDomain, typename TFunctorD, typename TNewValue, typename TFunctorV>
std::string DGtal::ConstImageAdapter< TImageContainer, TNewDomain, TFunctorD, TNewValue, TFunctorV >::className ( ) const
Returns
the style name used for drawing this object.
template<typename TImageContainer, typename TNewDomain, typename TFunctorD, typename TNewValue, typename TFunctorV>
ConstRange DGtal::ConstImageAdapter< TImageContainer, TNewDomain, TFunctorD, TNewValue, TFunctorV >::constRange ( ) const
inline

Returns the range of the underlying image to iterate over its values

Returns
a range.

Definition at line 197 of file ConstImageAdapter.h.

198  {
199  return ConstRange( *this );
200  }
DefaultConstImageRange< Self > ConstRange
template<typename TImageContainer, typename TNewDomain, typename TFunctorD, typename TNewValue, typename TFunctorV>
const Domain& DGtal::ConstImageAdapter< TImageContainer, TNewDomain, TFunctorD, TNewValue, TFunctorV >::domain ( ) const
inline

Returns a reference to the underlying image domain.

Returns
a reference to the domain.

Definition at line 186 of file ConstImageAdapter.h.

References DGtal::ConstImageAdapter< TImageContainer, TNewDomain, TFunctorD, TNewValue, TFunctorV >::mySubDomainPtr.

Referenced by DGtal::ConstImageAdapter< TImageContainer, TNewDomain, TFunctorD, TNewValue, TFunctorV >::operator()().

187  {
188  return (*mySubDomainPtr);
189  }
template<typename TImageContainer, typename TNewDomain, typename TFunctorD, typename TNewValue, typename TFunctorV>
Value DGtal::ConstImageAdapter< TImageContainer, TNewDomain, TFunctorD, TNewValue, TFunctorV >::getDefaultValue ( ) const
inline
template<typename TImageContainer, typename TNewDomain, typename TFunctorD, typename TNewValue, typename TFunctorV>
const ImageContainer* DGtal::ConstImageAdapter< TImageContainer, TNewDomain, TFunctorD, TNewValue, TFunctorV >::getPointer ( ) const
inline

Returns the pointer on the Image container data.

Returns
a const ImagePtr.

Definition at line 254 of file ConstImageAdapter.h.

References DGtal::ConstImageAdapter< TImageContainer, TNewDomain, TFunctorD, TNewValue, TFunctorV >::myImagePtr.

255  {
256  return myImagePtr;
257  }
const ImageContainer * myImagePtr
Alias on the image container.
template<typename TImageContainer, typename TNewDomain, typename TFunctorD, typename TNewValue, typename TFunctorV>
bool DGtal::ConstImageAdapter< TImageContainer, TNewDomain, TFunctorD, TNewValue, TFunctorV >::isValid ( ) const
inline

Checks the validity/consistency of the object.

Returns
'true' if the object is valid, 'false' otherwise.

Definition at line 238 of file ConstImageAdapter.h.

References DGtal::ConstImageAdapter< TImageContainer, TNewDomain, TFunctorD, TNewValue, TFunctorV >::myImagePtr.

239  {
240  return (myImagePtr->isValid() );
241  }
const ImageContainer * myImagePtr
Alias on the image container.
template<typename TImageContainer, typename TNewDomain, typename TFunctorD, typename TNewValue, typename TFunctorV>
Value DGtal::ConstImageAdapter< TImageContainer, TNewDomain, TFunctorD, TNewValue, TFunctorV >::operator() ( const Point aPoint) const
inline

Get the value of an image at a given position given by a Point.

Precondition
the point must be in the domain
Parameters
aPointthe point.
Returns
the value at aPoint.

Definition at line 214 of file ConstImageAdapter.h.

References DGtal::ConstImageAdapter< TImageContainer, TNewDomain, TFunctorD, TNewValue, TFunctorV >::defaultValue, DGtal::ConstImageAdapter< TImageContainer, TNewDomain, TFunctorD, TNewValue, TFunctorV >::domain(), DGtal::ConstImageAdapter< TImageContainer, TNewDomain, TFunctorD, TNewValue, TFunctorV >::myFD, DGtal::ConstImageAdapter< TImageContainer, TNewDomain, TFunctorD, TNewValue, TFunctorV >::myFV, and DGtal::ConstImageAdapter< TImageContainer, TNewDomain, TFunctorD, TNewValue, TFunctorV >::myImagePtr.

215  {
216  ASSERT(this->domain().isInside(aPoint));
217 
218  typename TImageContainer::Point point = myFD->operator()(aPoint);
219  if (myImagePtr->domain().isInside(point))
220  return myFV->operator()(myImagePtr->operator()(point));
221  else
222  return defaultValue;
223  }
const Domain & domain() const
const ImageContainer * myImagePtr
Alias on the image container.
template<typename TImageContainer, typename TNewDomain, typename TFunctorD, typename TNewValue, typename TFunctorV>
ConstImageAdapter& DGtal::ConstImageAdapter< TImageContainer, TNewDomain, TFunctorD, TNewValue, TFunctorV >::operator= ( const ConstImageAdapter< TImageContainer, TNewDomain, TFunctorD, TNewValue, TFunctorV > &  other)
inline

Assignment.

Parameters
otherthe object to copy.
Returns
a reference on 'this'.

Definition at line 153 of file ConstImageAdapter.h.

References DGtal::ConstImageAdapter< TImageContainer, TNewDomain, TFunctorD, TNewValue, TFunctorV >::defaultValue, DGtal::ConstImageAdapter< TImageContainer, TNewDomain, TFunctorD, TNewValue, TFunctorV >::myFD, DGtal::ConstImageAdapter< TImageContainer, TNewDomain, TFunctorD, TNewValue, TFunctorV >::myFV, DGtal::ConstImageAdapter< TImageContainer, TNewDomain, TFunctorD, TNewValue, TFunctorV >::myImagePtr, DGtal::ConstImageAdapter< TImageContainer, TNewDomain, TFunctorD, TNewValue, TFunctorV >::mySubDomainPtr, DGtal::trace, and DGtal::Trace::warning().

154  {
155 #ifdef DEBUG_VERBOSE
156  trace.warning() << "ConstImageAdapter assignment " << std::endl;
157 #endif
158  if (&other != this)
159  {
160  myImagePtr = other.myImagePtr;
161  mySubDomainPtr = other.mySubDomainPtr;
162  myFD = other.myFD;
163  myFV = other.myFV;
164  defaultValue = other.defaultValue;
165  }
166  return *this;
167  }
Trace trace
Definition: Common.h:137
const ImageContainer * myImagePtr
Alias on the image container.
std::ostream & warning()
template<typename TImageContainer, typename TNewDomain, typename TFunctorD, typename TNewValue, typename TFunctorV>
void DGtal::ConstImageAdapter< TImageContainer, TNewDomain, TFunctorD, TNewValue, TFunctorV >::selfDisplay ( std::ostream &  out) const

Writes/Displays the object on an output stream.

Parameters
outthe output stream where the object is written.
template<typename TImageContainer, typename TNewDomain, typename TFunctorD, typename TNewValue, typename TFunctorV>
void DGtal::ConstImageAdapter< TImageContainer, TNewDomain, TFunctorD, TNewValue, TFunctorV >::setDefaultValue ( Value  aValue)
inline

Allows to define a default value returned when point transformed by domain functor does not belongs to image domain.

Definition at line 264 of file ConstImageAdapter.h.

References DGtal::ConstImageAdapter< TImageContainer, TNewDomain, TFunctorD, TNewValue, TFunctorV >::defaultValue.

265  {
266  defaultValue = aValue;
267  }

Field Documentation

template<typename TImageContainer, typename TNewDomain, typename TFunctorD, typename TNewValue, typename TFunctorV>
Value DGtal::ConstImageAdapter< TImageContainer, TNewDomain, TFunctorD, TNewValue, TFunctorV >::defaultValue
protected
template<typename TImageContainer, typename TNewDomain, typename TFunctorD, typename TNewValue, typename TFunctorV>
const TFunctorD* DGtal::ConstImageAdapter< TImageContainer, TNewDomain, TFunctorD, TNewValue, TFunctorV >::myFD
protected
template<typename TImageContainer, typename TNewDomain, typename TFunctorD, typename TNewValue, typename TFunctorV>
const TFunctorV* DGtal::ConstImageAdapter< TImageContainer, TNewDomain, TFunctorD, TNewValue, TFunctorV >::myFV
protected
template<typename TImageContainer, typename TNewDomain, typename TFunctorD, typename TNewValue, typename TFunctorV>
const ImageContainer* DGtal::ConstImageAdapter< TImageContainer, TNewDomain, TFunctorD, TNewValue, TFunctorV >::myImagePtr
protected
template<typename TImageContainer, typename TNewDomain, typename TFunctorD, typename TNewValue, typename TFunctorV>
const Domain* DGtal::ConstImageAdapter< TImageContainer, TNewDomain, TFunctorD, TNewValue, TFunctorV >::mySubDomainPtr
protected

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