$extrastylesheet
Olena  User documentation 2.1
An Image Processing Platform
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
mln::topo Namespace Reference

Namespaces

namespace  internal
namespace  skeleton

Classes

class  adj_higher_dim_connected_n_face_bkd_iter
class  adj_higher_dim_connected_n_face_fwd_iter
class  adj_higher_face_bkd_iter
class  adj_higher_face_fwd_iter
class  adj_lower_dim_connected_n_face_bkd_iter
class  adj_lower_dim_connected_n_face_fwd_iter
class  adj_lower_face_bkd_iter
class  adj_lower_face_fwd_iter
class  adj_lower_higher_face_bkd_iter
class  adj_lower_higher_face_fwd_iter
class  adj_m_face_bkd_iter
class  adj_m_face_fwd_iter
class  algebraic_face
 Algebraic face handle in a complex; the face dimension is dynamic. More...
class  algebraic_n_face
 Algebraic N-face handle in a complex. More...
class  center_only_iter
class  centered_bkd_iter_adapter
class  centered_fwd_iter_adapter
class  complex
 General complex of dimension D. More...
class  detach_cell
 A functor detaching a cell from a binary (probably complex-based) image. More...
class  detach_pair
 \ brief A functor detaching a simple pair from a binary (probably complex-based) image (elementary collapse operation). More...
class  detach_point
 Functor detaching a point from a binary image. More...
class  face
 Face handle in a complex; the face dimension is dynamic. More...
class  face_bkd_iter
class  face_data
class  face_data< 0u, 0u >
class  face_data< 0u, D >
class  face_data< D, D >
class  face_fwd_iter
class  faces_bkd_iter_
class  faces_fwd_iter_
struct  is_n_face
 A functor testing wheter a psite (presumably an mln::complex_psite) is an N -face. More...
struct  is_not_1d_isthmus
struct  is_not_end_point
 Functor determining whether a point is not an end point in image of type I, based on neighborhood of type N. More...
struct  is_simple_2d_t
class  is_simple_cell
 A predicate for the simplicity of a point based on the collapse property of the attachment. More...
class  is_simple_pair
 A predicate for the simplicity of a pair (or a face that might belong to a simple pair). More...
class  is_simple_point2d
 A predicate for the simplicity of an mln::point2d based on the mask-based criterion mln::topo::is_simple_2d. More...
class  is_simple_point3d
 A predicate for the simplicity of an mln::point3d based on a look-up table. More...
class  n_face
 N-face handle in a complex. More...
class  n_face_bkd_iter
class  n_face_fwd_iter
class  n_faces_set
 Set of face handles of dimension N. More...
struct  no_constraint
 A constraint functor always returning true. More...
class  static_n_face_bkd_iter
class  static_n_face_fwd_iter

Typedefs

typedef mln::value::int_u32 config_3d_t
typedef mln::value::int_u8 conn_number_t

Functions

