DGtal  0.6.devel
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Public Types | Public Member Functions | Private Member Functions | Private Attributes
DGtal::ImageLinearCellEmbedder< TKSpace, TImage, TEmbedder > Class Template Reference

#include <ImageLinearCellEmbedder.h>

Public Types

typedef TKSpace KSpace
typedef TImage Image
typedef TEmbedder Embedder
typedef KSpace::Cell Cell
typedef KSpace::SCell SCell
typedef KSpace::Space Space
typedef Space::Point Point
typedef Space::RealPoint RealPoint
typedef Space::RealVector RealVector
typedef Space::Integer Integer
typedef Image::Value ImageValue
typedef Cell Argument
typedef RealPoint Value

Public Member Functions

 ImageLinearCellEmbedder ()
 ~ImageLinearCellEmbedder ()
 ImageLinearCellEmbedder (const ImageLinearCellEmbedder &other)
ImageLinearCellEmbedderoperator= (const ImageLinearCellEmbedder &other)
void init (const KSpace &K, const Image &f, const Embedder &e, ImageValue iso_value)
RealPoint embed (const Point &p) const
RealPoint embedCell (const Cell &cell) const
RealPoint embedSCell (const SCell &scell) const
RealPoint operator() (const Cell &cell) const
void selfDisplay (std::ostream &out) const
bool isValid () const

Private Member Functions

 BOOST_CONCEPT_ASSERT ((CImage< TImage >))

Private Attributes

const KSpacemyPtrK
const ImagemyPtrImage
const EmbeddermyPtrEmbedder
ImageValue myIsoValue

Detailed Description

template<typename TKSpace, typename TImage, typename TEmbedder>
class DGtal::ImageLinearCellEmbedder< TKSpace, TImage, TEmbedder >

Aim: a cellular embedder for images. (default constructible, copy constructible, assignable). Model of CCellEmbedder.

Description of template class 'ImageLinearCellEmbedder'

Template Parameters:
TKSpacethe cellular grid space definition.
TImagethe type of implicit function, a model of CImage.
TEmbedderthe type of digital embedder.
Todo:
assert dimensions of space, embedder and implicit function.

Definition at line 68 of file ImageLinearCellEmbedder.h.


Member Typedef Documentation

template<typename TKSpace, typename TImage, typename TEmbedder>
typedef Cell DGtal::ImageLinearCellEmbedder< TKSpace, TImage, TEmbedder >::Argument

Definition at line 84 of file ImageLinearCellEmbedder.h.

template<typename TKSpace, typename TImage, typename TEmbedder>
typedef KSpace::Cell DGtal::ImageLinearCellEmbedder< TKSpace, TImage, TEmbedder >::Cell

Definition at line 76 of file ImageLinearCellEmbedder.h.

template<typename TKSpace, typename TImage, typename TEmbedder>
typedef TEmbedder DGtal::ImageLinearCellEmbedder< TKSpace, TImage, TEmbedder >::Embedder

Definition at line 75 of file ImageLinearCellEmbedder.h.

template<typename TKSpace, typename TImage, typename TEmbedder>
typedef TImage DGtal::ImageLinearCellEmbedder< TKSpace, TImage, TEmbedder >::Image

Definition at line 74 of file ImageLinearCellEmbedder.h.

template<typename TKSpace, typename TImage, typename TEmbedder>
typedef Image::Value DGtal::ImageLinearCellEmbedder< TKSpace, TImage, TEmbedder >::ImageValue

Definition at line 83 of file ImageLinearCellEmbedder.h.

template<typename TKSpace, typename TImage, typename TEmbedder>
typedef Space::Integer DGtal::ImageLinearCellEmbedder< TKSpace, TImage, TEmbedder >::Integer

Definition at line 82 of file ImageLinearCellEmbedder.h.

template<typename TKSpace, typename TImage, typename TEmbedder>
typedef TKSpace DGtal::ImageLinearCellEmbedder< TKSpace, TImage, TEmbedder >::KSpace

