This toolbox will perform Anisotropic Non-Linear Diffusion filtering on a 2D gray/color or 3D image. This filtering will reduce the image noise while preserving the region edges, and also enhancing the edges by smoothing along them.
This is one of the more advanced image enhancement methods available, and also contains HDCS from october 2009. The result looks like an artist painted the image, with clear brush strokes along the image edges and ridges, see screen-shot.
My papers about the code are included:
- "Coherence Filtering to Enhance the Mandibular Canal in Cone-Beam CT Data", IEEE-EMBS Benelux Chapter Symposium, 2009.
- "Optimized Anisotropic Rotational Invariant Diffusion Scheme on Cone-Beam CT", MICCAI, 2010
The basis of the method used is the one introduced by Weickert.
1, Calculate Hessian from every pixel of the Gaussian smoothed input image
2, Gaussian Smooth the Hessian, and calculate its eigenvectors and values (Image edges give large eigenvalues, and the eigenvectors corresponding to those eigenvalues describe the direction of the edge)
3, The eigenvectors are used as diffusion tensor directions. The amplitude of the diffusion in those 3 directions is based on the eigen values and determined by Weickerts equation.
4, An Finite Difference scheme is used to do the diffusion
5, Back to step 1, till a certain diffusion time is reached.
There are several diffusion schemes available: standard, implicit, nonegative discretization, and also a rotation invariant scheme, and a novel diffusion scheme with new optimized derivatives.
All 3D files are not only available as Matlab but also as C-code /MEX files, to increase speed and reduce the amount of memory used. Compile the c-code by executing compile_c_files.m.
Literature (Full list in the included paper):
- Weickert : "A Scheme for Coherence-Enhancing Diffusion Filtering with Optimized Rotation Invariance"
- Mendrik et al, "Noise Reduction in Computed Tomography Scans Using 3-D Anisotropic Hybrid Diffusion With Continuous Switch", October 2009
- Weickert : "Anisotropic Diffusion in Image Processing", Thesis 1996
- Laura Fritz : "Diffusion-Based Applications for Interactive Medical Image Segmentation"
- Siham Tabik, et al. : "Multiprocessing of Anisotropic Nonlinear Diffusion for filtering 3D image"
Read the help of CoherenceFilter, compile the c-code and try the examples in the help.
Please report bugs, successes and questions.
Dirk-Jan Kroon (2023). Image Edge Enhancing Coherence Filter Toolbox (https://www.mathworks.com/matlabcentral/fileexchange/25449-image-edge-enhancing-coherence-filter-toolbox), MATLAB Central File Exchange. Retrieved .
MATLAB Release Compatibility
Platform CompatibilityWindows macOS Linux
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!Start Hunting!
Added paper, some minor changes in values
Added new Diffusion scheme which uses optimized 5x5 second order derivatives...
LCC compiler fix
Added Adriënne M. Mendrik et al. "Hybrid Diffusion with Continuous Switch (HDCS)", october 2009 IEEE transactions on medical imaging.
Fixed boundary check bug in backward derivatives.
Tested Linux Ubuntu