Classes | Functions | Variables
Mathematical morphology

Classes

struct  i3d::SCompTreeNodeListElem< T >
 Representation of a single item in list of component tree nodes. More...
struct  i3d::SCompTreeNodeList< T >
 Representation of a list of component tree nodes. More...
struct  i3d::SCompTreeNode< T >
 Representation of a single component tree node. More...
class  i3d::CCompTreeNodeAttribHandler< T >
 General empty handler of the additional attributes associated to the component tree node. More...
class  i3d::CCompTreeNodeAttribHandlerPHAV< T >
 Handler of the additional attributes associated to the component tree node - parent, height, area, volume. More...
struct  i3d::SCompTree< T >
 Representation of the component tree. More...
struct  i3d::minimum< T >
struct  i3d::maximum< T >
class  i3d::less_than< T >
class  i3d::greater_than< T >

Functions

template<typename T >
I3D_ALGO_EXPORT void i3d::PrintSCompTreeNode (std::ostream &ost, const SCompTreeNode< T > *compTreeNode, CCompTreeNodeAttribHandler< T > *atribHandler, size_t level)
template<typename T >
I3D_ALGO_EXPORT std::ostream & i3d::operator<< (std::ostream &ost, const SCompTree< T > &compTree)
template<typename T >
I3D_ALGO_EXPORT std::ostream & i3d::operator<< (std::ostream &ost, const SCompTree< T > *compTree)
template<typename T >
I3D_ALGO_EXPORT void i3d::BuildComponentTree (const Image3d< T > &input, SCompTree< T > &componentTree, const Neighbourhood &neighbourhood)
template<typename T >
I3D_ALGO_EXPORT void i3d::BuildComponentTree (const Image3d< T > &input, SCompTree< T > &componentTree, NeighbourhoodWalker &nbhWalker)
template<class T >
void i3d::Dilation (const Image3d< T > &in, Image3d< T > &out, const Neighbourhood &neib)
template<class T >
void i3d::LocalDilation (const Image3d< T > &in, Image3d< T > &out, const Image3d< bool > &mask, const Neighbourhood &neib)
template<class T >
void i3d::Erosion (const Image3d< T > &in, Image3d< T > &out, const Neighbourhood &neib)
template<class T >
void i3d::LocalErosion (const Image3d< T > &in, Image3d< T > &out, const Image3d< bool > &mask, const Neighbourhood &neib)
template<class T >
void i3d::Closing (const Image3d< T > &in, Image3d< T > &out, const Neighbourhood &neib)
template<class T >
void i3d::LocalClosing (const Image3d< T > &in, Image3d< T > &out, const Image3d< bool > &mask, const Neighbourhood &neib)
template<class T >
void i3d::Closing (Image3d< T > &in, const Neighbourhood &neib)
template<class T >
void i3d::Opening (const Image3d< T > &in, Image3d< T > &out, const Neighbourhood &neigh)
template<class T >
void i3d::LocalOpening (const Image3d< T > &in, Image3d< T > &out, const Image3d< bool > &mask, const Neighbourhood &neib)
template<class T >
void i3d::Opening (Image3d< T > &in, const Neighbourhood &neib)
template<class T >
void i3d::WhiteTopHat (const Image3d< T > &in, Image3d< T > &out, const Neighbourhood &neib)
template<class T >
void i3d::BlackTopHat (const Image3d< T > &in, Image3d< T > &out, const Neighbourhood &neib)
template<class T >
void i3d::TopHat (Image3d< T > &in, const Neighbourhood &neib)
template<class T >
void i3d::HitOrMiss (const Image3d< T > &in, Image3d< T > &out, const Neighbourhood &b, const Neighbourhood &w)
template<class T >
void i3d::Thinning (const Image3d< T > &in, Image3d< T > &out, const Neighbourhood &b, const Neighbourhood &w)
template<class T >
void i3d::Thicking (const Image3d< T > &in, Image3d< T > &out, const Neighbourhood &b, const Neighbourhood &w)
template<class T >
I3D_ALGO_EXPORT void i3d::DilationO (const Image3d< T > &in, Image3d< T > &out, const int radius_size)
template<class T >
I3D_ALGO_EXPORT void i3d::ErosionO (const Image3d< T > &in, Image3d< T > &out, const int radius_size)
template<class T >
I3D_ALGO_EXPORT void i3d::ClosingO (const Image3d< T > &in, Image3d< T > &out, const int radius_size)
template<class T >
I3D_ALGO_EXPORT void i3d::OpeningO (const Image3d< T > &in, Image3d< T > &out, const int radius_size)
template<class T >
I3D_ALGO_EXPORT void i3d::WhiteTopHatO (const Image3d< T > &in, Image3d< T > &out, const int radius_size)
template<class T >
I3D_ALGO_EXPORT void i3d::BlackTopHatO (const Image3d< T > &in, Image3d< T > &out, const int radius_size)
template<class T >
I3D_ALGO_EXPORT void i3d::MaximaDynamic (const Image3d< T > &in, Image3d< bool > &out, const T dynamic)
I3D_ALGO_EXPORT void i3d::Dilation (const Image3d< bool > &in, Image3d< bool > &out, const float radius)
I3D_ALGO_EXPORT void i3d::Erosion (const Image3d< bool > &in, Image3d< bool > &out, const float radius)
I3D_ALGO_EXPORT void i3d::Closing (const Image3d< bool > &in, Image3d< bool > &out, const float radius)
I3D_ALGO_EXPORT void i3d::Opening (const Image3d< bool > &in, Image3d< bool > &out, const float radius)
template<class T >
void i3d::Geodesic_dilation (const Image3d< T > &marker, const Image3d< T > &mask, Image3d< T > &out, const Neighbourhood &neib)
template<class T >
void i3d::Geodesic_erosion (const Image3d< T > &marker, const Image3d< T > &mask, Image3d< T > &out, const Neighbourhood &neib)
template<class T >
void i3d::h_Max (const Image3d< T > &in, T h, Image3d< T > &out)
template<class T >
void i3d::HRA_h_Max (const Image3d< T > &in, T h, Image3d< T > &out)
template<class T >
void i3d::h_Convex (const Image3d< T > &in, T h, Image3d< T > &out)
template<class T >
void i3d::r_Max_bysweeping (const Image3d< T > &in, Image3d< T > &out)
template<typename T >
void i3d::r_Max (const Image3d< T > &in, Image3d< T > &out, const Neighbourhood &neib)
template<typename T >
void i3d::HRA_r_Max (const Image3d< T > &in, Image3d< T > &out, const Neighbourhood &neib)
template<typename T >
void i3d::r_Min (const Image3d< T > &in, Image3d< T > &out, const Neighbourhood &neib)
template<typename T >
void i3d::HRA_r_Min (const Image3d< T > &in, Image3d< T > &out, const Neighbourhood &neib)
template<class T >
void i3d::e_Max (const Image3d< T > &in, T h, Image3d< T > &out, const Neighbourhood &neib)
template<class T >
void i3d::HRA_e_Max (const Image3d< T > &in, T h, Image3d< T > &out, const Neighbourhood &neib)
template<class T >
void i3d::impose_minima (Image3d< T > &in_out, const Image3d< bool > &mask_bin)
template<class T >
void i3d::Fillhole (const Image3d< T > &in, Image3d< T > &out)
template<class T , class F , class G >
void i3d::Reconstruction_by_DilEro (const Image3d< T > &marker, const Image3d< T > &mask, Image3d< T > &out, const Neighbourhood &neib, F func_f, G func_g)
template<class T , class F , class G >
void i3d::Reconstruction_by_DilEro (const Image3d< T > &marker, const Image3d< T > &mask, Image3d< T > &out, F func_f, G func_g)
template<class T >
void i3d::Reconstruction_by_dilation (const Image3d< T > &marker, const Image3d< T > &mask, Image3d< T > &out, const Neighbourhood &neib)
template<class T >
void i3d::Reconstruction_by_dilation (const Image3d< T > &marker, const Image3d< T > &mask, Image3d< T > &out)
template<class T >
void i3d::Reconstruction_by_erosion (const Image3d< T > &marker, const Image3d< T > &mask, Image3d< T > &out, const Neighbourhood &neib)
template<class T >
void i3d::Reconstruction_by_erosion (const Image3d< T > &marker, const Image3d< T > &mask, Image3d< T > &out)
template<class T >
void i3d::HRA_Reconstruction_by_dilation (const Image3d< T > &marker, const Image3d< T > &mask, Image3d< T > &out)
template<class T >
void i3d::HRA_Reconstruction_by_erosion (const Image3d< T > &marker, const Image3d< T > &mask, Image3d< T > &out)
template<class T , class F , class G >
void i3d::HRA_Reconstruction_by_DilEro (const Image3d< T > &marker, const Image3d< T > &mask, Image3d< T > &out, F func_f, G func_g)
template<class T , class F >
void i3d::DilEro (const Image3d< T > &in, Image3d< T > &out, const Neighbourhood &neib, F function)
template<class T , class F >
I3D_ALGO_EXPORT void i3d::LocalDilEro (const Image3d< T > &in, Image3d< T > &out, Image3d< bool > &, const Neighbourhood &neib, F function)
template<class T1 , class T2 , class Pred >
void i3d::DiscreteDistance (const Image3d< T1 > &in, Image3d< T2 > &out, const Neighbourhood &neib, Pred p)
template<class T >
bool i3d::Correspond (std::vector< T * > &b, std::vector< T * > &w)
template<class T >
void i3d::WatershedToboggan (const Image3d< T > &in, Image3d< int > &out, int connectivity, bool drawLines=false)
template<class T >
void i3d::WatershedToboggan2D (const Image3d< T > &in, Image3d< int > &out, int connectivity)
template<class T >
void i3d::WatershedLin (const Image3d< T > &in, Image3d< int > &out, int connectivity, bool drawLines=false)
template<class T >
void i3d::WatershedLin2D (const Image3d< T > &in, Image3d< int > &out, int connectivity)
template<typename T >
I3D_ALGO_EXPORT void i3d::WatershedMeyer (const Image3d< T > &input, const Image3d< size_t > &marker, Image3d< size_t > &output, const Neighbourhood &neighbourhood)
template<typename T >
I3D_ALGO_EXPORT void i3d::WatershedMeyer (const Image3d< T > &input, Image3d< size_t > &output, const Neighbourhood &neighbourhood)
template<typename T >
I3D_ALGO_EXPORT void i3d::WatershedBeucher (const Image3d< T > &input, const Image3d< size_t > &marker, Image3d< size_t > &output, const Neighbourhood &neighbourhood, bool drawWsLines=false)
template<typename T >
I3D_ALGO_EXPORT void i3d::WatershedBeucher (const Image3d< T > &input, Image3d< size_t > &output, const Neighbourhood &neighbourhood, bool drawWsLines=false)
template<typename T >
I3D_ALGO_EXPORT void i3d::WatershedContourDynamics (const Image3d< T > &input, const Image3d< size_t > &labels, Image3d< T > &saliencyMap, const Neighbourhood &neighbourhood)
template<typename T >
I3D_ALGO_EXPORT void i3d::WatershedTopological (const Image3d< T > &input, Image3d< T > &output, const Neighbourhood &neighbourhood, bool justMWS=false, Image3d< size_t > *labels=NULL)
template<typename T >
I3D_ALGO_EXPORT void i3d::WSInternalMarkerFromMinima (const Image3d< T > &input, Image3d< size_t > &marker, const Neighbourhood &neighbourhood)