Definition at line 73 of file ImageLinearCellEmbedder.h.

template<typename TKSpace, typename TImage, typename TEmbedder>
typedef Space::Point DGtal::ImageLinearCellEmbedder< TKSpace, TImage, TEmbedder >::Point

Definition at line 79 of file ImageLinearCellEmbedder.h.

template<typename TKSpace, typename TImage, typename TEmbedder>
typedef Space::RealPoint DGtal::ImageLinearCellEmbedder< TKSpace, TImage, TEmbedder >::RealPoint

Definition at line 80 of file ImageLinearCellEmbedder.h.

template<typename TKSpace, typename TImage, typename TEmbedder>
typedef Space::RealVector DGtal::ImageLinearCellEmbedder< TKSpace, TImage, TEmbedder >::RealVector

Definition at line 81 of file ImageLinearCellEmbedder.h.

template<typename TKSpace, typename TImage, typename TEmbedder>
typedef KSpace::SCell DGtal::ImageLinearCellEmbedder< TKSpace, TImage, TEmbedder >::SCell

Definition at line 77 of file ImageLinearCellEmbedder.h.

template<typename TKSpace, typename TImage, typename TEmbedder>
typedef KSpace::Space DGtal::ImageLinearCellEmbedder< TKSpace, TImage, TEmbedder >::Space

Definition at line 78 of file ImageLinearCellEmbedder.h.

template<typename TKSpace, typename TImage, typename TEmbedder>
typedef RealPoint DGtal::ImageLinearCellEmbedder< TKSpace, TImage, TEmbedder >::Value

Definition at line 85 of file ImageLinearCellEmbedder.h.


Constructor & Destructor Documentation

template<typename TKSpace , typename TImage , typename TEmbedder >
DGtal::ImageLinearCellEmbedder< TKSpace, TImage, TEmbedder >::ImageLinearCellEmbedder ( )
inline

Constructor. The object is not valid.

Definition at line 54 of file ImageLinearCellEmbedder.ih.

: myPtrK( 0 ), myPtrImage( 0 ), myPtrEmbedder( 0 )
{}
template<typename TKSpace , typename TImage , typename TEmbedder >
DGtal::ImageLinearCellEmbedder< TKSpace, TImage, TEmbedder >::~ImageLinearCellEmbedder ( )
inline

Destructor.

Definition at line 48 of file ImageLinearCellEmbedder.ih.

{}
template<typename TKSpace , typename TImage , typename TEmbedder >
DGtal::ImageLinearCellEmbedder< TKSpace, TImage, TEmbedder >::ImageLinearCellEmbedder ( const ImageLinearCellEmbedder< TKSpace, TImage, TEmbedder > &  other)
inline

Copy constructor.

Parameters:
otherthe object to copy.

Definition at line 61 of file ImageLinearCellEmbedder.ih.

: myPtrK( other.myPtrK ),
myPtrImage( other.myPtrImage ),
myPtrEmbedder( other.myPtrEmbedder ),
myIsoValue( other.myIsoValue )
{}

Member Function Documentation

template<typename TKSpace, typename TImage, typename TEmbedder>
DGtal::ImageLinearCellEmbedder< TKSpace, TImage, TEmbedder >::BOOST_CONCEPT_ASSERT ( (CImage< TImage >)  )
private
template<typename TKSpace , typename TImage , typename TEmbedder >
DGtal::ImageLinearCellEmbedder< TKSpace, TImage, TEmbedder >::RealPoint DGtal::ImageLinearCellEmbedder< TKSpace, TImage, TEmbedder >::embed ( const Point p) const
inline

Maps a digital point to its corresponding point in the Euclidean space.

Parameters:
pany digital point in the digital space.
Returns:
its embedding by the current embedder in the Euclidean space.

Definition at line 101 of file ImageLinearCellEmbedder.ih.