template<typename I , typename N >
unsigned connectivity_number_2d (const Image< I > &ima, const Neighborhood< N > &nbh, const typename I::psite &p, bool b)
template<typename I >
conn_number_t connectivity_number_2d_c4 (const Image< I > &ima, const typename I::psite &p, bool ref_val)
template<typename I >
conn_number_t connectivity_number_2d_c8 (const Image< I > &ima, const typename I::psite &p, bool ref_val)
template<typename I >
conn_number_t connectivity_number_3d_c18 (const Image< I > &ima, const typename I::psite &p, bool ref_val)
template<typename I >
conn_number_t connectivity_number_3d_c26 (const Image< I > &ima, const typename I::psite &p, bool ref_val)
template<typename I >
conn_number_t connectivity_number_3d_c6 (const Image< I > &ima, const typename I::psite &p, bool ref_val)
template<typename I >
conn_number_t connectivity_number_3d_c6p (const Image< I > &ima, const typename I::psite &p, bool ref_val)
template<typename I , typename NH >
bool is_facet (const Image< I > &ima, const typename I::psite &f, const Neighborhood< NH > &higher_adj_nbh)
template<typename I , typename N >
bool is_simple_2d (const Image< I > &ima, const Neighborhood< N > &nbh, const typename I::psite &p)
template<unsigned D>
algebraic_face< D > make_algebraic_face (const face< D > &f, bool sign)
template<unsigned N, unsigned D>
algebraic_n_face< N, D > make_algebraic_n_face (const n_face< N, D > &f, bool sign)
template<unsigned N, unsigned D>
std::ostream & operator<< (std::ostream &ostr, const algebraic_n_face< N, D > &f)
template<unsigned D>
std::ostream & operator<< (std::ostream &ostr, const algebraic_face< D > &f)
template<unsigned N, unsigned D>
std::ostream & operator<< (std::ostream &ostr, const n_face< N, D > &f)
template<unsigned D>
std::ostream & operator<< (std::ostream &ostr, const face< D > &f)
template<unsigned D>
std::ostream & operator<< (std::ostream &ostr, const complex< D > &c)
template<unsigned D>
bool operator== (const complex< D > &lhs, const complex< D > &rhs)
template<unsigned D>
algebraic_face< D > operator- (const face< D > &f)
template<unsigned D>
algebraic_face< D > operator- (const algebraic_face< D > &f)
template<unsigned D>
bool operator== (const algebraic_face< D > &lhs, const algebraic_face< D > &rhs)
template<unsigned D>
bool operator!= (const algebraic_face< D > &lhs, const algebraic_face< D > &rhs)
template<unsigned D>
bool operator< (const algebraic_face< D > &lhs, const algebraic_face< D > &rhs)
template<unsigned N, unsigned D>
algebraic_n_face< N, D > operator- (const n_face< N, D > &f)
template<unsigned N, unsigned D>
algebraic_n_face< N, D > operator- (const algebraic_n_face< N, D > &f)
template<unsigned N, unsigned D>
bool operator== (const algebraic_n_face< N, D > &lhs, const algebraic_n_face< N, D > &rhs)
template<unsigned N, unsigned D>
bool operator!= (const algebraic_n_face< N, D > &lhs, const algebraic_n_face< N, D > &rhs)
template<unsigned N, unsigned D>
bool operator< (const algebraic_n_face< N, D > &lhs, const algebraic_n_face< N, D > &rhs)
template<unsigned D>
algebraic_n_face< 1, D > edge (const n_face< 0, D > &f1, const n_face< 0, D > &f2)
template<unsigned D>
bool operator== (const face< D > &lhs, const face< D > &rhs)
template<unsigned D>
bool operator!= (const face< D > &lhs, const face< D > &rhs)
template<unsigned D>
bool operator< (const face< D > &lhs, const face< D > &rhs)
template<unsigned N, unsigned D>
bool operator== (const n_face< N, D > &lhs, const n_face< N, D > &rhs)
template<unsigned N, unsigned D>
bool operator!= (const n_face< N, D > &lhs, const n_face< N, D > &rhs)
template<unsigned N, unsigned D>
bool operator< (const n_face< N, D > &lhs, const n_face< N, D > &rhs)
template<unsigned N, unsigned D>
n_faces_set< N, D > operator+ (const algebraic_n_face< N, D > &f1, const algebraic_n_face< N, D > &f2)
template<unsigned N, unsigned D>
n_faces_set< N, D > operator+ (const algebraic_n_face< N, D > &f1, const n_face< N, D > &f2)
template<unsigned N, unsigned D>
n_faces_set< N, D > operator+ (const n_face< N, D > &f1, const algebraic_n_face< N, D > &f2)
template<unsigned N, unsigned D>
n_faces_set< N, D > operator+ (const n_face< N, D > &f1, const n_face< N, D > &f2)
template<unsigned N, unsigned D>
n_faces_set< N, D > operator+ (const n_faces_set< N, D > &fs, const algebraic_n_face< N, D > &f)
template<unsigned N, unsigned D>
n_faces_set< N, D > operator+ (const n_faces_set< N, D > &fs, const n_face< N, D > &f)
template<unsigned N, unsigned D>
n_faces_set< N, D > & operator+= (n_faces_set< N, D > &fs, const algebraic_n_face< N, D > &f)
template<unsigned N, unsigned D>
n_faces_set< N, D > operator- (const algebraic_n_face< N, D > &f1, const algebraic_n_face< N, D > &f2)
template<unsigned N, unsigned D>
n_faces_set< N, D > operator- (const algebraic_n_face< N, D > &f1, const n_face< N, D > &f2)
template<unsigned N, unsigned D>
n_faces_set< N, D > operator- (const n_face< N, D > &f1, const algebraic_n_face< N, D > &f2)
template<unsigned N, unsigned D>
n_faces_set< N, D > operator- (const n_face< N, D > &f1, const n_face< N, D > &f2)
template<unsigned N, unsigned D>
n_faces_set< N, D > operator- (const n_faces_set< N, D > &fs, const algebraic_n_face< N, D > &f)
template<unsigned N, unsigned D>
n_faces_set< N, D > operator- (const n_faces_set< N, D > &fs, const n_face< N, D > &f)
template<unsigned N, unsigned D>
n_faces_set< N, D > & operator-= (n_faces_set< N, D > &fs, const algebraic_n_face< N, D > &f)

