de.unihalle.informatik.MiToBo.apps.cytoplasm2D
Class CytoplasmAnalyzer2D

java.lang.Object
  extended by de.unihalle.informatik.Alida.operator.ALDOperator
      extended by de.unihalle.informatik.Alida.operator.ALDOperatorControllable
          extended by de.unihalle.informatik.MiToBo.core.operator.MTBOperatorControllable
              extended by de.unihalle.informatik.MiToBo.apps.cytoplasm2D.CytoplasmAnalyzer2D
All Implemented Interfaces:
de.unihalle.informatik.Alida.datatypes.ALDConfigurationValidator, de.unihalle.informatik.Alida.operator.events.ALDConfigurationEventListener, de.unihalle.informatik.Alida.operator.events.ALDConfigurationEventReporter, de.unihalle.informatik.Alida.operator.events.ALDControlEventListener, de.unihalle.informatik.Alida.operator.events.ALDControlEventReporter, de.unihalle.informatik.Alida.operator.events.ALDOperatorExecutionProgressEventListener, EventListener

@ALDAOperator(genericExecutionMode=ALL,
              level=APPLICATION)
public class CytoplasmAnalyzer2D
extends MTBOperatorControllable

Operator to segment cell contours from a given single-layer image.

This operator allows to iteratively segment cell membrane and cytoplasm, respectively. It basically relies on snakes applying them either in an iterative fashion or without iterative levels. In the first case between the different snake runs the segmented cell regions are expanded by voronoi dilation and their internal areas are masked to enforce further region growth by decreasing the regions' average intensity values.