Variables

struct I3D_ALGO_EXPORT i3d::SCompTreeNode

Detailed Description

Todo:
Improve documentation

Function Documentation

template<typename T >
I3D_ALGO_EXPORT void i3d::PrintSCompTreeNode ( std::ostream &  ost,
const SCompTreeNode< T > *  compTreeNode,
CCompTreeNodeAttribHandler< T > *  atribHandler,
size_t  level 
)

Prints subtree rooted at compTreeNode into the ost.

template<typename T >
I3D_ALGO_EXPORT std::ostream & i3d::operator<< ( std::ostream &  ost,
const SCompTree< T > &  compTree 
)

Output operator that visualizes an instance of the SCompTree.

template<typename T >
I3D_ALGO_EXPORT std::ostream & i3d::operator<< ( std::ostream &  ost,
const SCompTree< T > *  compTree 
)

Output operator that visualizes an instance of the SCompTree.

template<typename T >
I3D_ALGO_EXPORT void i3d::BuildComponentTree ( const Image3d< T > &  input,
SCompTree< T > &  componentTree,
const Neighbourhood &  neighbourhood 
)

Component tree (tree organization of the connected components of the level sets) construction algorithm according to Najman et al.

Detailed description of the algorithm can be found in Najman, L.; Couprie, M., "Building the Component Tree in Quasi-Linear Time," Image Processing, IEEE Transactions on , vol.15, no.11, pp.3531-3539, Nov. 2006.