Detailed Description

Namespace of "point-wise" expression tools.

Typedef Documentation

Type of a 3D (neighborhood) configuration number (index).

Definition at line 67 of file connectivity_number_3d.hh.

Type of a connectivity number.

Note: The maximun number of connected components in the neighborhood of a point is necessarily lower or equal to half the number of neighbors. This number fits on an mln::value::int_u8 when the dimension is lower or equal to

Definition at line 61 of file connectivity_number_2d.hh.

Function Documentation

template<typename I , typename N >
unsigned mln::topo::connectivity_number_2d ( const Image< I > &  ima,
const Neighborhood< N > &  nbh,
const typename I::psite &  p,
bool  b 
)
inline

Compute the 2D connectivity number of a point.

Parameters
imaThe image the point belongs to.
nbhThe connectivity used (4- or 8-connectivity).
pThe location of the point.
bIf true, consider foreground (i.e. true) values of the neighborhood; otherwise, consider background (i.e. false) values.
Returns
The 2D connectivity number.
template<typename I >
conn_number_t mln::topo::connectivity_number_2d_c4 ( const Image< I > &  ima,
const typename I::psite &  p,
bool  ref_val 
)

Compute the 2D connectivity number of p within ima according to the 4-connectivity.

If ref_val is set to true, compute the number w.r.t. the foreground, otherwise compute it w.r.t. the background.

Parameters
imaThe image on which the connectivity number is computed.
pThe site the connectivity number of which is computed.
ref_valThe reference value, telling whether the foreground (true) or the background (false) is considered.
template<typename I >
conn_number_t mln::topo::connectivity_number_2d_c8 ( const Image< I > &  ima,
const typename I::psite &  p,
bool  ref_val 
)

Compute the 2D connectivity number of p within ima according to the 8-connectivity.

If ref_val is set to true, compute the number w.r.t. the foreground, otherwise compute it w.r.t. the background.

Parameters
imaThe image on which the connectivity number is computed.
pThe site the connectivity number of which is computed.
ref_valThe reference value, telling whether the foreground (true) or the background (false) is considered.
template<typename I >
conn_number_t mln::topo::connectivity_number_3d_c18 ( const Image< I > &  ima,
const typename I::psite &  p,
bool  ref_val 
)

Compute the 3D connectivity number of p within ima according to the 18-connectivity.

If ref_val is set to true, compute the number w.r.t. the foreground, otherwise compute it w.r.t. the background.

Parameters
imaThe image on which the connectivity number is computed.
pThe site the connectivity number of which is computed.
ref_valThe reference value, telling whether the foreground (true) or the background (false) is considered.
template<typename I >
conn_number_t mln::topo::connectivity_number_3d_c26 ( const Image< I > &  ima,
const typename I::psite &  p,
bool  ref_val 
)