{
ASSERT( myPtrEmbedder != 0 );
return myPtrEmbedder->embed( p );
}
template<typename TKSpace , typename TImage , typename TEmbedder >
DGtal::ImageLinearCellEmbedder< TKSpace, TImage, TEmbedder >::RealPoint DGtal::ImageLinearCellEmbedder< TKSpace, TImage, TEmbedder >::embedCell ( const Cell cell) const
inline

Maps a cell to its corresponding point in the Euclidean space, by a linear guess of its position.

Parameters:
cellany cell in the cellular grid space.
Returns:
its embedding in the Euclidean space.

Definition at line 111 of file ImageLinearCellEmbedder.ih.

{
return this->operator()( cell );
}
template<typename TKSpace , typename TImage , typename TEmbedder >
DGtal::ImageLinearCellEmbedder< TKSpace, TImage, TEmbedder >::RealPoint DGtal::ImageLinearCellEmbedder< TKSpace, TImage, TEmbedder >::embedSCell ( const SCell scell) const
inline

Maps a signed cell to its corresponding point in the Euclidean space, by a linear guess of its position. NB: the signed is not used.

Parameters:
scellany cell in the cellular grid space.
Returns:
its embedding in the Euclidean space.

Definition at line 146 of file ImageLinearCellEmbedder.ih.

References DGtal::NumberTraits< T >::castToDouble().

{
ASSERT( this->isValid() );
// embed first the spel related to the cell.
Point p1( myPtrK->sCoords( scell ) );
RealPoint x1( embed( p1 ) );
ImageValue y1 = (*myPtrImage)( p1 );
for ( typename KSpace::DirIterator qit = myPtrK->sOrthDirs( scell );
qit != 0; ++qit )
{ // cell is closed along this dimension.
// estimate coordinate by interpolation, looking for f(...)=0.
Dimension k = *qit;
Point p2( p1 ); --p2[ k ];
RealPoint x2( embed( p2 ) );
ImageValue y2 = (*myPtrImage)( p2 );
x1[ k ] -= NumberTraits<ImageValue>::castToDouble( y1 - myIsoValue )
* ( x2[ k ] - x1[ k ] )
/ NumberTraits<ImageValue>::castToDouble( y2 - y1 );
}
return x1;
}
template<typename TKSpace , typename TImage , typename TEmbedder >
void DGtal::ImageLinearCellEmbedder< TKSpace, TImage, TEmbedder >::init ( const KSpace K,
const Image f,
const Embedder e,
ImageValue  iso_value 
)
inline

Initializes the embedder with the space K, the implicit function f, the digital embedder e.

Parameters:
Kany cellular grid space.
fan image
ea digital embedder (like a GaussDigitizer).
isothe threshold value that defines the linear embedding.

Definition at line 88 of file ImageLinearCellEmbedder.ih.

{
myPtrK = &K;
myPtrImage = &f;
myIsoValue = iso_value;
}
template<typename TKSpace , typename TImage , typename TEmbedder >
bool DGtal::ImageLinearCellEmbedder< TKSpace, TImage, TEmbedder >::isValid ( ) const
inline

Checks the validity/consistency of the object.

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

Definition at line 193 of file ImageLinearCellEmbedder.ih.

{
return ( myPtrK != 0 ) && ( myPtrImage != 0 ) && ( myPtrEmbedder != 0 );
}
template<typename TKSpace , typename TImage , typename TEmbedder >
DGtal::ImageLinearCellEmbedder< TKSpace, TImage, TEmbedder >::RealPoint DGtal::ImageLinearCellEmbedder< TKSpace, TImage, TEmbedder >::operator() ( const Cell cell) const
inline

Maps a cell to its corresponding point in the Euclidean space, by a linear guess of its position.

Parameters:
cellany cell in the cellular grid space.
Returns:
its embedding in the Euclidean space.

Definition at line 120 of file ImageLinearCellEmbedder.ih.

References DGtal::NumberTraits< T >::castToDouble().

