Anisotropic Diffusion in ITK
logo

Please use this identifier to cite or link to this publication: http://hdl.handle.net/10380/3505
Anisotropic Non-Linear Diffusion is a powerful image processing technique, which allows to simultaneously remove the noise and enhance sharp features in two or three dimensional images. Anisotropic Diffusion is understood here in the sense of Weickert, meaning that diffusion tensors are anisotropic and reflect the local orientation of image features. This is in contrast with the non-linear diffusion filter of Perona and Malik, which only involves scalar diffusion coefficients, in other words isotropic diffusion tensors.
In this paper, we present an anisotropic non-linear diffusion technique we implemented in ITK. This technique is based on a recent adaptive scheme making the diffusion stable and requiring limited numerical resources.
Code
There is no code review at this time.

Reviews
There is no review at this time. Be the first to review this publication!

Quick Comments
Comment by Matthew Mccormick yellow
This work is available in ITK 4.9 by enabling the CMake configuration option Module_AnisotropicDiffusionLBR. It can also be executed and reproduced in the browser here:

https://insightsoftwareconsortium.github.io/ITKAnisotropicDiffusionLBR/
Comment by Matthew Mccormick yellow
This work is available in ITK 4.9 by enabling the CMake configuration option Module_AnisotropicDiffusionLBR. It can also be executed and reproduced in the browser here:

https://insightsoftwareconsortium.github.io/ITKAnisotropicDiffusionLBR/
Comment by Jean-marie Mirebeau yellow
Important notice :
The ITK team (specifically Matthew McCormick) has been kind enough to include the code accompanying this publication as an ITK REMOTE MODULE. A number of compilation issues affecting various platforms have been solved in the process.

Readers are thus encouraged to use the REMOTE MODULE version (more portable and updated) instead of the original version available on this page.
Comment by Jean-marie Mirebeau yellow
Important notice :
The ITK team (specifically Matthew McCormick) has been kind enough to include the code accompanying this publication as an ITK REMOTE MODULE. A number of compilation issues affecting various platforms have been solved in the process.