Compute the 3D connectivity number of p within ima according to the 26-connectivity.

If ref_val is set to true, compute the number w.r.t. the foreground, otherwise compute it w.r.t. the background.

Parameters
imaThe image on which the connectivity number is computed.
pThe site the connectivity number of which is computed.
ref_valThe reference value, telling whether the foreground (true) or the background (false) is considered.
template<typename I >
conn_number_t mln::topo::connectivity_number_3d_c6 ( const Image< I > &  ima,
const typename I::psite &  p,
bool  ref_val 
)

Compute the 3D connectivity number of p within ima according to the 6-connectivity.

If ref_val is set to true, compute the number w.r.t. the foreground, otherwise compute it w.r.t. the background.

Note: The (6+)-connectivity is associated to the 18-connectivity, while the 6-connectivity is associated to the 26-connectivity.

Parameters
imaThe image on which the connectivity number is computed.
pThe site the connectivity number of which is computed.
ref_valThe reference value, telling whether the foreground (true) or the background (false) is considered.
template<typename I >
conn_number_t mln::topo::connectivity_number_3d_c6p ( const Image< I > &  ima,
const typename I::psite &  p,
bool  ref_val 
)

Compute the 3D connectivity number of p within ima according to the (6+)-connectivity.

If ref_val is set to true, compute the number w.r.t. the foreground, otherwise compute it w.r.t. the background.

Note: The 6-connectivity is associated to the 26-connectivity, while the (6+)-connectivity is associated to the 18-connectivity.

Parameters
imaThe image on which the connectivity number is computed.
pThe site the connectivity number of which is computed.
ref_valThe reference value, telling whether the foreground (true) or the background (false) is considered.
template<unsigned D>
algebraic_n_face<1, D> mln::topo::edge ( const n_face< 0, D > &  f1,
const n_face< 0, D > &  f2 
)

Helpers.

Return the algebraic 1-face (edge) linking the 0-faces (vertices) f1 and f2. If there is no 1-face between f1 and f2, return an invalid 1-face.

Precondition
f1 and f2 must belong to the same complex.

Note: this routine assumes the complex is not degenerated, i.e,

  • it does not check that f1 and f2 are the only 0-faces adjacent to an hypothetical 1-face; it just checks that f1 and f2 share a common 1-face;
  • if there are several ajacent 1-faces shared by f1 and f2 (if the complex is ill-formed), there is no guarantee on the returned 1-face (the current implementation return the first 1-face found, but client code should not rely on this implementation-defined behavior).
template<typename I , typename NH >
bool mln::topo::is_facet ( const Image< I > &  ima,
const typename I::psite &  f,
const Neighborhood< NH > &  higher_adj_nbh 
)

Is f a facet in image, i.e., a face not ``included in'' (adjacent to) a face of higher dimension?

Template Parameters
IThe type of the image.
NHThe neighborhood type returning the set of (n+1)-faces adjacent to a an n-face.
Parameters
imaThe complex image.
fA psite pointing to the face to examine.
higher_adj_nbhRelationship between an n-facet and its adjacent (n+1)-facets.
template<typename I , typename N >
bool mln::topo::is_simple_2d ( const Image< I > &  ima,
const Neighborhood< N > &  nbh,
const typename I::psite &  p 
)

Test if a point is simple or not.

A point of an object is simple if in its c8 neiborhood, there is exactly one connected component of the object, and only one connected component of the background Examples : ( | == object, - = background)

     - - |
     | P | Here p is simple in the c4 and c8 case.
     | | |

     - | -
     | P | Here p is never simple.
     | | |  
template<unsigned D>
algebraic_face<D> mln::topo::make_algebraic_face ( const face< D > &  f,
bool  sign 
)

Create an algebraic face handle of a D-complex.

template<unsigned N, unsigned D>
algebraic_n_face<N, D> mln::topo::make_algebraic_n_face ( const n_face< N, D > &  f,
bool  sign 
)