{
ASSERT( this->isValid() );
// embed first the spel related to the cell.
Point p1( myPtrK->uCoords( cell ) );
RealPoint x1( embed( p1 ) );
ImageValue y1 = (*myPtrImage)( p1 );
for ( typename KSpace::DirIterator qit = myPtrK->uOrthDirs( cell );
qit != 0; ++qit )
{ // cell is closed along this dimension.
// estimate coordinate by interpolation, looking for f(...)=0.
Dimension k = *qit;
Point p2( p1 ); --p2[ k ];
RealPoint x2( embed( p2 ) );
ImageValue y2 = (*myPtrImage)( p2 );
x1[ k ] -= NumberTraits<ImageValue>::castToDouble( y1 - myIsoValue )
* ( x2[ k ] - x1[ k ] )
/ NumberTraits<ImageValue>::castToDouble( y2 - y1 );
}
return x1;
}
template<typename TKSpace , typename TImage , typename TEmbedder >
DGtal::ImageLinearCellEmbedder< TKSpace, TImage, TEmbedder > & DGtal::ImageLinearCellEmbedder< TKSpace, TImage, TEmbedder >::operator= ( const ImageLinearCellEmbedder< TKSpace, TImage, TEmbedder > &  other)
inline

Assignment.

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

Definition at line 72 of file ImageLinearCellEmbedder.ih.

References DGtal::ImageLinearCellEmbedder< TKSpace, TImage, TEmbedder >::myIsoValue, DGtal::ImageLinearCellEmbedder< TKSpace, TImage, TEmbedder >::myPtrEmbedder, DGtal::ImageLinearCellEmbedder< TKSpace, TImage, TEmbedder >::myPtrImage, and DGtal::ImageLinearCellEmbedder< TKSpace, TImage, TEmbedder >::myPtrK.

{
if ( this != &other )
{
myPtrK = other.myPtrK;
myPtrImage = other.myPtrImage;
myPtrEmbedder = other.myPtrEmbedder;
myIsoValue = other.myIsoValue;
}
return *this;
}
template<typename TKSpace , typename TImage , typename TEmbedder >
void DGtal::ImageLinearCellEmbedder< TKSpace, TImage, TEmbedder >::selfDisplay ( std::ostream &  out) const
inline

Writes/Displays the object on an output stream.

Parameters:
outthe output stream where the object is written.

Definition at line 180 of file ImageLinearCellEmbedder.ih.

{
out << "[ImageLinearCellEmbedder]";
}

Field Documentation

template<typename TKSpace, typename TImage, typename TEmbedder>
ImageValue DGtal::ImageLinearCellEmbedder< TKSpace, TImage, TEmbedder >::myIsoValue
private

The threshold value for the linear embedding.

Definition at line 191 of file ImageLinearCellEmbedder.h.

Referenced by DGtal::ImageLinearCellEmbedder< TKSpace, TImage, TEmbedder >::operator=().

template<typename TKSpace, typename TImage, typename TEmbedder>
const Embedder* DGtal::ImageLinearCellEmbedder< TKSpace, TImage, TEmbedder >::myPtrEmbedder
private

A pointer on the digital embedder.

Definition at line 189 of file ImageLinearCellEmbedder.h.

Referenced by DGtal::ImageLinearCellEmbedder< TKSpace, TImage, TEmbedder >::operator=().

template<typename TKSpace, typename TImage, typename TEmbedder>
const Image* DGtal::ImageLinearCellEmbedder< TKSpace, TImage, TEmbedder >::myPtrImage
private

A pointer on the image.

Definition at line 187 of file ImageLinearCellEmbedder.h.

Referenced by DGtal::ImageLinearCellEmbedder< TKSpace, TImage, TEmbedder >::operator=().

template<typename TKSpace, typename TImage, typename TEmbedder>
const KSpace* DGtal::ImageLinearCellEmbedder< TKSpace, TImage, TEmbedder >::myPtrK
private

A pointer on the cellular grid space.

Definition at line 185 of file ImageLinearCellEmbedder.h.

Referenced by DGtal::ImageLinearCellEmbedder< TKSpace, TImage, TEmbedder >::operator=().


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