Parameters:
[in]inputthe input image
[out]componentTreecomponent tree representing the whole given image
[in]neighbourhoodthe neighbourhood used for the adjacency relation
template<typename T >
I3D_ALGO_EXPORT void i3d::BuildComponentTree ( const Image3d< T > &  input,
SCompTree< T > &  componentTree,
NeighbourhoodWalker &  nbhWalker 
)

Component tree (tree organization of the connected components of the level sets) construction algorithm according to Najman et al.

Detailed description of the algorithm can be found in Najman, L.; Couprie, M., "Building the Component Tree in Quasi-Linear Time," Image Processing, IEEE Transactions on , vol.15, no.11, pp.3531-3539, Nov. 2006.

Parameters:
[in]inputthe input image
[out]componentTreecomponent tree representing the whole given image
[in]NeighbourhoodWalkerthe neighbourhood walker representing the neighbourhood used for the adjacency relation (has to be configured for the given input size)
template<class T >
I3D_ALGO_EXPORT void i3d::Dilation ( const Image3d< T > &  in,
Image3d< T > &  out,
const Neighbourhood &  neib 
)

Morphologial Dilation.

template<class T >
I3D_ALGO_EXPORT void i3d::LocalDilation ( const Image3d< T > &  in,
Image3d< T > &  out,
const Image3d< bool > &  mask,
const Neighbourhood &  neib 
)
template<class T >
I3D_ALGO_EXPORT void i3d::Erosion ( const Image3d< T > &  in,
Image3d< T > &  out,
const Neighbourhood &  neib 
)

