i3dlib

Documentation

i3d::MCDEFilter< VOXELIN, VOXELOUT > Class Template Reference
[Image preprocessing filters]

This class implements together with class MCDEFilterFunction the Modified Curvature Diffusion Flow anisotropic diffusion filter, which was published by Whitaker and Xue. As the other anisotropic filters, this filter smooths the image in the relatively continuos region and do not smooth the significante edges. Moreover it generates the so called morphological scale space. In the typical output image is suppresed the noise and the edges remain sharp and well localised. The diffused image is the solution of the equation $ u_t = |\nabla u| \cdot \mathrm{div} \left( g(| \nabla u|)\frac{ \nabla u }{ |\nabla u|} \right) $. The particular implementation is based on explicit finite difference solver and therefore there exist some limitations to the time step. More...

#include <LevelSet.h>

Inheritance diagram for i3d::MCDEFilter< VOXELIN, VOXELOUT >:

i3d::ExplicitScheme< VOXELIN, VOXELOUT > i3d::PDESolver< VOXELIN, VOXELOUT > List of all members.

Public Member Functions

int SetNorm (int type)
 Set the norm function. Possible values are ORIGINALPM, ALTERNATIVEPM and TUKEY.
void SetConductance (VOXELOUT c)
 Set the $\lambda $ conductance parameter.
VOXELOUT GetConductance ()
 Get the $\lambda $ conductance parameter.

Detailed Description

template<class VOXELIN, class VOXELOUT>
class i3d::MCDEFilter< VOXELIN, VOXELOUT >

This class implements together with class MCDEFilterFunction the Modified Curvature Diffusion Flow anisotropic diffusion filter, which was published by Whitaker and Xue. As the other anisotropic filters, this filter smooths the image in the relatively continuos region and do not smooth the significante edges. Moreover it generates the so called morphological scale space. In the typical output image is suppresed the noise and the edges remain sharp and well localised. The diffused image is the solution of the equation $ u_t = |\nabla u| \cdot \mathrm{div} \left( g(| \nabla u|)\frac{ \nabla u }{ |\nabla u|} \right) $. The particular implementation is based on explicit finite difference solver and therefore there exist some limitations to the time step.

The image is smoothed by finding solution of partial differential equation

\[ u_t = |\nabla u| \cdot \mathrm{div} \left( g(| \nabla u|)\frac{ \nabla u }{ |\nabla u|} \right) \]

where $ u_0$ is the input image (boundary condition of the PDE).

The idea of this equation is to smooth the image in regions with high curvature (i.e. noise) and do not diffuse the image near significant edges. The diffusion is more agresive in the interior of objects and there is almost no diffusion on the objects boundaries due to the conductance function. For the detailed description of the conductance function $ g(|\nabla u|) $ see the documentation if the class PMFilter.

The typical setting of coefficients for biomedical images produced in LOM should be:
A few of iterations (1 to 10) should be sufficient to to smooth the image. due to the limitation of used explicit numerical discretisation should be the time step lower than 0.25 for 2D images and lower than 0.125 for 3D images (See also the example code). If there is no time step set, the possible largest is set automatically.

The numerical scheme which finds the solution of the equation is implemented in ExplicitScheme class. This class inherits the solution.

The implementation of this class is based on the article

R. T. Whitaker, X. W. Xue, Variable Conductance , Level Set Curvature For Image Denoising

Example code for using this filter:

   .....
   
   Image3d<GRAY8> i;
   Image3d<float> fimg;
   i.ReadImage('input.tif'); // read input image
   MCDEFilter<GRAY8,float> CF(i,fimg); // instantiate  the filter  (the two parameters are the input and the output image)
   MCDE.SetMaximumNumberOfIterations(3); // Set the number of iterations to 2
   MCDE.SetSpacing(1.0,1.0,2.0); // Set the spacing of spatial discretisation to 1,1,2
   MCDE.Execute(); // Perform the work of the filter
   MCDE.SetNorm(ORIGINALPM); // Set norm to original PM norm
   FloatToGray8NoWeight(fimg,i); //Convert the output float image to gray8 image
   i.SaveImage('output.tif'); // save the output of the filter

   ......
  
Author:
Jan Hubený xhubeny@fi.muni.cz
Date:
2005


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