Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | Private Types

mln::labeled_image_base< I, E > Class Template Reference

Base class Morpher providing an improved interface for labeled image. More...

#include <labeled_image_base.hh>

Inheritance diagram for mln::labeled_image_base< I, E >:
Inheritance graph

List of all members.

Public Types

typedef accu::shape::bbox
< typename I::psite >::result 
bbox_t
 Type of the bounding component bounding boxes.
typedef I::domain_t::bkd_piter bkd_piter
 Backward Site_Iterator associated type.
typedef Image< void > category
typedef const I delegatee
 Delegatee associated type.
typedef I::domain_t domain_t
 Site_Set associated type.
typedef E exact_t
typedef I::domain_t::fwd_piter fwd_piter
 Forward Site_Iterator associated type.
typedef
internal::morpher_lvalue_
< const I >::ret 
lvalue
 Return type of read-write access.
typedef fwd_piter piter
 Site_Iterator associated type; default definition is fwd_piter.
typedef I::domain_t::psite psite
 Point_Site associated type.
typedef const I::rvalue rvalue
 Return type of read-only access.
typedef I::domain_t::site site
 Site associated type.
typedef mln::value::set< const
I::value > 
t_eligible_values_set
 Eligible-value-set associated type.
typedef mln::value::set
< typename
mln::value::super_value< const
I::value >::ret
t_values_space
 Value space associated type.
typedef const I unmorph
 Unmorph image associated type.
typedef const I::value value
 Value associated type.

Public Member Functions

const bbox_tbbox (const typename I::value &label) const
 Return the bounding box of the component label.
const util::array< bbox_t > & bboxes () const
 Return the component bounding boxes.
mln::metal::const_< const I >
::ret
delegatee_ () const
 Return the delegatee_ pointer; default code.
const I * delegatee_ ()
 Return the delegatee_ pointer (non-const version); default code.
void destroy ()
 Detach data from an image (free it if nobody else hold it).
const const I::domain_t & domain () const
bool has (const psite &p) const
 Test if p belongs to the image domain.
bool has (const typename const I::psite &p) const
const util::tracked_ptr
< internal::data< E > > & 
hook_data_ () const
 Hook to the image data.
const void * id_ () const
 Give an identifier of this image.
unsigned index_of_point (const P &p) const
 Give the offset of the site p.
bool is_valid () const
 Test if this image has been initialized; default impl.
I::value nlabels () const
 Return the number of labels;.
std::size_t nsites () const
 Give the number of sites of the image domain.
rvalue operator() (const typename I::domain_t::psite &p) const
 Read-only access of pixel value at point site p.
lvalue operator() (const typename I::domain_t::psite &p)
 Read-write access of pixel value at point site p.
E & rw ()
 State that the morpher is writable.
p_if< mln_box(I),
fun::eq_v2b_expr_< pw::value_
< I >, pw::cst_< typename
I::value > > > 
subdomain (const typename I::value &label) const
 Return the domain of the component with label label.
mln::metal::const_< const I >
::ret
unmorph_ () const
 Give the morphed image (const version).
const I & unmorph_ ()
 Give the morphed image (mutable version).
const t_eligible_values_setvalues_eligible () const
const t_values_spacevalues_space () const
 Return the value space of the image.

 labeled_image_base ()
 ConstructorsConstructor without argument.

template<typename F >
void relabel (const Function_v2v< F > &f)
 Relabel according to a function.
template<typename F >
void relabel (const Function_v2b< F > &f)
 Labels may be removed.

Protected Member Functions

template<typename F >
void relabel_ (const Function_v2v< F > &f)
template<typename F >
void relabel_ (const Function_v2b< F > &f)
void update_data (const fun::i2v::array< typename I::value > &relabel_fun)
 Update bounding boxes information.

void init_update_data_ ()
 Called during relabeling.
void prepare_update_data_ (const typename I::value &lbl, const typename I::value &new_lbl)
void update_data_ (const fun::i2v::array< typename I::value > &relabel_fun)

Protected Attributes

util::tracked_ptr
< internal::data< E > > 
data_

Private Types

typedef
internal::image_identity
< const I, typename
I::domain_t, E > 
super_

Detailed Description

template<typename I, typename E>
class mln::labeled_image_base< I, E >

Base class Morpher providing an improved interface for labeled image.

Template Parameters:
I The label image type.

This image type allows to access every site set at a given label.

This image type guaranties that labels are contiguous (from 1 to n).

Definition at line 116 of file labeled_image_base.hh.


Member Typedef Documentation

template<typename I, typename E>
typedef accu::shape::bbox<typename I ::psite>::result mln::labeled_image_base< I, E >::bbox_t

Type of the bounding component bounding boxes.

Definition at line 124 of file labeled_image_base.hh.

typedef I::domain_t ::bkd_piter mln::internal::image_base< const I::value , I::domain_t , E >::bkd_piter [inherited]

Backward Site_Iterator associated type.

Definition at line 118 of file core/internal/image_base.hh.

template<typename E>
typedef Image<void> mln::Image< E >::category [inherited]

Reimplemented from mln::Object< E >.

Definition at line 75 of file core/concept/image.hh.