Further details about the iterative method can be found in the paper: B. Möller, N. Stöhr, S. Hüttelmaier and S. Posch, "Cascaded Segmentation of Grained Cell Tissue with Active Contour Models". In Proc. of Int. Conf. on Pattern Recognition (ICPR '10), August 2010.

Details about the non-iterative approach can be found in: B. Möller and S. Posch, "MiCA - Easy Cell Image Analysis with Normalized Snakes". In Proc. of Workshop on Microscopic Image Analysis with Applications in Biology (MIAAB '11), Heidelberg, Germany, Sep. 2011.

Author:
moeller

Nested Class Summary
static class CytoplasmAnalyzer2D.DetectMode
          Operator mode.
 
Nested classes/interfaces inherited from class de.unihalle.informatik.Alida.operator.ALDOperatorControllable
de.unihalle.informatik.Alida.operator.ALDOperatorControllable.OperatorControlStatus, de.unihalle.informatik.Alida.operator.ALDOperatorControllable.OperatorExecutionStatus
 
Nested classes/interfaces inherited from class de.unihalle.informatik.Alida.operator.ALDOperator
de.unihalle.informatik.Alida.operator.ALDOperator.HidingMode
 
Field Summary
protected  boolean[] activeSnakes
          Array with active snakes.
protected  int[] colorArray
          Array with colors for visualization.
protected  MTBPolygon2DSet currentSnakes
          Current set of snakes.
protected  CytoplasmAnalyzer2D.DetectMode detectionMode
          Operator mode to run.
protected  MTBImage inImg
          Single-layer input image to be processed.
protected  MTBPolygon2DSet initialSnakes
          Initial snakes for cells, e.g. nuclei contours.
protected  int maxExpansion
          Maximum expansion by Voronoi dilation.
protected  int maxLevels
          Maximum number of levels to perform.
protected  double minAreaGrowth
          Lower threshold for region growth.
protected  double minIntensityVariance
          Minimum admissible variance in new snake interior fractions..
protected  SegResult_Cytoplasm resultData
          Result data object.
protected  MTBImageRGB resultImage
          Result segmentation image.
protected  MTBPolygon2DSet resultSnakes
           
protected  boolean saveIntermediateResults
          Flag for saving intermediate results.
protected  String saveIntermediateResultsPath
          Path where to save intermediate results.
protected  boolean showIntermediateResults
          Flag for displaying intermediate results.
protected  SnakeOptimizerCoupled snakeOpter
          Snake optimizer.
 
Fields inherited from class de.unihalle.informatik.Alida.operator.ALDOperatorControllable
configurationEventlistenerList, controlEventlistenerList, notifyListenersRecursively, operatorExecStatus, operatorStatus, stepSize, stepWiseExecution
 
Fields inherited from class de.unihalle.informatik.Alida.operator.ALDOperator
completeDAG, name, operatorExecutionEventlistenerList, portHashAccess, verbose, versionProvider
 
Constructor Summary
CytoplasmAnalyzer2D()
          Default constructor.
CytoplasmAnalyzer2D(MTBImage img, MTBPolygon2DSet initS, SnakeOptimizerCoupled snakeObj, CytoplasmAnalyzer2D.DetectMode m, int _maxLevels)
          Default constructor.
 
Method Summary
 void disableSaveIntermediateResults()
          Do not save intermediate results.
 void disableShowIntermediateResults()
          Disable display of intermediate results.
 void enableSaveIntermediateResults()
          Save intermediate results.
 void enableShowIntermediateResults()
          Enable display of intermediate results.
 int getMaxLevels()
          Returns maximum number of levels in iterative mode.
 SegResult_Cytoplasm getResultData()
          Returns result data object.
protected  void operate()
           
 void setDetectionMode(CytoplasmAnalyzer2D.DetectMode m)
          Specify detection mode.
 void setInitialSnakes(MTBPolygon2DSet snakes)
          Specify initial snakes.
 void setInputImage(MTBImage img)
          Specify input image.
 void setIntermediateResultDirectory(String dir)
          Set intermediate result directory.
 void setMaxLevels(int maxL)
          Specify maximum number of levels for iterative mode.
 boolean supportsStepWiseExecution()
           
 
Methods inherited from class de.unihalle.informatik.Alida.operator.ALDOperatorControllable
addALDConfigurationEventListener, addALDControlEventListener, fireALDConfigurationEvent, fireALDControlEvent, getExecutionStatus, handleALDConfigurationEvent, handleALDControlEvent, removeALDConfigurationEventListener, removeALDControlEventListener, setNotifyRecursiveFlag
 
Methods inherited from class de.unihalle.informatik.Alida.operator.ALDOperator
addOperatorExecutionProgressEventListener, fieldContained, fireOperatorExecutionProgressEvent, getALDPortHashAccessKey, getConstructionMode, getHidingMode, getInInoutNames, getInInoutNames, getInNames, getInOutNames, getMissingRequiredInputs, getName, getNumParameters, getOutInoutNames, getOutNames, getParameter, getParameterDescriptor, getParameterNames, getSupplementalNames, getVerbose, getVersion, handleOperatorExecutionProgressEvent, isConfigured, print, print, print, printInterface, printInterface, readHistory, readResolve, reinitializeParameterDescriptors, removeOperatorExecutionProgressEventListener, runOp, runOp, runOp, setConstructionMode, setHidingMode, setName, setParameter, setVerbose, toStringVerbose, unconfiguredItems, validate, validateCustom, validateGeneric, writeHistory, writeHistory, writeHistory
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

inImg

@Parameter(label="Input image",
           required=true,
           direction=IN,
           description="Input Image.",
           dataIOOrder=-20,
           mode=STANDARD)
protected transient MTBImage inImg
Single-layer input image to be processed.


initialSnakes

@Parameter(label="Initial snake(s)",
           required=true,
           direction=IN,
           description="Initial snakes.",
           dataIOOrder=-19,
           mode=STANDARD)
protected MTBPolygon2DSet initialSnakes
Initial snakes for cells, e.g. nuclei contours.


snakeOpter

@Parameter(label="Snake optimizer",
           required=true,
           direction=IN,
           description="Snake optimizer object.",
           dataIOOrder=-18,
           mode=STANDARD)
protected SnakeOptimizerCoupled snakeOpter
Snake optimizer.


detectionMode

@Parameter(label="Operation mode",
           required=false,
           direction=IN,
           description="Mode of operation.",
           dataIOOrder=-15,
           mode=ADVANCED)
protected CytoplasmAnalyzer2D.DetectMode detectionMode
Operator mode to run.


maxLevels

@Parameter(label="Max. level count",
           required=false,
           direction=IN,
           description="Maximum levels in iterative mode.",
           dataIOOrder=-14,
           mode=ADVANCED)
protected int maxLevels
Maximum number of levels to perform.


maxExpansion

@Parameter(label="Max. distance in voronoi expansion",
           required=false,
           direction=IN,
           description="Maximum expansion during Voronoi dilation.",
           dataIOOrder=-13,
           mode=ADVANCED)
protected int maxExpansion
Maximum expansion by Voronoi dilation.


minAreaGrowth

@Parameter(label="Min. area growth",
           required=false,
           direction=IN,
           description="Minimum admissible area growth between iterations.",
           dataIOOrder=-12,
           mode=ADVANCED)
protected double minAreaGrowth
Lower threshold for region growth.


minIntensityVariance

@Parameter(label="Min. intensity variance",
           required=false,
           direction=IN,
           description="Minimum admissible area growth between iterations.",
           dataIOOrder=-11,
           mode=ADVANCED)
protected double minIntensityVariance
Minimum admissible variance in new snake interior fractions..


resultImage

@Parameter(label="Result image",
           required=true,
           direction=OUT,
           description="Result image showing snakes in overlay.")
protected transient MTBImageRGB resultImage
Result segmentation image.


resultData

@Parameter(label="Result Statistics",
           required=true,
           direction=OUT,
           description="Result data object.")
protected transient SegResult_Cytoplasm resultData
Result data object.


showIntermediateResults

@Parameter(label="Show intermediate results",
           supplemental=true,
           direction=IN,
           dataIOOrder=-3,
           description="Show intermediate results to user.")
protected boolean showIntermediateResults
Flag for displaying intermediate results.


saveIntermediateResults

@Parameter(label="Save intermediate results",
           supplemental=true,
           direction=IN,
           dataIOOrder=-2,
           description="Save intermediate results to disc.")
protected boolean saveIntermediateResults
Flag for saving intermediate results.


saveIntermediateResultsPath

@Parameter(label="Save intermediate results path",
           supplemental=true,
           direction=IN,
           dataIOOrder=-1,
           description="Path for saving (intermediate) results.")
protected String saveIntermediateResultsPath
Path where to save intermediate results.


resultSnakes

@Parameter(label="Result snakes",
           direction=OUT,
           description="Final snakes.",
           required=false)
protected transient MTBPolygon2DSet resultSnakes

activeSnakes

protected transient boolean[] activeSnakes
Array with active snakes.


colorArray

protected transient int[] colorArray
Array with colors for visualization.


currentSnakes

protected transient MTBPolygon2DSet currentSnakes
Current set of snakes.

Constructor Detail

CytoplasmAnalyzer2D

public CytoplasmAnalyzer2D()
                    throws de.unihalle.informatik.Alida.exceptions.ALDOperatorException
Default constructor.

Throws:
de.unihalle.informatik.Alida.exceptions.ALDOperatorException

CytoplasmAnalyzer2D

public CytoplasmAnalyzer2D(MTBImage img,
                           MTBPolygon2DSet initS,
                           SnakeOptimizerCoupled snakeObj,
                           CytoplasmAnalyzer2D.DetectMode m,
                           int _maxLevels)
                    throws de.unihalle.informatik.Alida.exceptions.ALDOperatorException
Default constructor.

Parameters:
inImg - Image to work on.
initS - Set of initial contours.
snakeObj - Snake parameter configuration object.
m - Detection mode.
maxLevels - Maximum number of levels.
Throws:
de.unihalle.informatik.Alida.exceptions.ALDOperatorException
Method Detail

supportsStepWiseExecution

public boolean supportsStepWiseExecution()
Specified by:
supportsStepWiseExecution in class de.unihalle.informatik.Alida.operator.ALDOperatorControllable

setInputImage

public void setInputImage(MTBImage img)
Specify input image.


setInitialSnakes

public void setInitialSnakes(MTBPolygon2DSet snakes)
Specify initial snakes.


getMaxLevels

public int getMaxLevels()
Returns maximum number of levels in iterative mode.


setMaxLevels

public void setMaxLevels(int maxL)
Specify maximum number of levels for iterative mode.


setDetectionMode

public void setDetectionMode(CytoplasmAnalyzer2D.DetectMode m)
Specify detection mode.


enableShowIntermediateResults

public void enableShowIntermediateResults()
Enable display of intermediate results.


disableShowIntermediateResults

public void disableShowIntermediateResults()
Disable display of intermediate results.


enableSaveIntermediateResults

public void enableSaveIntermediateResults()
Save intermediate results.


disableSaveIntermediateResults

public void disableSaveIntermediateResults()
Do not save intermediate results.


setIntermediateResultDirectory

public void setIntermediateResultDirectory(String dir)
Set intermediate result directory.


getResultData

public SegResult_Cytoplasm getResultData()
Returns result data object.


operate

protected void operate()
                throws de.unihalle.informatik.Alida.exceptions.ALDOperatorException,
                       de.unihalle.informatik.Alida.exceptions.ALDProcessingDAGException
Specified by:
operate in class de.unihalle.informatik.Alida.operator.ALDOperator
Throws:
de.unihalle.informatik.Alida.exceptions.ALDOperatorException
de.unihalle.informatik.Alida.exceptions.ALDProcessingDAGException


Copyright © 2010–2015 Martin Luther University Halle-Wittenberg. All rights reserved.