@Reference(type=Article, author={"Perona, P.","Malik, J."}, title="Scale-Space and Edge Detection Using Anisotropic Diffusion", year="1990", journal="IEEE Trans. Pattern Anal. Mach. Intell.", pages={"629","","639"}, url="http://dx.doi.org/10.1109/34.56205", month="July", number="7", publisher="IEEE Computer Society", volume="12", customData={"issue_date","July 1990","issn","0162-8828","numpages","11","doi","10.1109/34.56205","acmid","78304","address","Washington, DC, USA"}) public class AnisotropicDiffusion extends Object implements SinglebandImageProcessor<Float,FImage>
Modifier and Type | Class and Description |
---|---|
static interface |
AnisotropicDiffusion.ConductionCoefficientFunction
Interface describing a function that computes the conduction coefficient as a
function of space and gradient magnitude.
|
static class |
AnisotropicDiffusion.HighConstrastEdgeFunction
The first conduction function proposed by Perona & Malik, that privileges
high contrast edges over low constrast ones.
|
static class |
AnisotropicDiffusion.WideRegionFunction
The second conduction function proposed by Perona & Malik, that
privileges wider regions over smaller ones.
|
SinglebandImageProcessor.Processable<T,S extends Image<T,S>,I extends Image<?,I>>
Modifier and Type | Field and Description |
---|---|
protected AnisotropicDiffusion.ConductionCoefficientFunction |
function |
protected float |
lambda |
protected ConnectedComponent.ConnectMode |
neighbourMode |
protected int |
numIterations |
Constructor and Description |
---|
AnisotropicDiffusion(int numIterations,
float lambda,
AnisotropicDiffusion.ConductionCoefficientFunction function)
Construct using the given parameters.
|
AnisotropicDiffusion(int numIterations,
float lambda,
AnisotropicDiffusion.ConductionCoefficientFunction function,
ConnectedComponent.ConnectMode neighbourMode)
Construct using the given parameters.
|
Modifier and Type | Method and Description |
---|---|
void |
processImage(FImage image)
Process an image.
|
void |
processImageOneIteration(FImage image)
Perform a single iteration of anisotropic diffusion
|
protected int numIterations
protected float lambda
protected AnisotropicDiffusion.ConductionCoefficientFunction function
protected ConnectedComponent.ConnectMode neighbourMode
public AnisotropicDiffusion(int numIterations, float lambda, AnisotropicDiffusion.ConductionCoefficientFunction function, ConnectedComponent.ConnectMode neighbourMode)
numIterations
- number of iterations of filtering to applylambda
- the integration constant (less than or equal to 1/4 for
4-neighbour mode and 1/8 for 8-neighbour)function
- the conduction coefficient functionneighbourMode
- the neighbourhood modepublic AnisotropicDiffusion(int numIterations, float lambda, AnisotropicDiffusion.ConductionCoefficientFunction function)
numIterations
- number of iterations of filtering to applylambda
- the integration constant (bigger than 0 and less than or equal to
1/4)function
- the conduction coefficient functionpublic void processImage(FImage image)
ImageProcessor
Image.internalAssign(Image)
.processImage
in interface ImageProcessor<FImage>
image
- The image to process in place.public void processImageOneIteration(FImage image)
image
- the image