Create an algebraic N-face handle of a D-complex.

template<unsigned N, unsigned D>
bool mln::topo::operator!= ( const algebraic_n_face< N, D > &  lhs,
const algebraic_n_face< N, D > &  rhs 
)

Is lhs different from rhs?

Precondition
Arguments lhs and rhs must belong to the same mln::topo::complex.
template<unsigned D>
bool mln::topo::operator!= ( const algebraic_face< D > &  lhs,
const algebraic_face< D > &  rhs 
)

Is lhs different from rhs?

Precondition
Arguments lhs and rhs must belong to the same mln::topo::complex.
template<unsigned N, unsigned D>
bool mln::topo::operator!= ( const n_face< N, D > &  lhs,
const n_face< N, D > &  rhs 
)

Is lhs different from rhs?

Precondition
Arguments lhs and rhs must belong to the same mln::topo::complex.
template<unsigned D>
bool mln::topo::operator!= ( const face< D > &  lhs,
const face< D > &  rhs 
)

Is lhs different from rhs?

Precondition
Arguments lhs and rhs must belong to the same mln::topo::complex.
template<unsigned N, unsigned D>
n_faces_set<N, D> mln::topo::operator+ ( const algebraic_n_face< N, D > &  f1,
const algebraic_n_face< N, D > &  f2 
)

Addition.

template<unsigned N, unsigned D>
n_faces_set<N, D> mln::topo::operator+ ( const algebraic_n_face< N, D > &  f1,
const n_face< N, D > &  f2 
)
template<unsigned N, unsigned D>
n_faces_set<N, D> mln::topo::operator+ ( const n_face< N, D > &  f1,
const algebraic_n_face< N, D > &  f2 
)
template<unsigned N, unsigned D>
n_faces_set<N, D> mln::topo::operator+ ( const n_face< N, D > &  f1,
const n_face< N, D > &  f2 
)
template<unsigned N, unsigned D>
n_faces_set<N, D> mln::topo::operator+ ( const n_faces_set< N, D > &  fs,
const algebraic_n_face< N, D > &  f 
)
template<unsigned N, unsigned D>
n_faces_set<N, D> mln::topo::operator+ ( const n_faces_set< N, D > &  fs,
const n_face< N, D > &  f 
)
template<unsigned N, unsigned D>
n_faces_set<N, D>& mln::topo::operator+= ( n_faces_set< N, D > &  fs,
const algebraic_n_face< N, D > &  f 
)
template<unsigned N, unsigned D>
algebraic_n_face<N, D> mln::topo::operator- ( const n_face< N, D > &  f)

Inversion operators.

template<unsigned N, unsigned D>
algebraic_n_face<N, D> mln::topo::operator- ( const algebraic_n_face< N, D > &  f)
template<unsigned D>
algebraic_face<D> mln::topo::operator- ( const face< D > &  f)

Inversion operators.

template<unsigned D>
algebraic_face<D> mln::topo::operator- ( const algebraic_face< D > &  f)
template<unsigned N, unsigned D>
n_faces_set<N, D> mln::topo::operator- ( const algebraic_n_face< N, D > &  f1,
const algebraic_n_face< N, D > &  f2 
)

Subtraction.

template<unsigned N, unsigned D>
n_faces_set<N, D> mln::topo::operator- ( const algebraic_n_face< N, D > &  f1,
const n_face< N, D > &  f2 
)
template<unsigned N, unsigned D>
n_faces_set<N, D> mln::topo::operator- ( const n_face< N, D > &  f1,
const algebraic_n_face< N, D > &  f2 
)
template<unsigned N, unsigned D>
n_faces_set<N, D> mln::topo::operator- ( const n_face< N, D > &  f1,
const n_face< N, D > &  f2 
)
template<unsigned N, unsigned D>
n_faces_set<N, D> mln::topo::operator- ( const n_faces_set< N, D > &  fs,
const algebraic_n_face< N, D > &  f 
)
template<unsigned N, unsigned D>
n_faces_set<N, D> mln::topo::operator- ( const n_faces_set< N, D > &  fs,
const n_face< N, D > &  f 
)
template<unsigned N, unsigned D>
n_faces_set<N, D>& mln::topo::operator-= ( n_faces_set< N, D > &  fs,
const algebraic_n_face< N, D > &  f 
)
template<unsigned N, unsigned D>
bool mln::topo::operator< ( const algebraic_n_face< N, D > &  lhs,
const algebraic_n_face< N, D > &  rhs 
)

