@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.DetectModeHeuristic to use for detecting stromuli. | 
| Modifier and Type | Field and Description | 
|---|---|
| private MTBRegion2DSet | candidateRegionsList of stromule candidate regions. | 
| private double[] | comXsList of x-coordinates of centers of mass of plastid regions. | 
| private double[] | comYsList of y-coordinates of centers of mass of plastid regions. | 
| private int | cSizeSize of input image in c dimension. | 
| private int | degSamplingSampling step size for vesselness enhancement filtering. | 
| protected double | ellipseDistThreshEllipse distance threshold. | 
| protected double | highContrastHighest grayscale value of the line. | 
| private Vector<MTBRegion2D> | identifiedRegionsList of validated plastid regions with stromules. | 
| private MTBImageByte | inImgGray-scale input image. | 
| protected double | lineWidthLine width. | 
| protected double | lowContrastLowest grayscale value of the line. | 
| protected Vector<loci.common.StatusListener> | m_statusListenersVector of installed  StatusListenerobjects. | 
| private double[] | maxAxisLengthsList of maximal axis lengths of plastid regions. | 
| protected double | maxLineLengthMaximal line length. | 
| private double[] | minAxisLengthsList of minimal axis lengths of plastid regions. | 
| protected double | minLineLengthMinimal line length. | 
| private int | minWEstimated width of linear structures in vesselness enhancement filtering. | 
| private StromulesDetector2D.DetectMode | modeDetection mode. | 
| private static String | opIdentifierIdentifier for outputs in verbose mode. | 
| private double[] | orientList of orientations of plastid regions. | 
| private MTBImageByte | plastidMaskBinary mask of pre-segmented plastid regions. | 
| private MTBRegion2DSet | plastidRegions(Optional) set of detected plastid regions. | 
| private MTBImageRGB | resultImgIntermediateDebug image with intermediate result data. | 
| private MTBImageShort | resultLabelImageLabel image of detected plastid regions with stromuli. | 
| protected boolean | showAdditionalResultsEnable/disable display of additional intermediate results. | 
| protected double | stromuliAngleThresholdStromuli orientation angle criterion. | 
| private MTBRegion2DSet | stromuliRegionsSet of detected plastid regions with stromuli. | 
| private int | tSizeSize of input image in t dimension. | 
| protected boolean | useAngleCriterionEnable/disable angle criterion. | 
| protected boolean | useEllipseDistThresholdEnable/disable ellipse distance threshold. | 
| protected boolean | useMultiIntersectionCheckEnable/disable line multi-intersection check. | 
| private int | xSizeSize of input image in x dimension. | 
| private int | ySizeSize of input image in y dimension. | 
| private int | zSizeSize 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) | 
readResolveaddOperatorExecutionProgressEventListener, 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, writeHistoryprivate 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.ALDOperatorde.unihalle.informatik.Alida.exceptions.ALDOperatorExceptionde.unihalle.informatik.Alida.exceptions.ALDProcessingDAGExceptionprivate 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.StatusReporterpublic void notifyListeners(loci.common.StatusEvent e)
notifyListeners in interface loci.common.StatusReporterpublic void removeStatusListener(loci.common.StatusListener statuslistener)
removeStatusListener in interface loci.common.StatusReporterCopyright © 2010–2020 Martin Luther University Halle-Wittenberg, Institute of Computer Science, Pattern Recognition and Bioinformatics. All rights reserved.