Morphological Erosion.

template<class T >
I3D_ALGO_EXPORT void i3d::LocalErosion ( const Image3d< T > &  in,
Image3d< T > &  out,
const Image3d< bool > &  mask,
const Neighbourhood &  neib 
)
template<class T >
I3D_ALGO_EXPORT void i3d::Closing ( const Image3d< T > &  in,
Image3d< T > &  out,
const Neighbourhood &  neib 
)

Morphological Closing.

template<class T >
I3D_ALGO_EXPORT void i3d::LocalClosing ( const Image3d< T > &  in,
Image3d< T > &  out,
const Image3d< bool > &  mask,
const Neighbourhood &  neib 
)
template<class T >
I3D_ALGO_EXPORT void i3d::Closing ( Image3d< T > &  in,
const Neighbourhood &  neib 
)

Morphological Closing.

  • Old version (use the version with the output image - Martin Maska 2008-04-06)
template<class T >
I3D_ALGO_EXPORT void i3d::Opening ( const Image3d< T > &  in,
Image3d< T > &  out,
const Neighbourhood &  neigh 
)

Morphological Opening.

template<class T >
I3D_ALGO_EXPORT void i3d::LocalOpening ( const Image3d< T > &  in,
Image3d< T > &  out,
const Image3d< bool > &  mask,
const Neighbourhood &  neib 
)
template<class T >
I3D_ALGO_EXPORT void i3d::Opening ( Image3d< T > &  in,
const Neighbourhood &  neib 
)

Morphological Opening.

  • Old version (use the version with the output image - Martin Maska 2008-04-06)
template<class T >
I3D_ALGO_EXPORT void i3d::WhiteTopHat ( const Image3d< T > &  in,
Image3d< T > &  out,
const Neighbourhood &  neib 
)

Morphological WhiteTopHat.

template<class T >
I3D_ALGO_EXPORT void i3d::BlackTopHat ( const Image3d< T > &  in,
Image3d< T > &  out,
const Neighbourhood &  neib 
)

Morphological BlackTopHat.

template<class T >
I3D_ALGO_EXPORT void i3d::TopHat ( Image3d< T > &  in,
const Neighbourhood &  neib 
)

Morphological TopHat.

  • Old version (use WhiteTopHat function - Martin Maska 2008-04-06)
template<class T >
I3D_ALGO_EXPORT void i3d::HitOrMiss ( const Image3d< T > &  in,
Image3d< T > &  out,
const Neighbourhood &  b,
const Neighbourhood &  w 
)

Morphological HitOrMiss.

template<class T >
I3D_ALGO_EXPORT void i3d::Thinning ( const Image3d< T > &  in,
Image3d< T > &  out,
const Neighbourhood &  b,
const Neighbourhood &  w 
)

Morphological thinning.

template<class T >
I3D_ALGO_EXPORT void i3d::Thicking ( const Image3d< T > &  in,
Image3d< T > &  out,
const Neighbourhood &  b,
const Neighbourhood &  w 
)

Morphological thicking.

template<class T >
I3D_ALGO_EXPORT void i3d::DilationO ( const Image3d< T > &  in,
Image3d< T > &  out,
const int  radius_size 
)

Effective morphological operations with an approximation of a disk.

radius is in pixels Disk is approximated by octagon (polyhedron), uses decomposition of SE (alternating nb6 and nb 27)

by Pavel Matula, 2009

template<class T >
I3D_ALGO_EXPORT void i3d::ErosionO ( const Image3d< T > &  in,
Image3d< T > &  out,
const int  radius_size 
)
template<class T >
I3D_ALGO_EXPORT void i3d::ClosingO ( const Image3d< T > &  in,
Image3d< T > &  out,
const int  radius_size 
)
template<class T >
I3D_ALGO_EXPORT void i3d::OpeningO ( const Image3d< T > &  in,
Image3d< T > &  out,
const int  radius_size 
)
template<class T >
I3D_ALGO_EXPORT void i3d::WhiteTopHatO ( const Image3d< T > &  in,
Image3d< T > &  out,
const int  radius_size 
)
template<class T >
I3D_ALGO_EXPORT void i3d::BlackTopHatO ( const Image3d< T > &  in,
Image3d< T > &  out,
const int  radius_size 
)
template<class T >
I3D_ALGO_EXPORT void i3d::MaximaDynamic ( const Image3d< T > &  in,
Image3d< bool > &  out,
const T  dynamic 
)

Computes maximas of the given dymanic.