Is lhs ``less'' than rhs?

This comparison is required by algorithms sorting algebraic face handles.

Precondition
Arguments lhs and rhs must belong to the same mln::topo::complex.
template<unsigned D>
bool mln::topo::operator< ( const algebraic_face< D > &  lhs,
const algebraic_face< D > &  rhs 
)

Is lhs ``less'' than rhs?

This comparison is required by algorithms sorting algebraic face handles.

Precondition
Arguments lhs and rhs must belong to the same mln::topo::complex.
Arguments lhs and rhs must have the same dimension.
template<unsigned N, unsigned D>
bool mln::topo::operator< ( const n_face< N, D > &  lhs,
const n_face< N, D > &  rhs 
)

Is lhs ``less'' than rhs?

This comparison is required by algorithms sorting face handles.

Precondition
Arguments lhs and rhs must belong to the same mln::topo::complex.
template<unsigned D>
bool mln::topo::operator< ( const face< D > &  lhs,
const face< D > &  rhs 
)

Is lhs ``less'' than rhs?

This comparison is required by algorithms sorting face handles.

Precondition
Arguments lhs and rhs must belong to the same mln::topo::complex.
Arguments lhs and rhs must have the same dimension.
template<unsigned N, unsigned D>
std::ostream& mln::topo::operator<< ( std::ostream &  ostr,
const algebraic_n_face< N, D > &  f 
)
template<unsigned D>
std::ostream& mln::topo::operator<< ( std::ostream &  ostr,
const algebraic_face< D > &  f 
)
template<unsigned N, unsigned D>
std::ostream& mln::topo::operator<< ( std::ostream &  ostr,
const n_face< N, D > &  f 
)

Print an mln::topo::n_face.

template<unsigned D>
std::ostream& mln::topo::operator<< ( std::ostream &  ostr,
const face< D > &  f 
)

Print an mln::topo::face.

template<unsigned D>
std::ostream& mln::topo::operator<< ( std::ostream &  ostr,
const complex< D > &  c 
)

Pretty print a complex.

template<unsigned N, unsigned D>
bool mln::topo::operator== ( const algebraic_n_face< N, D > &  lhs,
const algebraic_n_face< N, D > &  rhs 
)

Comparison of two instances of mln::topo::algebraic_n_face.

Is lhs equal to rhs?

Precondition
Arguments lhs and rhs must belong to the same mln::topo::complex.
template<unsigned D>
bool mln::topo::operator== ( const algebraic_face< D > &  lhs,
const algebraic_face< D > &  rhs 
)

Comparison of two instances of mln::topo::algebraic_face.

Is lhs equal to rhs?

Precondition
Arguments lhs and rhs must belong to the same mln::topo::complex.
template<unsigned N, unsigned D>
bool mln::topo::operator== ( const n_face< N, D > &  lhs,
const n_face< N, D > &  rhs 
)

Comparison of two instances of mln::topo::n_face.

Is lhs equal to rhs?

Precondition
Arguments lhs and rhs must belong to the same mln::topo::complex.
template<unsigned D>
bool mln::topo::operator== ( const face< D > &  lhs,
const face< D > &  rhs 
)

Comparison of two instances of mln::topo::face.

Is lhs equal to rhs?

Precondition
Arguments lhs and rhs must belong to the same mln::topo::complex.
template<unsigned D>
bool mln::topo::operator== ( const complex< D > &  lhs,
const complex< D > &  rhs 
)

Compare two complexes for equality.