typedef const I mln::internal::image_morpher< const I , const I::value , I::domain_t , E >::delegatee [inherited]

Delegatee associated type.

Definition at line 57 of file image_morpher.hh.

typedef I::domain_t mln::internal::image_base< const I::value , I::domain_t , E >::domain_t [inherited]

Site_Set associated type.

Definition at line 105 of file core/internal/image_base.hh.

template<typename E>
typedef E mln::Object< E >::exact_t [inherited]

Definition at line 173 of file object.hh.

typedef I::domain_t ::fwd_piter mln::internal::image_base< const I::value , I::domain_t , E >::fwd_piter [inherited]

Forward Site_Iterator associated type.

Definition at line 115 of file core/internal/image_base.hh.

typedef internal::morpher_lvalue_< const I >::ret mln::internal::image_identity< const I , I::domain_t , E >::lvalue [inherited]

Return type of read-write access.

Definition at line 140 of file image_identity.hh.

typedef fwd_piter mln::internal::image_base< const I::value , I::domain_t , E >::piter [inherited]

Site_Iterator associated type; default definition is fwd_piter.

Definition at line 123 of file core/internal/image_base.hh.

typedef I::domain_t ::psite mln::internal::image_base< const I::value , I::domain_t , E >::psite [inherited]

Point_Site associated type.

Definition at line 108 of file core/internal/image_base.hh.

typedef const I ::rvalue mln::internal::image_identity< const I , I::domain_t , E >::rvalue [inherited]

Return type of read-only access.

Definition at line 137 of file image_identity.hh.

typedef I::domain_t ::site mln::internal::image_base< const I::value , I::domain_t , E >::site [inherited]

Site associated type.

Definition at line 111 of file core/internal/image_base.hh.

template<typename I, typename E>
typedef internal::image_identity< const I, typename I ::domain_t, E > mln::labeled_image_base< I, E >::super_ [private]

Reimplemented in mln::labeled_image< I >.

Definition at line 120 of file labeled_image_base.hh.

typedef mln::value::set<const I::value > mln::internal::image_base< const I::value , I::domain_t , E >::t_eligible_values_set [inherited]

Eligible-value-set associated type.

Definition at line 91 of file core/internal/image_base.hh.

typedef mln::value::set< typename mln::value::super_value<const I::value >::ret > mln::internal::image_base< const I::value , I::domain_t , E >::t_values_space [inherited]

Value space associated type.

Definition at line 98 of file core/internal/image_base.hh.

typedef const I mln::internal::image_morpher< const I , const I::value , I::domain_t , E >::unmorph [inherited]

Unmorph image associated type.

Definition at line 68 of file image_morpher.hh.

typedef const I ::value mln::internal::image_identity< const I , I::domain_t , E >::value [inherited]

Value associated type.

Reimplemented from mln::internal::image_base< const I::value, I::domain_t, E >.

Definition at line 134 of file image_identity.hh.


Constructor & Destructor Documentation

template<typename I , typename E >
mln::labeled_image_base< I, E >::labeled_image_base (  )  [inline]

ConstructorsConstructor without argument.

Definition at line 217 of file labeled_image_base.hh.


Member Function Documentation

template<typename I, typename E >
const labeled_image_base< I, E >::bbox_t & mln::labeled_image_base< I, E >::bbox ( const typename I::value &  label  )  const

Return the bounding box of the component label.

Definition at line 305 of file labeled_image_base.hh.

References mln::internal::image_base< const I::value, I::domain_t, E >::data_.

Referenced by mln::labeled_image_base< I, E >::subdomain().

template<typename I , typename E >
const util::array< typename labeled_image_base< I, E >::bbox_t > & mln::labeled_image_base< I, E >::bboxes (  )  const

Return the component bounding boxes.

Definition at line 313 of file labeled_image_base.hh.

References mln::internal::image_base< const I::value, I::domain_t, E >::data_.

mln::metal::const_< const I >::ret* mln::internal::image_morpher< const I , const I::value , I::domain_t , E >::delegatee_ (  )  const [inherited]

Return the delegatee_ pointer; default code.

const I * mln::internal::image_morpher< const I , const I::value , I::domain_t , E >::delegatee_ (  )  [inherited]

Return the delegatee_ pointer (non-const version); default code.

void mln::internal::image_base< const I::value , I::domain_t , E >::destroy (  )  [inherited]

Detach data from an image (free it if nobody else hold it).

const const I ::domain_t& mln::internal::image_identity< const I , I::domain_t , E >::domain (  )  const [inherited]
bool mln::internal::image_base< const I::value , I::domain_t , E >::has ( const psite p  )  const [inherited]

Test if p belongs to the image domain.

bool mln::internal::image_identity< const I , I::domain_t , E >::has ( const typename const I ::psite p  )  const [inherited]
const util::tracked_ptr< internal::data<E> >& mln::internal::image_base< const I::value , I::domain_t , E >::hook_data_ (  )  const [inherited]

Hook to the image data.

const void* mln::internal::image_base< const I::value , I::domain_t , E >::id_ (  )  const [inherited]

Give an identifier of this image.

When several image variables designate the same image, they share the same identifier.

