de.unihalle.informatik.MiToBo.segmentation.snakes.optimize
Class SnakeOptimizerSingle

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.segmentation.snakes.optimize.SnakeOptimizer
                  extended by de.unihalle.informatik.MiToBo.segmentation.snakes.optimize.SnakeOptimizerSingle
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, java.util.EventListener
Direct Known Subclasses:
SnakeOptimizerSingleGreedy, SnakeOptimizerSingleVarCalc

public abstract class SnakeOptimizerSingle
extends SnakeOptimizer

 Image contour segmentation using parametric snakes.
 

Author:
moeller, misiak

Nested Class Summary
static class SnakeOptimizerSingle.EnergyNormalizationMode
          Snake normalization mode.
static class SnakeOptimizerSingle.IntensityNormalizationMode
          Image intensity normalization mode.
 
Nested classes/interfaces inherited from class de.unihalle.informatik.MiToBo.segmentation.snakes.optimize.SnakeOptimizer
SnakeOptimizer.Snake_status
 
Nested classes/interfaces inherited from class de.unihalle.informatik.Alida.operator.ALDOperatorControllable
de.unihalle.informatik.Alida.operator.ALDOperatorControllable.OperatorControlStatus
 
Nested classes/interfaces inherited from class de.unihalle.informatik.Alida.operator.ALDOperator
de.unihalle.informatik.Alida.operator.ALDOperator.HidingMode
 
Field Summary
protected  MTBImageRGB dispImg
          Image for showing/saving intermediate results.
protected  java.lang.Boolean doResampling
          Flag to enable/disable snake resampling.
protected  double energy
          Current energy of the snake.
protected  boolean energyCalculationRequested
          Flag for invoking energy calculations.
protected  MTBImage inImgOriginal
          Copy of input image The input image is normalized to intensities in range [0,1], this image is a backup of the original one.
protected  SnakeOptimizerSingle.IntensityNormalizationMode intNormMode
          Mode for normalizing image intensities.
protected  SnakeOptimizerSingle.EnergyNormalizationMode normMode
          Mode for normalizing energies.
protected  int[][] overlapMask
          Mask to indicate overlap regions between snakes.
protected  boolean overlapMaskRequested
          Flag to indicate whether an energy requested overlap mask.
protected  double previousEnergy
          Snake energy in previous iteration (for change assessment).
protected  MTBSnake previousSnake
          Old snake of previous iteration (for evolution assessment).
protected  java.lang.Double resampleSegLength
          Target length of snake segments in resampling.
protected  double scaleFactor
          Scale factor for snake normalization.
protected  MTBSnake snake
          The snake on which the algorithm works.
protected  UserTime timer
          Timer object for time measurements.
 
Fields inherited from class de.unihalle.informatik.MiToBo.segmentation.snakes.optimize.SnakeOptimizer
counterClockwiseSnakePointOrderRequested, energyData, excludeMask, iHeight, inImg, initialSnakes, intermediateResults, itCounter, iWidth, outIntermediateResultsStack, outIntermediateResultsStackInterval, outIntermediateResultsStackWanted, outSnakes, outSnakesImg, sampleEnergyData, saveIntermediateResults, saveIntermediateResultsPath, showIntermediateResults, snakeNum
 
Fields inherited from class de.unihalle.informatik.Alida.operator.ALDOperatorControllable
configurationEventlistenerList, controlEventlistenerList, notifyListenersRecursively, operatorStatus, stepSize, stepWiseExecution
 
Fields inherited from class de.unihalle.informatik.Alida.operator.ALDOperator
completeDAG, name, portHashAccess, verbose, versionProvider
 
Constructor Summary
SnakeOptimizerSingle()
          Default constructor.
 
Method Summary
protected  void closeWindows()
          Close all windows openened by this operator (for clean-up).
 void disableEnergyCalculation()
          Disable energy calculations completely.
 boolean doesRequireOverlapMask()
          Returns true, if optimizer requires overlap mask.
 java.lang.Boolean doResampleSnake()
          Returns true if snake should be resampled during optimization.
 void enableEnergyCalculation()
          Enable energy calculation in each iteration.
 MTBSnake getCurrentSnake()
          Returns a copy of the current snake.
 MTBPolygon2DSet getCurrentSnakes()
          Returns a set with current snake(!).
 double getEnergyValue()
          Get current energy value for the snake.
 SnakeOptimizerSingle.IntensityNormalizationMode getIntensityNormalizationMode()
          Request mode for normalizing image intensities.
 SnakeOptimizerSingle.EnergyNormalizationMode getNormalizationMode()
          Returns energy normalization mode.
 int[][] getOverlapMask()
          Returns current overlap mask.
 double getPreviousEnergyValue()
          Get old energy value for the snake at last iteration.
 MTBSnake getPreviousSnake()
          Returns the previous snake.
 java.lang.Double getSegmentLength()
          Returns desired segment length for resampling.
