@ALDDerivedClass
@ALDAOperator(genericExecutionMode=ALL,
level=APPLICATION)
public class ChaudhuriMatchedFilter2D
extends OrientedFilter2D
This filter is mainly used for segmenting vessel-like structures, e.g., refer to
Chaudhuri, S., Chatterjee, S., Katz, N., Nelson, M., and Goldbaum, M.,
"Detection of Blood Vessels in Retinal Images Using 2D Matched Filters",
IEEE Trans. on Medical Imaging, vol. 8, no. 3, September 1989
Target structures are assumed to exhibit a Gaussian-shaped cross-section.
This is modeled by a Gaussian kernel with standard deviation
.
Contrary to the paper this operator always uses square kernels, i.e. the
maximum of the kernel height and
is used as kernel size.
In addition, the calculations are done in double
precision while the original paper uses integer precision only.
OrientedFilter2D.ApplicationMode| Modifier and Type | Field and Description |
|---|---|
protected Double |
gaussStdDev
Standard deviation of the Gaussian.
|
protected Integer |
height
Height of the filter mask.
|
protected MTBBooleanData |
invertMask
Flag to invert filter mask.
|
protected MTBBooleanData |
normalizeMask
Flag to normalize sum of kernel elements to zero.
|
angle, inputImg, mode, paddingVariant, resultImg, statusListeners| Constructor and Description |
|---|
ChaudhuriMatchedFilter2D()
Default constructor.
|
| Modifier and Type | Method and Description |
|---|---|
ChaudhuriMatchedFilter2D |
clone() |
void |
disableNormalization()
Disable kernel normalization.
|
void |
enableNormalization()
Enable kernel normalization.
|
MTBImageDouble |
getKernel(double _angle)
Calculates kernel for given angle and pre-defined sigma and length.
|
protected Object |
readResolve()
Init function for deserialized objects.
|
void |
setHeight(int h)
Specify height of filter mask.
|
void |
setInvertMask(boolean b)
Enable/disable inversion of mask.
|
void |
setInvertMask(MTBBooleanData m)
Enable or disable mask inversion.
|
void |
setKernelNormalization(MTBBooleanData kn)
Enable or disable kernel normalization.
|
void |
setStandardDeviation(double s)
Specify standard deviation of Gaussian.
|
void |
validateCustom() |
addStatusListener, getApplicationMode, getResultImage, notifyListeners, operate, removeStatusListener, setAngle, setApplicationMode, setInputImage, setPaddingVariantaddOperatorExecutionProgressEventListener, addParameter, addParameter, addParameterUnconditioned, fieldContained, fireOperatorExecutionProgressEvent, getALDPortHashAccessKey, getConstructionMode, getDocumentation, getHidingMode, getInactiveParameterNames, getInInoutNames, getInInoutNames, getInNames, getInOutNames, getMissingRequiredInputs, getName, getNumParameters, getOutInoutNames, getOutNames, getParameter, getParameterDescriptor, getParameterDescriptorUnconditioned, getParameterNames, getParameterUnconditioned, getSupplementalNames, getVerbose, getVersion, handleOperatorExecutionProgressEvent, hasInOutParameters, hasParameter, isAnnotatedParameter, isConfigured, print, print, print, printInterface, printInterface, readHistory, reinitializeParameterDescriptors, removeOperatorExecutionProgressEventListener, removeParameter, runOp, runOp, runOp, setConstructionMode, setConstructionMode, setConstructionMode, setHidingMode, setName, setParameter, setParameterUnconditioned, setVerbose, toStringVerbose, unconfiguredItems, validate, validateGeneric, writeHistory, writeHistory, writeHistory@Parameter(label="\u03c3 of Gaussian",
required=false,
dataIOOrder=2,
direction=IN,
mode=STANDARD,
description="Std. deviation of Gaussian.")
protected Double gaussStdDev
The mask width is derived from the standard deviation of the Gaussian,
i.e. the width is given by
.
Note that the minimum width is 3.
@Parameter(label="Mask Height",
required=false,
dataIOOrder=3,
direction=IN,
mode=STANDARD,
description="Height of the filter mask.")
protected Integer height
Note that the height of the mask must not be smaller than 3.
@Parameter(label="Invert Mask",
required=false,
dataIOOrder=5,
direction=IN,
mode=STANDARD,
description="If true, filter mask is inverted.")
protected MTBBooleanData invertMask
As defined in the original paper the filter targets at filtering dark
structures on bright background.
To detect bright structures on dark
background the mask needs to be inverted.
@Parameter(label="Normalize Mask",
required=false,
dataIOOrder=4,
direction=IN,
mode=STANDARD,
description="If true, mask is normalized to a sum of zero.")
protected MTBBooleanData normalizeMask
public ChaudhuriMatchedFilter2D()
throws de.unihalle.informatik.Alida.exceptions.ALDOperatorException
de.unihalle.informatik.Alida.exceptions.ALDOperatorExceptionprotected Object readResolve()
MTBOperatorThis function is called on an instance of this class being deserialized from file, prior to handing the instance over to the user. It takes care of a proper initialization of transient member variables as they are not initialized to the default values during deserialization.
readResolve in class OrientedFilter2Dpublic void validateCustom()
throws de.unihalle.informatik.Alida.exceptions.ALDOperatorException
validateCustom in class de.unihalle.informatik.Alida.operator.ALDOperatorde.unihalle.informatik.Alida.exceptions.ALDOperatorExceptionpublic ChaudhuriMatchedFilter2D clone()
clone in class OrientedFilter2Dpublic MTBImageDouble getKernel(double _angle)
getKernel in class OrientedFilter2D_angle - Rotation angle in degrees.public void setStandardDeviation(double s)
s - Standard deviation
.public void setHeight(int h)
h - Height of mask.public void setInvertMask(boolean b)
b - Flag for inversion.public void setInvertMask(MTBBooleanData m)
Using this method with MiToBo wrapper datatypes instead of passing over directly a boolean preserves consistency in the processing history.
m - Value for the mask inversion flag.public void enableNormalization()
public void disableNormalization()
public void setKernelNormalization(MTBBooleanData kn)
Using this method with MiToBo wrapper datatypes instead of passing over directly a boolean preserves consistency in the processing history.
kn - Value for the kernel normalization flag.Copyright © 2010–2025 Martin Luther University Halle-Wittenberg, Institute of Computer Science, Pattern Recognition and Bioinformatics. All rights reserved.