@ALDAOperator(genericExecutionMode=ALL,
level=APPLICATION,
shortDescription="Implements xylem detection in RGB or HSX images.")
public class XylemDetector
extends MTBOperator
| Modifier and Type | Field and Description |
|---|---|
private Boolean |
createContourOverlay |
private int |
erodeSize
The size of the structuring element for erosion to compute seed regions.
|
private MTBImageByte |
grownRegions
Resulting regions from growing.
|
private double |
hueThresh
The hue threshold.
|
private MTBImageByte |
initialSegmentationOut
Initial segmentation of xylem regions computed of supplied
|
private XylemGrower.GrowingMode |
linkageMode
The algorithm we use to link new pixels to the region.
|
private int |
minAreaAfterOpeningInitSeg
Minimal area (in pixels) of a region required after opening.
|
private int |
minAreaPostProcessing
The minimum size of a
MTBRegion2D to not be removed (after
opening the grown regions). |
private int |
minAreaSeedRegions
The minimum size of a
MTBRegion2D to further erode when computing seed regions. |
private double |
minCompactnessInitSeg
Minimal compactness of a region required after opening.
|
private XylemGrower.Neighbourhood |
neighbourhood
The neighbourhood mode to inspect new pixel.
|
private int |
openingSESize
The minimum size of a
MTBRegion2D before erosion. |
private MTBTableModel |
resultsTable
A table containing information for each region
|
private MTBImageByte |
resultXylemRegions
Final xylem regions after postprocessing.
|
private double |
satThresh
The saturation threshold.
|
private MTBImageByte |
seedRegions
The seed regions as a binary image after the final erosion.
|
private int |
seOpeningSizeInitSeg
Size of the structuring element for Opening.
|
private Double |
timing
Consumed time in seconds where
TimingMode states if
this reflect user or real time. |
private String |
timingMode
Timing mode, may be user time or real time.
|
private double |
xThresh
The Intensity/Brightness/Value threshold.
|
private MTBImageByte |
xylemHsxImage
HS(X)-Color Channel Image.
|
private MTBImage |
xylemRegionsOverlay
Resulting regions from growing.
|
private MTBImageRGB |
xylemRGBImage
RGB-Color Channel Image.
|
| Constructor and Description |
|---|
XylemDetector()
Default Constructor.
|
| Modifier and Type | Method and Description |
|---|---|
private MTBImage |
createOverlay() |
String |
getDocumentation() |
protected void |
operate()
|
void |
validateCustom() |
readResolveaddOperatorExecutionProgressEventListener, addParameter, addParameter, addParameterUnconditioned, fieldContained, fireOperatorExecutionProgressEvent, getALDPortHashAccessKey, getConstructionMode, 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="XylemImageRGB",
required=false,
dataIOOrder=0,
direction=IN,
description="Xylem image as RGB-image")
private transient MTBImageRGB xylemRGBImage
@Parameter(label="XylemImageHSX",
required=false,
dataIOOrder=1,
direction=IN,
description="Xylem image as HSX-image")
private transient MTBImageByte xylemHsxImage
@Parameter(label="XylemcreateContourOverlayImageHSX",
required=false,
dataIOOrder=3,
direction=IN,
description="Create overlay image with xylem contours on initial image")
private Boolean createContourOverlay
@Parameter(label="SizeOpening (InitSeg)",
required=false,
dataIOOrder=3,
direction=IN,
description="The size of the structuring element for the opening (initial segmentation)",
mode=ADVANCED)
private int seOpeningSizeInitSeg
@Parameter(label="MinRegionSize (InitSeg)",
required=false,
dataIOOrder=4,
direction=IN,
description="The minimal size of the region required after opening (initial segmentation)",
mode=ADVANCED)
private int minAreaAfterOpeningInitSeg
< minAreaAfterOpening the region
will be removed by the
ComponentPostprocess
operator.@Parameter(label="MinCompactness (InitSeg)",
required=false,
dataIOOrder=5,
direction=IN,
description="The minimal compactness of the region required after opening (initial segmentation)",
mode=ADVANCED)
private double minCompactnessInitSeg
< minCompactness the
region will be removed by the
ComponentPostprocess
operator.@Parameter(label="SizeErosion (growing)",
required=false,
dataIOOrder=6,
direction=IN,
description="Size of structuring element for ersion to compute seed regions (Growing)",
mode=ADVANCED)
private int erodeSize
ErodeMode is
set to Dynamic, you should use a small
size. Otherwise use a size >= 20.@Parameter(label="MinAreaToErode (growing)",
required=false,
dataIOOrder=7,
direction=IN,
description="Minimal size of a region for further erosion of seed regions (Growing)",
mode=ADVANCED)
private int minAreaSeedRegions
MTBRegion2D to further erode when computing seed regions.@Parameter(label="GrowingMode",
required=true,
dataIOOrder=8,
direction=IN,
description="The method for growing the region")
private XylemGrower.GrowingMode linkageMode
@Parameter(label="HueThreshold",
required=true,
dataIOOrder=9,
direction=IN,
description="Intensity channel threshold")
private double hueThresh
@Parameter(label="SaturationThreshold",
required=true,
dataIOOrder=10,
direction=IN,
description="Intensity channel threshold")
private double satThresh
@Parameter(label="XThreshold",
required=true,
dataIOOrder=11,
direction=IN,
description="Intensity channel threshold")
private double xThresh
@Parameter(label="Neighbourhood used (growing)",
required=false,
dataIOOrder=12,
direction=IN,
description="The neighbourhood for the pixel to visit (Growing)",
mode=ADVANCED)
private XylemGrower.Neighbourhood neighbourhood
@Parameter(label="SizeOpening (postprocessing growing)",
required=true,
dataIOOrder=13,
direction=IN,
description="Size of SE for opening (post processing of growing)")
private int openingSESize
MTBRegion2D before erosion.@Parameter(label="MinArea (postprocessing growing)",
required=true,
dataIOOrder=14,
direction=IN,
description="Minimal area of a region (post processing of growing)")
private int minAreaPostProcessing
MTBRegion2D to not be removed (after
opening the grown regions).@Parameter(label="XylemRegions",
dataIOOrder=1,
direction=OUT,
description="Final xylem regions after postprocessing")
private transient MTBImageByte resultXylemRegions
@Parameter(label="ResultTable",
required=true,
direction=OUT,
dataIOOrder=2,
supplemental=false,
description="Table containing the features for each xylem")
private MTBTableModel resultsTable
@Parameter(label="InitalSegmentation",
dataIOOrder=3,
direction=OUT,
description="Initial segmentation as a binary image")
private transient MTBImageByte initialSegmentationOut
@Parameter(label="Seed Regions",
required=true,
supplemental=true,
direction=OUT,
dataIOOrder=4,
description="Seed regions from erosion")
private MTBImageByte seedRegions
@Parameter(label="GrownRegions",
required=true,
dataIOOrder=5,
supplemental=true,
direction=OUT,
description="regions from growing")
private transient MTBImageByte grownRegions
@Parameter(label="XylemRegionOverlay",
required=false,
dataIOOrder=6,
supplemental=true,
direction=OUT,
description="Xylem contours overlay in original image to segment")
private transient MTBImage xylemRegionsOverlay
@Parameter(label="Timing",
dataIOOrder=10,
supplemental=true,
direction=OUT,
description="Consumed time in seconds")
private Double timing
TimingMode states if
this reflect user or real time.@Parameter(label="TimingMode",
dataIOOrder=11,
supplemental=true,
direction=OUT,
description="Timing Mode of timing")
private String timingMode
public XylemDetector()
throws de.unihalle.informatik.Alida.exceptions.ALDOperatorException
de.unihalle.informatik.Alida.exceptions.ALDOperatorExceptionpublic void validateCustom()
throws de.unihalle.informatik.Alida.exceptions.ALDOperatorException
validateCustom in class de.unihalle.informatik.Alida.operator.ALDOperatorde.unihalle.informatik.Alida.exceptions.ALDOperatorExceptionprotected 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 MTBImage createOverlay() throws de.unihalle.informatik.Alida.exceptions.ALDOperatorException, de.unihalle.informatik.Alida.exceptions.ALDProcessingDAGException
de.unihalle.informatik.Alida.exceptions.ALDOperatorExceptionde.unihalle.informatik.Alida.exceptions.ALDProcessingDAGExceptionpublic String getDocumentation()
getDocumentation in class de.unihalle.informatik.Alida.operator.ALDOperatorCopyright © 2010–2020 Martin Luther University Halle-Wittenberg, Institute of Computer Science, Pattern Recognition and Bioinformatics. All rights reserved.