protected  void initOptimizer()
          Initializes the optimizer.
 MTBImage normalizeInputImage(MTBImage inimg)
          Normalizes image intensities according to normalization mode of operator.
 void printParams()
          Print current parameter settings to standard output device.
protected  java.lang.Object readResolve()
          Function for proper initialization of deserialized objects.
 void requireOverlapMask()
          Intended for energies to request overlap mask.
protected  void resampleSnake()
          Resamples the snake using the specified segment length.
protected abstract  void saveSnake()
          Save intermediate results.
 void setOverlapMask(int[][] m)
          Specify new overlap mask.
protected  void showSnake()
          Display intermediate results by overlaying the input image with the current snake result.
 java.lang.String toString()
           
 
Methods inherited from class de.unihalle.informatik.MiToBo.segmentation.snakes.optimize.SnakeOptimizer
clone, disableSaveIntermediateResults, disableShowIntermediateResults, doIteration, enableSaveIntermediateResults, enableShowIntermediateResults, getExcludeMask, getInitialSnakes, getInputImage, getIterationCount, getResultSnakeImage, getResultSnakes, getSnakeNumber, getStackWithIntermediateResults, operate, requireCounterClockwiseSnakePointOrder, setExcludeMask, setInitialSnakes, setInputImage, setIntermediateResultPath, validateCustom, wantStackWithIntermediateResults
 
Methods inherited from class de.unihalle.informatik.Alida.operator.ALDOperatorControllable
addALDConfigurationEventListener, addALDControlEventListener, fireALDConfigurationEvent, fireALDControlEvent, handleALDConfigurationEvent, handleALDControlEvent, removeALDConfigurationEventListener, removeALDControlEventListener, setNotifyRecursiveFlag
 
Methods inherited from class de.unihalle.informatik.Alida.operator.ALDOperator
deserializeFromXmlFile, fieldContained, getALDPortHashAccessKey, getConstructionMode, getInInoutNames, getInInoutNames, getInNames, getInOutNames, getMissingRequiredInputs, getName, getNumParameters, getOutInoutNames, getOutNames, getParameter, getParameterDescriptor, getParameterNames, getSupplementalNames, getVerbose, getVersion, isConfigured, parametersToXmlObject, print, print, print, printInterface, printInterface, readHistory, reinitializeParameterDescriptors, runOp, runOp, runOp, serializeToXmlFile, setConstructionMode, setName, setParameter, setParametersFromXml, setParametersFromXml, setVerbose, toStringVerbose, unconfiguredItems, validate, validateGeneric, writeHistory, writeHistory, writeHistory, writeParametersToXml
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

dispImg

protected transient MTBImageRGB dispImg
Image for showing/saving intermediate results.


doResampling

@Parameter(label="Do Resampling",
           mode=ADVANCED,
           direction=IN,
           required=false,
           dataIOOrder=11,
           description="Flag for snake resampling.")
protected java.lang.Boolean doResampling
Flag to enable/disable snake resampling.


energy

protected transient double energy
Current energy of the snake.


energyCalculationRequested

protected transient boolean energyCalculationRequested
Flag for invoking energy calculations. TODO really needed?


inImgOriginal

protected transient MTBImage inImgOriginal
Copy of input image

The input image is normalized to intensities in range [0,1], this image is a backup of the original one.


intNormMode

@Parameter(label="Image intensity normalization mode",
           direction=IN,
           required=false,
           dataIOOrder=9,
           description="Normalization mode for image intensities.")
protected SnakeOptimizerSingle.IntensityNormalizationMode intNormMode
Mode for normalizing image intensities.


normMode

@Parameter(label="Energy normalization mode",
           direction=IN,
           required=false,
           dataIOOrder=10,
           description="Normalization mode for snake/energies.")
protected SnakeOptimizerSingle.EnergyNormalizationMode normMode
Mode for normalizing energies.


overlapMask

protected transient int[][] overlapMask
Mask to indicate overlap regions between snakes.


overlapMaskRequested

protected transient boolean overlapMaskRequested
Flag to indicate whether an energy requested overlap mask.


previousEnergy

protected transient double previousEnergy
Snake energy in previous iteration (for change assessment).


previousSnake

protected transient MTBSnake previousSnake
Old snake of previous iteration (for evolution assessment).


resampleSegLength

