@ALDAOperator(genericExecutionMode=ALL, level=APPLICATION) public class StromulesDetector2D extends MTBOperator implements loci.common.StatusReporter
Given plastid regions, the basic idea of this operator is to search for evidence of stromules in the vicinity of each plastid region. To this end short curvilinear segments are localized applying Steger's ridge detection approach. Subsequently various geometric criteria are applied to validate if a curvilinear segment is likely to refer to a stromule or not.
For further details on the methodology refer to
StegerRidgeDetection2DWrapper
Modifier and Type | Class and Description |
---|---|
static class |
StromulesDetector2D.DetectMode
Heuristic to use for detecting stromuli.
|
Modifier and Type | Field and Description |
---|---|
private MTBRegion2DSet |
candidateRegions
List of stromule candidate regions.
|
private double[] |
comXs
List of x-coordinates of centers of mass of plastid regions.
|
private double[] |
comYs
List of y-coordinates of centers of mass of plastid regions.
|
private int |
cSize
Size of input image in c dimension.
|
private int |
degSampling
Sampling step size for vesselness enhancement filtering.
|
protected double |
ellipseDistThresh
Ellipse distance threshold.
|
protected double |
highContrast
Highest grayscale value of the line.
|
private Vector<MTBRegion2D> |
identifiedRegions
List of validated plastid regions with stromules.
|
private MTBImageByte |
inImg
Gray-scale input image.
|
protected double |
lineWidth
Line width.
|
protected double |
lowContrast
Lowest grayscale value of the line.
|
protected Vector<loci.common.StatusListener> |
m_statusListeners
Vector of installed
StatusListener objects. |
private double[] |
maxAxisLengths
List of maximal axis lengths of plastid regions.
|
protected double |
maxLineLength
Maximal line length.
|
private double[] |
minAxisLengths
List of minimal axis lengths of plastid regions.
|
protected double |
minLineLength
Minimal line length.
|
private int |
minW
Estimated width of linear structures in vesselness enhancement filtering.
|
private StromulesDetector2D.DetectMode |
mode
Detection mode.
|
private static String |
opIdentifier
Identifier for outputs in verbose mode.
|
private double[] |
orient
List of orientations of plastid regions.
|
private MTBImageByte |
plastidMask
Binary mask of pre-segmented plastid regions.
|
private MTBRegion2DSet |
plastidRegions
(Optional) set of detected plastid regions.
|
private MTBImageRGB |
resultImgIntermediate
Debug image with intermediate result data.
|
private MTBImageShort |
resultLabelImage
Label image of detected plastid regions with stromuli.
|
protected boolean |
showAdditionalResults
Enable/disable display of additional intermediate results.
|
protected double |
stromuliAngleThreshold
Stromuli orientation angle criterion.
|
private MTBRegion2DSet |
stromuliRegions
Set of detected plastid regions with stromuli.
|
private int |
tSize
Size of input image in t dimension.
|
protected boolean |
useAngleCriterion
Enable/disable angle criterion.
|
protected boolean |
useEllipseDistThreshold
Enable/disable ellipse distance threshold.
|
protected boolean |
useMultiIntersectionCheck
Enable/disable line multi-intersection check.
|
private int |
xSize
Size of input image in x dimension.
|
private int |
ySize
Size of input image in y dimension.
|
private int |
zSize
Size of input image in z dimension.
|
Constructor and Description |
---|
StromulesDetector2D()
Default constructor.
|
Modifier and Type | Method and Description |
---|---|
void |
addStatusListener(loci.common.StatusListener statuslistener) |
private void |
detectStromuliRidgeModel(MTBImageShort roiImgDilated,
MTBRegion2DSet dilatedROIs)
Detect stromule candidates applying Steger operator.
|
private void |
detectStromuliStatisticalModel(MTBImageShort roiImg,
MTBImage result_stack,
double[] comXs,
double[] comYs,
double[] orient)
Detect stromules applying a statistical model.
|
void |
notifyListeners(loci.common.StatusEvent e) |
protected void |
operate() |
private MTBRegion2DSet |
preprocessPlastidRegions()
Pre-filtering of plastid regions to find regions accidentally including
already a stromule.
|
void |
removeStatusListener(loci.common.StatusListener statuslistener) |
readResolve
addOperatorExecutionProgressEventListener, 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, validateCustom, validateGeneric, writeHistory, writeHistory, writeHistory
private static final String opIdentifier
@Parameter(label="Input Image", required=true, dataIOOrder=0, direction=IN, description="Input image.") private MTBImageByte inImg
@Parameter(label="Plastid Mask", required=true, dataIOOrder=1, direction=IN, description="Plastid mask.") private MTBImageByte plastidMask
@Parameter(label="Detection Mode", required=true, dataIOOrder=2, direction=IN, description="Detection mode.") private StromulesDetector2D.DetectMode mode
@Parameter(label="Apply line multi-intersection check?", required=true, dataIOOrder=12, direction=IN, mode=STANDARD, description="Checks if a potential stromuli line intersects a region at least twice, then it might be a reflection") protected boolean useMultiIntersectionCheck
@Parameter(label="Apply ellipse distance threshold?", required=true, dataIOOrder=13, direction=IN, mode=STANDARD, description="Use Ellipse distance threshold.") protected boolean useEllipseDistThreshold
@Parameter(label="Ellipse distance threshold", required=true, dataIOOrder=14, direction=IN, mode=STANDARD, description="Ellipse distance threshold.") protected double ellipseDistThresh
@Parameter(label="Apply angle criterion?", required=true, dataIOOrder=15, direction=IN, mode=STANDARD, description="Apply stromuli angle criterion.") protected boolean useAngleCriterion
@Parameter(label="Stromuli angle threshold", required=true, dataIOOrder=16, direction=IN, mode=STANDARD, description="Stromuli-tangent angle threshold (in degrees).") protected double stromuliAngleThreshold
@Parameter(label="Line Width", required=true, dataIOOrder=20, direction=IN, mode=STANDARD, description="Line width.") protected double lineWidth
@Parameter(label="Low Contrast", required=true, dataIOOrder=21, direction=IN, mode=STANDARD, description="Low contrast.") protected double lowContrast
@Parameter(label="High Contrast", required=true, dataIOOrder=22, direction=IN, mode=STANDARD, description="High contrast.") protected double highContrast
@Parameter(label="Minimum Line Length", required=true, dataIOOrder=23, direction=IN, mode=STANDARD, description="Minimum line length.") protected double minLineLength
@Parameter(label="Maximum Line Length", required=true, dataIOOrder=24, direction=IN, mode=STANDARD, description="Maximum line length.") protected double maxLineLength
@Parameter(label="Plastid Regions", dataIOOrder=0, direction=IN, required=false, description="Resulting plastid region set.") private MTBRegion2DSet plastidRegions
@Parameter(label="Show additional intermediate results?", dataIOOrder=0, supplemental=true, direction=IN, mode=STANDARD, description="Enables display of additional result images.") protected boolean showAdditionalResults
@Parameter(label="Stromuli Regions", dataIOOrder=1, direction=OUT, description="Resulting stromuli region set.") private MTBRegion2DSet stromuliRegions
@Parameter(label="Result Label Image", dataIOOrder=2, direction=OUT, description="Label image of detected plastids with stromuli.") private MTBImageShort resultLabelImage
private int xSize
private int ySize
private int zSize
private int tSize
private int cSize
private int degSampling
private double[] comXs
private double[] comYs
private double[] orient
private double[] minAxisLengths
private double[] maxAxisLengths
private int minW
private Vector<MTBRegion2D> identifiedRegions
private MTBRegion2DSet candidateRegions
private MTBImageRGB resultImgIntermediate
protected Vector<loci.common.StatusListener> m_statusListeners
StatusListener
objects.public StromulesDetector2D() throws de.unihalle.informatik.Alida.exceptions.ALDOperatorException
de.unihalle.informatik.Alida.exceptions.ALDOperatorException
- Thrown in case of operate failure.protected void operate() throws de.unihalle.informatik.Alida.exceptions.ALDOperatorException, de.unihalle.informatik.Alida.exceptions.ALDProcessingDAGException
operate
in class de.unihalle.informatik.Alida.operator.ALDOperator
de.unihalle.informatik.Alida.exceptions.ALDOperatorException
de.unihalle.informatik.Alida.exceptions.ALDProcessingDAGException
private MTBRegion2DSet preprocessPlastidRegions() throws de.unihalle.informatik.Alida.exceptions.ALDOperatorException, de.unihalle.informatik.Alida.exceptions.ALDProcessingDAGException
de.unihalle.informatik.Alida.exceptions.ALDOperatorException
- Thrown in case of failure.de.unihalle.informatik.Alida.exceptions.ALDProcessingDAGException
- Thrown in case of failure.private void detectStromuliRidgeModel(MTBImageShort roiImgDilated, MTBRegion2DSet dilatedROIs) throws de.unihalle.informatik.Alida.exceptions.ALDOperatorException, de.unihalle.informatik.Alida.exceptions.ALDProcessingDAGException
roiImgDilated
- Image with dilated ROIs.dilatedROIs
- Set of dilated ROIs.de.unihalle.informatik.Alida.exceptions.ALDOperatorException
- Thrown in case of failure.de.unihalle.informatik.Alida.exceptions.ALDProcessingDAGException
- Thrown in case of failure.private void detectStromuliStatisticalModel(MTBImageShort roiImg, MTBImage result_stack, double[] comXs, double[] comYs, double[] orient)
roiImg
- ROI image.result_stack
- Result stack.comXs
- Center of mass x-coordinates.comYs
- Center of mass y-coordinates.orient
- Orientations.public void addStatusListener(loci.common.StatusListener statuslistener)
addStatusListener
in interface loci.common.StatusReporter
public void notifyListeners(loci.common.StatusEvent e)
notifyListeners
in interface loci.common.StatusReporter
public void removeStatusListener(loci.common.StatusListener statuslistener)
removeStatusListener
in interface loci.common.StatusReporter
Copyright © 2010–2020 Martin Luther University Halle-Wittenberg, Institute of Computer Science, Pattern Recognition and Bioinformatics. All rights reserved.