@ALDAOperator(genericExecutionMode=ALL, level=APPLICATION, allowBatchMode=true, shortDescription="Detects nuclei and particles inside these nuclei.") public class NuclearParticleDetector2D extends MTBOperator
This class detects nuclei and particles inside these nuclei and gives some statistics about particles, like particle number per nuclei, particle size, sum of intensities, etc. Nuclei are detected via the NucleusDetector2D by using the Niblack thresholding. As post-process the nuclei channel is gamma corrected and filter with a small gaussian, due to uneven illumination of the nuclei in the images. This may depends on the input image data and can be switched off separately. Particles are detected via the ParticleDetectorUWT2D.
NucleusDetector2D
,
ParticleDetectorUWT2D
Modifier and Type | Field and Description |
---|---|
protected Boolean |
correctGamma |
private String |
fileName
Name of input image file.
|
protected Boolean |
filterImage |
protected Double |
gamma |
private MTBImage |
inputImage |
private Integer |
nucChannel |
private NucleusDetector2D |
nucDetector |
private MTBImage |
nucImage
Part of the input image, representing the stained nuclei.
|
private MTBRegion2DSet |
nucleiRegions |
private Integer |
partChannel |
private ParticleDetectorUWT2D |
partDetector |
private MTBRegion2DSet |
particleRegions |
private MTBImage |
partImage
Part of the input image, representing the stained particles.
|
private MTBTableModel |
resultTable |
private int |
sizeX
Image width.
|
private int |
sizeY
Image height.
|
protected Boolean |
swapNuclei |
Constructor and Description |
---|
NuclearParticleDetector2D()
Standard constructor.
|
NuclearParticleDetector2D(MTBImageByte _inputImage,
Integer _nucChannel,
Integer _partChannel,
Boolean _correctGamma,
Double _gamma,
Boolean _filterImage,
NucleusDetector2D _nucDetector,
ParticleDetectorUWT2D _partDetector) |
Modifier and Type | Method and Description |
---|---|
private void |
createResultTable(Vector<Vector<Integer>> particleMatching)
Create result table with statistics about nuclei and particles.
|
private void |
createSwapResultTable()
Create result table with statistics about nuclei and particles.
|
Boolean |
getCorrectGamma()
Get flag to use gamma correction.
|
String |
getDocumentation() |
Boolean |
getFilterImage()
Get flag to use gaussian filter.
|
Double |
getGamma()
Get gamma correction value.
|
MTBImage |
getInputImage()
Get input image.
|
NucleusDetector2D |
getNucDetector()
Get detector for nuclei.
|
Integer |
getNucleiChannel()
Get nuclei channel number.
|
MTBRegion2DSet |
getNucleiRegions()
Get detected nuclei regions.
|
Integer |
getPartChannel()
Get particle channel number.
|
ParticleDetectorUWT2D |
getPartDetector()
Get detector for particles.
|
MTBRegion2DSet |
getParticleRegions()
Get detected particle regions.
|
MTBTableModel |
getResultTable()
Get particle statistics.
|
private Vector<Vector<Integer>> |
matchParticles(MTBRegion2DSet tmpPartRegions)
Match particle regions to nuclei regions.
|
protected void |
operate() |
void |
setCorrectGamma(Boolean _correctGamma)
Set flag to use gamma correction.
|
void |
setFilterImage(Boolean _filterImage)
Set flag to use gaussian filter.
|
void |
setGamma(Double _gamma)
Set gamma correction value.
|
void |
setInputImage(MTBImageByte _inputImage)
Set input image.
|
void |
setNucDetector(NucleusDetector2D _nucDetector)
Set detector for nuclei.
|
void |
setNucleiChannel(Integer _nucChannel)
Set nuclei channel number.
|
void |
setPartChannel(Integer _partChannel)
Set particle channel number.
|
void |
setPartDetector(ParticleDetectorUWT2D _partDetector)
Set detector for particles.
|
private void |
useGammaCorrection()
Callback routine to change parameters.
|
void |
validateCustom()
Custom validation of some input parameters.
|
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="Input Image", required=true, direction=IN, description="Input image.", mode=STANDARD, dataIOOrder=0) private transient MTBImage inputImage
@Parameter(label="Nuclei Channel", required=true, direction=IN, description="Channel number of nuclei stain.", mode=STANDARD, dataIOOrder=1) private Integer nucChannel
@Parameter(label="Particle Channel", required=true, direction=IN, description="Channel number of particle stain.", mode=STANDARD, dataIOOrder=2) private Integer partChannel
@Parameter(label="Use Gamma Correction", required=true, direction=IN, description="Flag to use gamma correction.", mode=ADVANCED, callback="useGammaCorrection", paramModificationMode=MODIFIES_INTERFACE, dataIOOrder=3) protected Boolean correctGamma
@Parameter(label="Gamma Value", required=true, direction=IN, description="Gamma correction value.", mode=ADVANCED, dataIOOrder=4) protected Double gamma
@Parameter(label="Use Gaussian Filter", required=true, direction=IN, description="Flag to use gaussian filter.", mode=ADVANCED, dataIOOrder=5) protected Boolean filterImage
@Parameter(label="Nuclei Intensity in Particle Channel", required=true, direction=IN, description="Flag to use nuclei intensity in particle channel.", mode=ADVANCED, dataIOOrder=6) protected Boolean swapNuclei
@Parameter(label="Nucleus Detector", required=true, direction=IN, description="Detector for nuclei.", mode=ADVANCED, dataIOOrder=7) private NucleusDetector2D nucDetector
@Parameter(label="Particle Detector", required=true, direction=IN, description="Detector for particles.", mode=ADVANCED, dataIOOrder=8) private ParticleDetectorUWT2D partDetector
@Parameter(label="Nuclei Regions", required=true, direction=OUT, description="Nuclei regions.") private transient MTBRegion2DSet nucleiRegions
@Parameter(label="Particle Regions", required=false, direction=OUT, description="Particle regions.") private transient MTBRegion2DSet particleRegions
@Parameter(label="Result Table", required=true, direction=OUT, description="Particle statistics.") private transient MTBTableModel resultTable
private int sizeX
private int sizeY
private String fileName
private transient MTBImage nucImage
private transient MTBImage partImage
public NuclearParticleDetector2D() throws de.unihalle.informatik.Alida.exceptions.ALDOperatorException
de.unihalle.informatik.Alida.exceptions.ALDOperatorException
public NuclearParticleDetector2D(MTBImageByte _inputImage, Integer _nucChannel, Integer _partChannel, Boolean _correctGamma, Double _gamma, Boolean _filterImage, NucleusDetector2D _nucDetector, ParticleDetectorUWT2D _partDetector) throws de.unihalle.informatik.Alida.exceptions.ALDOperatorException
_inputImage
- input image_nucChannel
- channel number of nuclei stain_partChannel
- channel number of particle stain_correctGamma
- flag to use gamma correction_gamma
- gamma correction value_filterImage
- flag to use gaussian filter_nucDetector
- detector for nuclei_partDetector
- detector for particlesde.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
private void useGammaCorrection()
public MTBImage getInputImage()
public void setInputImage(MTBImageByte _inputImage)
public Integer getNucleiChannel()
public void setNucleiChannel(Integer _nucChannel)
public Integer getPartChannel()
public void setPartChannel(Integer _partChannel)
public Boolean getCorrectGamma()
public void setCorrectGamma(Boolean _correctGamma)
public Double getGamma()
public void setGamma(Double _gamma)
public Boolean getFilterImage()
public void setFilterImage(Boolean _filterImage)
public NucleusDetector2D getNucDetector()
public void setNucDetector(NucleusDetector2D _nucDetector)
public ParticleDetectorUWT2D getPartDetector()
public void setPartDetector(ParticleDetectorUWT2D _partDetector)
public MTBRegion2DSet getNucleiRegions()
public MTBRegion2DSet getParticleRegions()
public MTBTableModel getResultTable()
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 Vector<Vector<Integer>> matchParticles(MTBRegion2DSet tmpPartRegions)
private void createResultTable(Vector<Vector<Integer>> particleMatching)
private void createSwapResultTable()
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.