i3dlib

Documentation

i3d::MCFFilterFunction< VOXEL > Class Template Reference

This class implements together with class MCFFilter the Curvature Flow anisotropic diffusion filter, which was published by Alvarez, Lions and Morel. 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 = \mathrm{div} ( \nabla u / |\nabla u|) |\nabla u|$. The particular implemantion is based on explicit finite difference solver and therefore there exist some limitations to the time step. There is no need to instantiate this class in the user program. This class is instantiated automatically in the MCFFilter class. More...

#include <LevelSet.h>

Inheritance diagram for i3d::MCFFilterFunction< VOXEL >:

i3d::ExplicitSchemeFunction< VOXEL > i3d::PDESolverFunction< VOXEL > List of all members.

Public Member Functions

virtual VOXEL ComputeUpdate (size_t *neighbors, size_t center)
 Compute the update value for one voxel, returns the ideal timestep for the particular voxel.
virtual void UpdateTimeStep (size_t *neighbors, size_t index, VOXEL tempTimeStep)
 Udates the Globaltime step from the value returned by ComputeUpdate() method.

Detailed Description

template<class VOXEL>
class i3d::MCFFilterFunction< VOXEL >

This class implements together with class MCFFilter the Curvature Flow anisotropic diffusion filter, which was published by Alvarez, Lions and Morel. 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 = \mathrm{div} ( \nabla u / |\nabla u|) |\nabla u|$. The particular implemantion is based on explicit finite difference solver and therefore there exist some limitations to the time step. There is no need to instantiate this class in the user program. This class is instantiated automatically in the MCFFilter class.

The image is smoothed by finding solution of partial differential equation

\[ u_t = \mathrm{div} ( \nabla u / |\nabla u|) |\nabla u| \]

where $ u_0$ is the input image (boundary condition of the PDE). In the context of level set equations, the above equation can be written as

\[ u_t = \kappa |\nabla u| \]

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 advantage of the filter is that there are no parameters to adjust the behaviour of the filter. The only value, which can the user adjust is the stopping time (time step + number of iterations) of the diffusion. If we we diffuse the image to the infinity we get the constantly valued grey image.

This class completely inherits the imple explicit numerical scheme from class ExplicitSchemeFunction. It only reimplements the ComputeUpdate() and the UpdateTimestep() methods.

The implementation of this class is based on the chapter 16 from book

J. A. Sethian, Level Set Methods and Fast Marching Methods , Cambridge University Press 1999.

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


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