i3dlib

Documentation

i3d::PMFilterFunction< VOXEL > Class Template Reference

This class implements together with class PMFilter the Perona-Malik anisotropic diffusion filter, which was published by Perona and Malik. This filter was historical first published anisotropic diffusion filter and therefore is fundamental. As the other anisotropic filters, this filter smooths the image in the relatively continuos region and do not smooth the significante edges. 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} (g(|\nabla u|) \nabla u)$ There is no need to instantiate this class in the user program. This class is instantiated automatically in the PMFilter class. More...

#include <LevelSet.h>

Inheritance diagram for i3d::PMFilterFunction< 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::PMFilterFunction< VOXEL >

This class implements together with class PMFilter the Perona-Malik anisotropic diffusion filter, which was published by Perona and Malik. This filter was historical first published anisotropic diffusion filter and therefore is fundamental. As the other anisotropic filters, this filter smooths the image in the relatively continuos region and do not smooth the significante edges. 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} (g(|\nabla u|) \nabla u)$ There is no need to instantiate this class in the user program. This class is instantiated automatically in the PMFilter class.

This class completely inherits the imple explicit numerical scheme from class ExplicitSchemeFunction. It only reimplements the ComputeUpdate() and the UpdateTimestep() methods. The discretisation of the equation is not accurate (as in the Perona Malik article), there are some simplifications.

\[ \begin{array}[b]{l} u_t = \mathrm{div} (g(|\nabla u|) \nabla u) \\ u_t = \sum \limits_{Dir \in \{N,S,E,W\}} g_{Dir}|\nabla_{Dir} u|||\\ \end{array} \]

where $ u_W = u_{i-1,j} - u_{i,j} $ and so on, $ g_{Dir} = g(|\nabla u_{Dir}|)$.

The implementation of this class is based on the articles
Pietro Perona and Jitendra Malik, Scale-Space and Edge Detection Using Anisotropic Diffusion IEEE Transactions on Pattern Analysis and Machine Intelligence. Vol. 12. No. 7. July 1990. Michael J. Black, Guilermo Sapiro, David H. Marimont, David Heeger, Robust Anisotropic Diffusion , IEEE Transactions on Image Processing, Vol. 7. No. 3. March 1998

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


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