by Pavel Matula, 2009

I3D_ALGO_EXPORT void i3d::Dilation ( const Image3d< bool > &  in,
Image3d< bool > &  out,
const float  radius 
)

Effective morphological operations with disk structuring elements.

radius is in microns

I3D_ALGO_EXPORT void i3d::Erosion ( const Image3d< bool > &  in,
Image3d< bool > &  out,
const float  radius 
)
I3D_ALGO_EXPORT void i3d::Closing ( const Image3d< bool > &  in,
Image3d< bool > &  out,
const float  radius 
)
I3D_ALGO_EXPORT void i3d::Opening ( const Image3d< bool > &  in,
Image3d< bool > &  out,
const float  radius 
)
template<class T >
I3D_ALGO_EXPORT void i3d::Geodesic_dilation ( const Image3d< T > &  marker,
const Image3d< T > &  mask,
Image3d< T > &  out,
const Neighbourhood &  neib 
)

Mask image must be larger than or equal to the marker image.

template<class T >
I3D_ALGO_EXPORT void i3d::Geodesic_erosion ( const Image3d< T > &  marker,
const Image3d< T > &  mask,
Image3d< T > &  out,
const Neighbourhood &  neib 
)

Marker image must be larger than or equal to the mask image.

template<class T >
I3D_ALGO_EXPORT void i3d::h_Max ( const Image3d< T > &  in,
h,
Image3d< T > &  out 
)

Computes h-Maxima, suppress all maxima whose depth is smaller than h.

template<class T >
I3D_ALGO_EXPORT void i3d::HRA_h_Max ( const Image3d< T > &  in,
h,
Image3d< T > &  out 
)

Computes h-Maxima, suppress all maxima whose depth is smaller than h.

For 4-connected (2D) and 6-connected (3D) neighbourhoods ONLY. Implementation using HRA algorithm.

template<class T >
I3D_ALGO_EXPORT void i3d::h_Convex ( const Image3d< T > &  in,
h,
Image3d< T > &  out 
)

Compute h-Convex transformation.

template<class T >
I3D_ALGO_EXPORT void i3d::r_Max_bysweeping ( const Image3d< T > &  in,
Image3d< T > &  out 
)

TODO Comment.

template<typename T >
I3D_ALGO_EXPORT void i3d::r_Max ( const Image3d< T > &  in,
Image3d< T > &  out,
const Neighbourhood &  neib 
)

Computes regional maxima - they will be marked with std::numeric_limits<T>::max(), nonmaxima with 0.

Warning:
For 4-connected (2D) and 6-connected (3D) neighbourhoods r_Max_bysweeping is used - is faster for some kinds of images.
template<typename T >
I3D_ALGO_EXPORT void i3d::HRA_r_Max ( const Image3d< T > &  in,
Image3d< T > &  out,
const Neighbourhood &  neib 
)

Computes regional maxima - they will be marked with std::numeric_limits<T>::max(), nonmaxima with 0.

For 4-connected (2D) and 6-connected (3D) neighbourhoods ONLY. For integer data types only. Implementation using HRA algorithm.

template<typename T >
I3D_ALGO_EXPORT void i3d::r_Min ( const Image3d< T > &  in,
Image3d< T > &  out,
const Neighbourhood &  neib 
)

Computes regional minima - they will be marked with std::numeric_limits<T>::max(), nonminima with 0.

template<typename T >
I3D_ALGO_EXPORT void i3d::HRA_r_Min ( const Image3d< T > &  in,
Image3d< T > &  out,
const Neighbourhood &  neib 
)

Computes regional minima by HRA algorithm - they will be marked with std::numeric_limits<T>::max(), nonminima with 0.

For 4-connected (2D) and 6-connected (3D) neighbourhoods ONLY. For integer data types only. Implementation using HRA algorithm.

template<class T >
I3D_ALGO_EXPORT void i3d::e_Max ( const Image3d< T > &  in,
h,
Image3d< T > &  out,
const Neighbourhood &  neib 
)

Computes h-extended maxima, EMAX_h(f) = RMAX(HMAX_h(f)).

template<class T >
I3D_ALGO_EXPORT void i3d::HRA_e_Max ( const Image3d< T > &  in,
h,
Image3d< T > &  out,
const Neighbourhood &  neib 
)

Computes h-extended maxima, EMAX_h(f) = RMAX(HMAX_h(f)).

For 4-connected (2D) and 6-connected (3D) neighbourhoods ONLY. Implementation using HRA algorithm.

template<class T >
I3D_ALGO_EXPORT void i3d::impose_minima ( Image3d< T > &  in_out,
const Image3d< bool > &  mask_bin 
)

minima imposition where mask_bin == 1

template<class T >
I3D_ALGO_EXPORT void i3d::Fillhole ( const Image3d< T > &  in,
Image3d< T > &  out 
)