unsigned mln::internal::check::image_fastest_< E, mln::metal::equal< mln_trait_image_speed(E), trait::image::speed::fastest >::eval >::index_of_point ( const P &  p  )  const [inherited]

Give the offset of the site p.

Parameters:
[in] p A site.
Warning:
This method is final.
Precondition:
The image has to be initialized and to own the point p.
Postcondition:
p == point_at_index(result)
template<typename I , typename E >
void mln::labeled_image_base< I, E >::init_update_data_ (  )  [protected]

Called during relabeling.

Definition at line 369 of file labeled_image_base.hh.

bool mln::internal::image_morpher< const I , const I::value , I::domain_t , E >::is_valid (  )  const [inherited]

Test if this image has been initialized; default impl.

Reimplemented from mln::internal::image_base< const I::value, I::domain_t, E >.

template<typename I , typename E >
I::value mln::labeled_image_base< I, E >::nlabels (  )  const [inline]

Return the number of labels;.

Definition at line 273 of file labeled_image_base.hh.

std::size_t mln::internal::image_base< const I::value , I::domain_t , E >::nsites (  )  const [inherited]

Give the number of sites of the image domain.

rvalue mln::internal::image_identity< const I , I::domain_t , E >::operator() ( const typename I::domain_t ::psite p  )  const [inherited]

Read-only access of pixel value at point site p.

lvalue mln::internal::image_identity< const I , I::domain_t , E >::operator() ( const typename I::domain_t ::psite p  )  [inherited]

Read-write access of pixel value at point site p.

template<typename I, typename E >
void mln::labeled_image_base< I, E >::prepare_update_data_ ( const typename I::value &  lbl,
const typename I::value &  new_lbl 
) [protected]

Definition at line 359 of file labeled_image_base.hh.

template<typename I , typename E >
template<typename F >
void mln::labeled_image_base< I, E >::relabel ( const Function_v2b< F > &  f  )  [inline]

Labels may be removed.

This overload make sure the labeling is still contiguous.

Definition at line 252 of file labeled_image_base.hh.

References mln::internal::image_base< const I::value, I::domain_t, E >::data_, mln::exact(), mln::labeling::relabel_inplace(), mln::make::relabelfun(), and mln::labeled_image_base< I, E >::update_data().

template<typename I , typename E >
template<typename F >
void mln::labeled_image_base< I, E >::relabel ( const Function_v2v< F > &  f  )  [inline]

Relabel according to a function.

Merge or delete labels according to the given function. This method ensures that the labeling remains contiguous.

We may have merged or deleted labels.

Definition at line 226 of file labeled_image_base.hh.

References mln::internal::image_base< const I::value, I::domain_t, E >::data_, mln::exact(), mln::labeling::relabel_inplace(), mln::make::relabelfun(), and mln::labeled_image_base< I, E >::update_data().

template<typename I , typename E >
template<typename F >
void mln::labeled_image_base< I, E >::relabel_ ( const Function_v2v< F > &  f  )  [protected]

Definition at line 333 of file labeled_image_base.hh.

template<typename I , typename E >
template<typename F >
void mln::labeled_image_base< I, E >::relabel_ ( const Function_v2b< F > &  f  )  [protected]

Definition at line 342 of file labeled_image_base.hh.

E& mln::internal::image_morpher< const I , const I::value , I::domain_t , E >::rw (  )  [inherited]

State that the morpher is writable.

This allows for C++ to use it as a mutable object even if it is a temporary object.

template<typename I, typename E >
p_if< mln_box(I), fun::eq_v2b_expr_< pw::value_< I >, pw::cst_< typename I::value > > > mln::labeled_image_base< I, E >::subdomain ( const typename I::value &  label  )  const

Return the domain of the component with label label.

Definition at line 322 of file labeled_image_base.hh.

References mln::labeled_image_base< I, E >::bbox(), mln::pw::cst(), mln::internal::image_base< const I::value, I::domain_t, E >::data_, and mln::pw::value().

mln::metal::const_< const I >::ret& mln::internal::image_morpher< const I , const I::value , I::domain_t , E >::unmorph_ (  )  const [inherited]

Give the morphed image (const version).

const I & mln::internal::image_morpher< const I , const I::value , I::domain_t , E >::unmorph_ (  )  [inherited]

Give the morphed image (mutable version).

template<typename I, typename E >
void mln::labeled_image_base< I, E >::update_data ( const fun::i2v::array< typename I::value > &  relabel_fun  )  [protected]
template<typename I, typename E >
void mln::labeled_image_base< I, E >::update_data_ ( const fun::i2v::array< typename I::value > &  relabel_fun  )  [protected]

Definition at line 350 of file labeled_image_base.hh.

const t_eligible_values_set& mln::internal::image_base< const I::value , I::domain_t , E >::values_eligible (  )  const [inherited]
const t_values_space& mln::internal::image_base< const I::value , I::domain_t , E >::values_space (  )  const [inherited]

Return the value space of the image.


Member Data Documentation

util::tracked_ptr< internal::data<E> > mln::internal::image_base< const I::value , I::domain_t , E >::data_ [protected, inherited]