Readers are thus encouraged to use the REMOTE MODULE version (more portable and updated) instead of the original version available on this page.
Comment by Wei Liu yellow
I could not compile the module too. I copied the unzipped module folder into the Modules/External directory of ITK 4.8 and turn on the module in ccmake. I got the following error:
============== begin log =================
41%] Building CXX object Modules/External/AnisotropicDiffusionLBR/src/CMakeFiles/ITKAnisotropicDiffusionLBR.dir/CoherenceEnhancingDiffusion.cxx.o
In file included from /home/wliu8/apps/InsightToolkit-4.8.0/Modules/External/AnisotropicDiffusionLBR/src/Headers/StructureTensorImageFilter.h:89
from /home/wliu8/apps/InsightToolkit-4.8.0/Modules/External/AnisotropicDiffusionLBR/src/Headers/AnisotropicDiffusionLBRImageFilter.h:13
from /home/wliu8/apps/InsightToolkit-4.8.0/Modules/External/AnisotropicDiffusionLBR/src/Headers/CoherenceEnhancingDiffusionFilter.h:12
from /home/wliu8/apps/InsightToolkit-4.8.0/Modules/External/AnisotropicDiffusionLBR/src/Headers/CoherenceEnhancingDiffusionCommandLine.h:14
from /home/wliu8/apps/InsightToolkit-4.8.0/Modules/External/AnisotropicDiffusionLBR/src/CoherenceEnhancingDiffusion.cxx:3:
/home/wliu8/apps/InsightToolkit-4.8.0/Modules/External/AnisotropicDiffusionLBR/src/Headers/StructureTensorImageFilter.hxx:29: error: 'Self' has not been declared
/home/wliu8/apps/InsightToolkit-4.8.0/Modules/External/AnisotropicDiffusionLBR/src/Headers/StructureTensorImageFilter.hxx: In member function 'void itk::StructureTensorImageFilterTImage TTensorImage::IntermediateFilterDummy true::operator()(int*)':
/home/wliu8/apps/InsightToolkit-4.8.0/Modules/External/AnisotropicDiffusionLBR/src/Headers/StructureTensorImageFilter.hxx:30: error: 'ImageType' was not declared in this scope
/home/wliu8/apps/InsightToolkit-4.8.0/Modules/External/AnisotropicDiffusionLBR/src/Headers/StructureTensorImageFilter.hxx:30: error: 'CovariantImageType' was not declared in this scope
/home/wliu8/apps/InsightToolkit-4.8.0/Modules/External/AnisotropicDiffusionLBR/src/Headers/StructureTensorImageFilter.hxx:30: error: template argument 1 is invalid
/home/wliu8/apps/InsightToolkit-4.8.0/Modules/External/AnisotropicDiffusionLBR/src/Headers/StructureTensorImageFilter.hxx:30: error: template argument 2 is invalid
/home/wliu8/apps/InsightToolkit-4.8.0/Modules/External/AnisotropicDiffusionLBR/src/Headers/StructureTensorImageFilter.hxx:30: error: invalid type in declaration before ';' token
/home/wliu8/apps/InsightToolkit-4.8.0/Modules/External/AnisotropicDiffusionLBR/src/Headers/StructureTensorImageFilter.hxx:31: error: 'GradientFilterType' is not a class or namespace
/home/wliu8/apps/InsightToolkit-4.8.0/Modules/External/AnisotropicDiffusionLBR/src/Headers/StructureTensorImageFilter.hxx:31: error: expected '(' before 'gradientFilter'
/home/wliu8/apps/InsightToolkit-4.8.0/Modules/External/AnisotropicDiffusionLBR/src/Headers/StructureTensorImageFilter.hxx:31: error: expected ';' before 'gradientFilter'
/home/wliu8/apps/InsightToolkit-4.8.0/Modules/External/AnisotropicDiffusionLBR/src/Headers/StructureTensorImageFilter.hxx:32: error: 'gradientFilter' was not declared in this scope
/home/wliu8/apps/InsightToolkit-4.8.0/Modules/External/AnisotropicDiffusionLBR/src/Headers/StructureTensorImageFilter.hxx:32: error: request for member 'GetInput' in 'self-' which is of non-class type 'int'
/home/wliu8/apps/InsightToolkit-4.8.0/Modules/External/AnisotropicDiffusionLBR/src/Headers/StructureTensorImageFilter.hxx:33: error: request for member 'm_NoiseScale' in 'self-' which is of non-class type 'int'
/home/wliu8/apps/InsightToolkit-4.8.0/Modules/External/AnisotropicDiffusionLBR/src/Headers/StructureTensorImageFilter.hxx:35: error: 'CovariantImageType' cannot appear in a constant-expression
/home/wliu8/apps/InsightToolkit-4.8.0/Modules/External/AnisotropicDiffusionLBR/src/Headers/StructureTensorImageFilter.hxx:35: error: 'TensorImageType' was not declared in this scope
/home/wliu8/apps/InsightToolkit-4.8.0/Modules/External/AnisotropicDiffusionLBR/src/Headers/StructureTensorImageFilter.hxx:36: error: 'OuterFunctor' was not declared in this scope
/home/wliu8/apps/InsightToolkit-4.8.0/Modules/External/AnisotropicDiffusionLBR/src/Headers/StructureTensorImageFilter.hxx:36: error: template argument 1 is invalid
/home/wliu8/apps/InsightToolkit-4.8.0/Modules/External/AnisotropicDiffusionLBR/src/Headers/StructureTensorImageFilter.hxx:36: error: template argument 2 is invalid
/home/wliu8/apps/InsightToolkit-4.8.0/Modules/External/AnisotropicDiffusionLBR/src/Headers/StructureTensorImageFilter.hxx:36: error: template argument 3 is invalid
/home/wliu8/apps/InsightToolkit-4.8.0/Modules/External/AnisotropicDiffusionLBR/src/Headers/StructureTensorImageFilter.hxx:36: error: invalid type in declaration before ';' token
/home/wliu8/apps/InsightToolkit-4.8.0/Modules/External/AnisotropicDiffusionLBR/src/Headers/StructureTensorImageFilter.hxx:37: error: 'OuterFilterType' is not a class or namespace
/home/wliu8/apps/InsightToolkit-4.8.0/Modules/External/AnisotropicDiffusionLBR/src/Headers/StructureTensorImageFilter.hxx:37: error: expected '(' before 'outerFilter'
/home/wliu8/apps/InsightToolkit-4.8.0/Modules/External/AnisotropicDiffusionLBR/src/Headers/StructureTensorImageFilter.hxx:37: error: expected ';' before 'outerFilter'
/home/wliu8/apps/InsightToolkit-4.8.0/Modules/External/AnisotropicDiffusionLBR/src/Headers/StructureTensorImageFilter.hxx:38: error: 'outerFilter' was not declared in this scope
/home/wliu8/apps/InsightToolkit-4.8.0/Modules/External/AnisotropicDiffusionLBR/src/Headers/StructureTensorImageFilter.hxx:41: error: request for member 'intermediateResult' in 'self-' which is of non-class type 'int'
============ end of log ====================
I used gcc 4.4.7 on centos. ITK build OK before I added this module.

Any insights? The module looks very promising.
Comment by Jean-marie Mirebeau yellow
I use a mac with ITK 4.6.1
g++ -v yields
Apple LLVM version 6.1.0 (clang-602.0.49) (based on LLVM 3.6.0svn)
Target: x86_64-apple-darwin14.3.0
Comment by Rafael Namias yellow
I could not compile the module. Which version of g++ is needed for compilation?


Resources
backyellow
Download All
Download Paper , View Paper
Download Source code

Statistics more
backyellow
Global rating: starstarstarstarstar
Review rating: starstarstarstarstar [review]
Code rating:
Paper Quality: plus minus
7 comments

Information more
backyellow
Categories: Anisotropic blurring filters, Filtering
Keywords: Anisotropic Diffusion, Denoising
Tracking Number: ANR grant NS-LBR, ANR-13-JS01-0003-01
Toolkits: ITK, CMake
Export citation:

Share
backyellow
Share

Linked Publications more
backyellow
Anisotropic Fast Marching in ITK Anisotropic Fast Marching in ITK
by Mirebeau J.
A MultipleImageIterator for iterating over multiple images simultaneously A MultipleImageIterator for iterating over multiple images simultaneously
by Schaerer J.

View license
Loading license...

Send a message to the author
main_flat
Powered by Midas