Holes filling algorithm computed using the morphological reconstruction by erosion.

template<class T , class F , class G >
I3D_ALGO_EXPORT void i3d::Reconstruction_by_DilEro ( const Image3d< T > &  marker,
const Image3d< T > &  mask,
Image3d< T > &  out,
const Neighbourhood &  neib,
func_f,
func_g 
) [inline]

This implementation does not work! Please use the versions without Neighbourhood instead.

template<class T , class F , class G >
I3D_ALGO_EXPORT void i3d::Reconstruction_by_DilEro ( const Image3d< T > &  marker,
const Image3d< T > &  mask,
Image3d< T > &  out,
func_f,
func_g 
) [inline]

General geodesic reconstruction function.

template<class T >
I3D_ALGO_EXPORT void i3d::Reconstruction_by_dilation ( const Image3d< T > &  marker,
const Image3d< T > &  mask,
Image3d< T > &  out,
const Neighbourhood &  neib 
)

This implementation does not work! Please use the versions without Neighbourhood instead.

Mask image must be larger than or equal to the marker image.

template<class T >
I3D_ALGO_EXPORT void i3d::Reconstruction_by_dilation ( const Image3d< T > &  marker,
const Image3d< T > &  mask,
Image3d< T > &  out 
)

Mask image must be larger than or equal to the marker image.

template<class T >
I3D_ALGO_EXPORT void i3d::Reconstruction_by_erosion ( const Image3d< T > &  marker,
const Image3d< T > &  mask,
Image3d< T > &  out,
const Neighbourhood &  neib 
)

This implementation does not work! Please use the versions without Neighbourhood instead.

Marker image must be larger than or equal to the mask image.

template<class T >
I3D_ALGO_EXPORT void i3d::Reconstruction_by_erosion ( const Image3d< T > &  marker,
const Image3d< T > &  mask,
Image3d< T > &  out 
)

Marker image must be larger than or equal to the mask image.

template<class T >
I3D_ALGO_EXPORT void i3d::HRA_Reconstruction_by_dilation ( const Image3d< T > &  marker,
const Image3d< T > &  mask,
Image3d< T > &  out 
)

Morphological reconstruction by Hybrid Reconstruction Algorithm [Vincent, 93] Implementated on Sep 16, 2010 by P.

Morphological reconstruction by Hybrid Reconstruction Algorithm [Vincent, 93] Implementated Sep 14, 2010 by P.

Karas For 4- and 6-connectivities (in 2D and 3D, respectively) TODO: Connectivity parameter & implementation for 8- and 26-connectivities

Karas For 4-connected (2D) and 6-connected (3D) neighbourhoods ONLY. TODO: Connectivity parameter & implementation for 8- and 26-connectivities General geodesic reconstruction function. Mask image must be larger than or equal to the marker image.

template<class T >
I3D_ALGO_EXPORT void i3d::HRA_Reconstruction_by_erosion ( const Image3d< T > &  marker,
const Image3d< T > &  mask,
Image3d< T > &  out 
)

Marker image must be larger than or equal to the mask image.

template<class T , class F , class G >
I3D_ALGO_EXPORT void i3d::HRA_Reconstruction_by_DilEro ( const Image3d< T > &  marker,
const Image3d< T > &  mask,
Image3d< T > &  out,
func_f,
func_g 
) [inline]
template<class T , class F >
I3D_ALGO_EXPORT void i3d::DilEro ( const Image3d< T > &  in,
Image3d< T > &  out,
const Neighbourhood &  neib,
function 
) [inline]
Todo:
Zatim pouzita pouze pri vypoctu dilatace a eroze, ale slo by ji vyuzit i jinde? Aplikuje funkci F v danem okoli.
template<class T , class F >
I3D_ALGO_EXPORT void i3d::LocalDilEro ( const Image3d< T > &  in,
Image3d< T > &  out,
Image3d< bool > &  ,
const Neighbourhood &  neib,
function 
)
template<class T1 , class T2 , class Pred >
I3D_ALGO_EXPORT void i3d::DiscreteDistance ( const Image3d< T1 > &  in,
Image3d< T2 > &  out,
const Neighbourhood &  neib,
Pred  p 
)

DiscreteDistance function needs 4 parameters:

Parameters:
ininput image
outoutput (filtered) image
neibneighbourhood applied to each voxel
pcondition, which must be hold in each voxel so that this voxel could be plugged into the process of computation.
template<class T >
I3D_ALGO_EXPORT bool i3d::Correspond ( std::vector< T * > &  b,
std::vector< T * > &  w 
)

returns true if color of all points in neighbourhoods corresponds to image.

template<class T >
I3D_ALGO_EXPORT void i3d::WatershedToboggan ( const Image3d< T > &  in,
Image3d< int > &  out,
int  connectivity,
bool  drawLines = false 
)