@Parameter(label="Resample Segment Length",
           mode=ADVANCED,
           direction=IN,
           required=false,
           dataIOOrder=12,
           description="Desired resampling segment length.")
protected java.lang.Double resampleSegLength
Target length of snake segments in resampling.


scaleFactor

protected transient double scaleFactor
Scale factor for snake normalization.


snake

protected transient MTBSnake snake
The snake on which the algorithm works.


timer

protected transient UserTime timer
Timer object for time measurements.

Constructor Detail

SnakeOptimizerSingle

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

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

closeWindows

protected void closeWindows()
Description copied from class: SnakeOptimizer
Close all windows openened by this operator (for clean-up).

Specified by:
closeWindows in class SnakeOptimizer

disableEnergyCalculation

public void disableEnergyCalculation()
Disable energy calculations completely. TODO really needed?


doesRequireOverlapMask

public boolean doesRequireOverlapMask()
Returns true, if optimizer requires overlap mask.

Returns:
True, is any energy requires an overlap mask.

doResampleSnake

public java.lang.Boolean doResampleSnake()
Returns true if snake should be resampled during optimization.

Returns:
True, if snake is to be resampled.

enableEnergyCalculation

public void enableEnergyCalculation()
Enable energy calculation in each iteration. TODO really needed?


getCurrentSnake

public MTBSnake getCurrentSnake()
Returns a copy of the current snake.

Returns:
Current snake.

getCurrentSnakes

public MTBPolygon2DSet getCurrentSnakes()
Returns a set with current snake(!).

In case of the SnakeOptimizerSingle class this set will always have exactly one element.

Specified by:
getCurrentSnakes in class SnakeOptimizer
Returns:
Current set of snake contours.

getEnergyValue

public double getEnergyValue()
Get current energy value for the snake.

Returns:
Energy value of the snake.

getIntensityNormalizationMode

public SnakeOptimizerSingle.IntensityNormalizationMode getIntensityNormalizationMode()
Request mode for normalizing image intensities.

Returns:
Mode of image intensity normalization.

getNormalizationMode

public SnakeOptimizerSingle.EnergyNormalizationMode getNormalizationMode()
Returns energy normalization mode.


getOverlapMask

public int[][] getOverlapMask()
Returns current overlap mask.

Returns:
Overlap mask when processing multiple snakes.

getPreviousEnergyValue

public double getPreviousEnergyValue()
Get old energy value for the snake at last iteration.

Returns:
Old snake energy value of the previous iteration.

getPreviousSnake

public MTBSnake getPreviousSnake()
Returns the previous snake.

Returns:
Snake contour of previous iteration.

getSegmentLength

public java.lang.Double getSegmentLength()
Returns desired segment length for resampling.

Returns:
Desired snake segment length.

initOptimizer

protected void initOptimizer()
                      throws MTBSnakeException,
                             de.unihalle.informatik.Alida.exceptions.ALDOperatorException
Description copied from class: SnakeOptimizer
Initializes the optimizer.

Needs to be implemented by any derived class. This routine is automatically called on invoking the local operate routine.

Specified by:
initOptimizer in class SnakeOptimizer
Throws:
MTBSnakeException
de.unihalle.informatik.Alida.exceptions.ALDOperatorException

normalizeInputImage

public MTBImage normalizeInputImage(MTBImage inimg)
Normalizes image intensities according to normalization mode of operator.

Parameters:
inimg - Image to be normalized.
Returns:
Result image with normalized intensities.

printParams

public void printParams()
Description copied from class: SnakeOptimizer
Print current parameter settings to standard output device.

Specified by:
printParams in class SnakeOptimizer

readResolve

protected java.lang.Object readResolve()
Function for proper initialization of deserialized objects.

This function is called on an instance of this class being deserialized from file, prior to handing the instance over to the user. It takes care of a proper initialization of transient member variables as they are not initialized to the default values during deserialization.

Overrides:
readResolve in class SnakeOptimizer
Returns:

requireOverlapMask

public void requireOverlapMask()
Intended for energies to request overlap mask.


resampleSnake

protected void resampleSnake()
Resamples the snake using the specified segment length.

Note: if snake is normalized, segment length will also be normalized! Normalization of segment length is done by resampling!


saveSnake

protected abstract void saveSnake()
Save intermediate results.

Specified by:
saveSnake in class SnakeOptimizer

setOverlapMask

public void setOverlapMask(int[][] m)
Specify new overlap mask.


showSnake

protected void showSnake()
Display intermediate results by overlaying the input image with the current snake result.

Specified by:
showSnake in class SnakeOptimizer

toString

public java.lang.String toString()
Overrides:
toString in class SnakeOptimizer