@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() |
readResolve
addOperatorExecutionProgressEventListener, 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.ALDOperatorException
public void validateCustom() throws de.unihalle.informatik.Alida.exceptions.ALDOperatorException
validateCustom
in class de.unihalle.informatik.Alida.operator.ALDOperator
de.unihalle.informatik.Alida.exceptions.ALDOperatorException
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 MTBImage createOverlay() throws de.unihalle.informatik.Alida.exceptions.ALDOperatorException, de.unihalle.informatik.Alida.exceptions.ALDProcessingDAGException
de.unihalle.informatik.Alida.exceptions.ALDOperatorException
de.unihalle.informatik.Alida.exceptions.ALDProcessingDAGException
public String getDocumentation()
getDocumentation
in class de.unihalle.informatik.Alida.operator.ALDOperator
Copyright © 2010–2020 Martin Luther University Halle-Wittenberg, Institute of Computer Science, Pattern Recognition and Bioinformatics. All rights reserved.