Morphological Watershed.

It uses Toboggan based approach implemented primarily by Lin et.al and published in "Comparison between immersion-based and toboggan-based watershed image segmentation" Yung-Chieh Lin; Yu-Pao Tsai; Yi-Ping Hung; Zen-Chung Shih, IEEE Transactions on Image Processing, 15, 3, March 2006

and altered for 3D by Martin Maska and Pavel Matula

This algorithm sometimes produces thick watershed lines. The result of the algorithm itself is very close to the Vincent-Soille algorithm.

Parameters:
inthe input image
outthe output labelled image, -1 is marking the watershed line, regions are marked beginning at 1 (0 is not used for anything)
connectivityis 4, 8, 6, 18, 26
drawLineswhether to draw watershed lines everywhere or just in the ambiguous cases
template<class T >
I3D_ALGO_EXPORT void i3d::WatershedToboggan2D ( const Image3d< T > &  in,
Image3d< int > &  out,
int  connectivity 
)

Morphological Watershed.

It uses Toboggan based approach implemented by Lin et.al and published in "Comparison between immersion-based and toboggan-based watershed image segmentation" Yung-Chieh Lin; Yu-Pao Tsai; Yi-Ping Hung; Zen-Chung Shih, IEEE Transactions on Image Processing, 15, 3, March 2006

It can be called for 2D images (NumSlices() is equal to 1). InternalException is raised otherwise.

This algorithm sometimes produces thick watershed lines. The result of the algorithm itself is very close to the Vincent-Soille algorithm.

Parameters:
inthe input image
outthe output labelled image, -1 is marking the watershed line, regions are marked beginning at 1 (0 is not used for anything)
connectivityis 4 or 8
template<class T >
I3D_ALGO_EXPORT void i3d::WatershedLin ( const Image3d< T > &  in,
Image3d< int > &  out,
int  connectivity,
bool  drawLines = false 
)

Morphological Watershed.

It uses Watershed function implemented primarily by Lin et.al and published in "Comparison between immersion-based and toboggan-based watershed image segmentation" Yung-Chieh Lin; Yu-Pao Tsai; Yi-Ping Hung; Zen-Chung Shih, IEEE Transactions on Image Processing, 15, 3, March 2006

and altered for 3D by Martin Maska.

This algorithm sometimes produces thick watershed lines. The result of the algorithm itself is very close to the Vincent-Soille algorithm. Use WatershedToboggan to get the same results but in shorter time.

Parameters:
inthe input image
outthe output labelled image, -1 is marking the watershed line, regions are marked beginning at 1 (0 is not used for anything)
connectivityis 4, 8, 6, 18, 26
drawLineswhether to draw watershed lines everywhere or just in the ambiguous cases
template<class T >
I3D_ALGO_EXPORT void i3d::WatershedLin2D ( const Image3d< T > &  in,
Image3d< int > &  out,
int  connectivity 
)

Morphological Watershed.

It uses Watershed function implemented by Lin et.al and published in "Comparison between immersion-based and toboggan-based watershed image segmentation" Yung-Chieh Lin; Yu-Pao Tsai; Yi-Ping Hung; Zen-Chung Shih, IEEE Transactions on Image Processing, 15, 3, March 2006

It can be called for 2D images (NumSlices() is equal to 1). InternalException is raised otherwise.

Watershed lines are drawn only in the ambiguous cases. The result of the algorithm itself is very close to the Vincent-Soille algorithm. Use WatershedToboggan2D to get the same results but in shorter time.

Parameters:
inthe input image
outthe output labelled image, -1 is marking the watershed line, regions are marked beginning at 1 (0 is not used for anything)
connectivityis 4 or 8
template<typename T >
I3D_ALGO_EXPORT void i3d::WatershedMeyer ( const Image3d< T > &  input,
const Image3d< size_t > &  marker,
Image3d< size_t > &  output,
const Neighbourhood &  neighbourhood 
)

Morphological watershed algorithm according to Meyer.

This algorithm produces thin watershed lines.

Parameters:
inputthe input image
markerthe marker image used for the start of the region growing (non-zero values should be used for the markers, zero otherwise)
outputthe output labelled image, 0 is marking the watershed line
neighbourhoodthe neighbourhood used for the computation
template<typename T >
I3D_ALGO_EXPORT void i3d::WatershedMeyer ( const Image3d< T > &  input,
Image3d< size_t > &  output,
const Neighbourhood &  neighbourhood 
)

Morphological watershed algorithm according to Meyer.

This algorithm produces thin watershed lines. This version uses all the regional minima as markers.

