bruges.filters.anisodiff module

copyright:Alistair Muldal
license:Unknown, shared on StackOverflow and Pastebin

Reference: P. Perona and J. Malik. Scale-space and edge detection using ansotropic diffusion. IEEE Transactions on Pattern Analysis and Machine Intelligence, 12(7):629-639, July 1990. <http://www.cs.berkeley.edu/~malik/papers/MP-aniso.pdf>

Original MATLAB code by Peter Kovesi School of Computer Science & Software Engineering The University of Western Australia pk @ csse uwa edu au <http://www.csse.uwa.edu.au>

Translated to Python and optimised by Alistair Muldal Department of Pharmacology University of Oxford <alistair.muldal@pharm.ox.ac.uk>

June 2000 original version. March 2002 corrected diffusion eqn No 2. July 2012 translated to Python

bruges.filters.anisodiff.anisodiff(img, niter=1, kappa=50, gamma=0.1, step=(1.0, 1.0), option=1)[source]

Anisotropic diffusion.

Usage: imgout = anisodiff(im, niter, kappa, gamma, option)

Parameters:
  • - input image (img) –
  • - number of iterations (niter) –
  • - conduction coefficient 20-100 ? (kappa) –
  • - max value of .25 for stability (gamma) –
  • - tuple, the distance between adjacent pixels in (step) –
  • - 1 Perona Malik diffusion equation No 1 (option) – 2 Perona Malik diffusion equation No 2
Returns:

imgout - diffused image.

kappa controls conduction as a function of gradient. If kappa is low small intensity gradients are able to block conduction and hence diffusion across step edges. A large value reduces the influence of intensity gradients on conduction.

gamma controls speed of diffusion (you usually want it at a maximum of 0.25)

step is used to scale the gradients in case the spacing between adjacent pixels differs in the x and y axes

Diffusion equation 1 favours high contrast edges over low contrast ones. Diffusion equation 2 favours wide regions over smaller ones.

bruges.filters.anisodiff.anisodiff3(stack, niter=1, kappa=50, gamma=0.1, step=(1.0, 1.0, 1.0), option=1)[source]

3D Anisotropic diffusion.

Usage: stackout = anisodiff(stack, niter, kappa, gamma, option)

Parameters:
  • - input stack (stack) –
  • - number of iterations (niter) –
  • - conduction coefficient 20-100 ? (kappa) –
  • - max value of .25 for stability (gamma) –
  • - tuple, the distance between adjacent pixels in (step) –
  • - 1 Perona Malik diffusion equation No 1 (option) – 2 Perona Malik diffusion equation No 2
Returns:

stackout - diffused stack.

kappa controls conduction as a function of gradient. If kappa is low small intensity gradients are able to block conduction and hence diffusion across step edges. A large value reduces the influence of intensity gradients on conduction.

gamma controls speed of diffusion (you usually want it at a maximum of 0.25)

step is used to scale the gradients in case the spacing between adjacent pixels differs in the x,y and/or z axes

Diffusion equation 1 favours high contrast edges over low contrast ones. Diffusion equation 2 favours wide regions over smaller ones.