Parameters:
inputthe input image
outputthe output labelled image, 0 is marking the watershed line
neighbourhoodthe neighbourhood used for the computation
template<typename T >
I3D_ALGO_EXPORT void i3d::WatershedBeucher ( const Image3d< T > &  input,
const Image3d< size_t > &  marker,
Image3d< size_t > &  output,
const Neighbourhood &  neighbourhood,
bool  drawWsLines = false 
)

Morphological watershed algorithm according to Beucher.

This algorithm produces completely unbiased results. Detailed description of the algorithm can be found in Serge Beucher, "Algorithmes sans biais de ligne de partage des eaux", Centre de Morphologie Mathématique Ecole des Mines de Paris 28 Février 2002 Révisé le 30 Avril 2004 © 2002-2004.

Parameters:
inputthe input image (maximum value in the image should be lower than maximum type T value - largest plattau size)
markerthe marker image used for the start of the region growing (non-zero values should be used for the markers, zero otherwise, keep labels low if possible, maximum label value shoud be (maximum size_t value - 1) / 2)
outputthe output labelled image, 0 is marking the watershed line (or undecidable voxels, even when watershed lines are not drawn)
neighbourhoodthe neighbourhood used for the computation
drawWsLineswhether to draw watershed lines or not (they are draw order-invariantly, this means they are one or two voxels thick); even when you set this parameter to false, there will be watershed lines in the udecidable voxels
template<typename T >
I3D_ALGO_EXPORT void i3d::WatershedBeucher ( const Image3d< T > &  input,
Image3d< size_t > &  output,
const Neighbourhood &  neighbourhood,
bool  drawWsLines = false 
)

Morphological watershed algorithm according to Beucher.

This algorithm produces completely unbiased results. This version uses all the regional minima as markers. Detailed description of the algorithm can be found in Serge Beucher, "Algorithmes sans biais de ligne de partage des eaux", Centre de Morphologie Mathématique Ecole des Mines de Paris 28 Février 2002 Révisé le 30 Avril 2004 © 2002-2004.

Parameters:
inputthe input image (maximum value in the image should be lower than maximum type T value - largest plattau size)
outputthe output labelled image, 0 is marking the watershed line (or undecidable voxels, even when watershed lines are not drawn)
neighbourhoodthe neighbourhood used for the computation
drawWsLineswhether to draw watershed lines or not (they are draw order-invariantly, this means they are one or two voxels thick); even when you set this parameter to false, there will be watershed lines in the udecidable voxels
template<typename T >
I3D_ALGO_EXPORT void i3d::WatershedContourDynamics ( const Image3d< T > &  input,
const Image3d< size_t > &  labels,
Image3d< T > &  saliencyMap,
const Neighbourhood &  neighbourhood 
)

Implementation of the principle of dynamics of contours by Najman and Schmitt in Laurent Najman, Michel Schmitt, "Geodesic Saliency of Watershed Contours and Hierarchical Segmentation," IEEE Transactions on Pattern Analysis and Machine Intelligence, vol.

18, no. 12, pp. 1163-1173, December, 1996. For further information see also the related articles "Comments on "Geodesic Saliency of Watershed Contours and Hierarchical Segmentation"" and "Response to comment on "Geodesic Saliency of Watershed Contours and Hierarchical Segmentation""

Parameters:
inputthe input image
labelsthe labeled image (result of the watershed transformation that is expected to have labels beginning from 1 and special label 0 marking the watershed lines (that are expected to be 1 voxel thick))
saliencyMapthe output image
neighbourhoodthe neighbourhood used for the computation
template<typename T >
I3D_ALGO_EXPORT void i3d::WatershedTopological ( const Image3d< T > &  input,
Image3d< T > &  output,
const Neighbourhood &  neighbourhood,
bool  justMWS = false,
Image3d< size_t > *  labels = NULL 
)

Implementation of the topological watershed transform described in Michael Couprie, Laurent Najman, Gilles Bertrand, "Quasi-linear algorithms for the topological watershed," Journal of Mathematical Imaging and Vision, Volume 22, Numbers 2-3 / May, 2005.

Parameters:
inputthe input image
outputthe output image (non-minima of the image are the watershed lines)
neighbourhoodthe neighbourhood used for the computation
justMWSwhether to compute only the M-watershed, or both M-watershed and W-watershed
labelstopological watershed can also return labeled image - if you wish one, use this parameter (specify non-null pointer to a labeled output image)
template<typename T >
I3D_ALGO_EXPORT void i3d::WSInternalMarkerFromMinima ( const Image3d< T > &  input,
Image3d< size_t > &  marker,
const Neighbourhood &  neighbourhood 
)

Creates marker image from the given input image using the regional minima as a markers.

Parameters:
inputthe input image
markerthe output marker image
neighbourhoodthe neighbourhood used for the computation

Variable Documentation

template I3D_ALGO_EXPORT struct i3d::SCompTreeNode< i3d::GRAY16 >