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

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
                      extended by de.unihalle.informatik.MiToBo.segmentation.snakes.optimize.SnakeOptimizerSingleVarCalc
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=STANDARD)
@ALDDerivedClass
public class SnakeOptimizerSingleVarCalc
extends SnakeOptimizerSingle

 
 Image contour segmentation using parametric snakes.
 
 This class provides methods to segment contours in an image based on
 parametric active contour models, i.e. snakes. Note that we assume here a
 counter-clockwise ordering of the snake points. Pay attention if you deal
 with upper-left coordinates!
 

In this class snake optimization is done by solving PDEs like in the original Kass et al. paper. TODO correct handling of not closed snakes TODO adaptation of gamma for every single point TODO adaptation of segment length

Author:
moeller, misiak

Nested Class Summary
 
Nested classes/interfaces inherited from class de.unihalle.informatik.MiToBo.segmentation.snakes.optimize.SnakeOptimizerSingle
SnakeOptimizerSingle.EnergyNormalizationMode, SnakeOptimizerSingle.IntensityNormalizationMode
 
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, 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  MTBSet_SnakeEnergyDerivable energySet
          List of snake energies to be used in segmentation.
protected  double[] energyWeightsNormed
          List of normalized energy weights.
protected  double[][] gammaAdaptive
          Vector containing the current gamma values (step sizes).
protected  MTBGammaUpdate gammaUpdater
          Gamma update strategy.
protected  Double initialGammas
          Initial step size in snake optimization.
protected  MTBTermination termCriterion
          Termination criterion.
 
Fields inherited from class de.unihalle.informatik.MiToBo.segmentation.snakes.optimize.SnakeOptimizerSingle
dispImg, doResampling, energy, energyCalculationRequested, intNormMode, normMode, previousEnergy, previousSnake, resampleSegLength, scaleFactor, snake, timer, workingImage
 
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, operatorExecStatus, operatorStatus, stepSize, stepWiseExecution
 
Fields inherited from class de.unihalle.informatik.Alida.operator.ALDOperator
completeDAG, name, operatorExecutionEventlistenerList, portHashAccess, verbose, versionProvider
 
Constructor Summary
SnakeOptimizerSingleVarCalc()
          Default constructor.
SnakeOptimizerSingleVarCalc(MTBImage img, MTBPolygon2DSet initSnake, MTBSet_SnakeEnergyDerivable energs, MTBGammaUpdate gamUpdater, Double gammas, MTBTermination tc, Boolean resample, Double segLength)
          Default constructor with parameters.
 
Method Summary
protected  double calcSnakeEnergy()
          Calculates total snake energy.
 SnakeOptimizerSingleVarCalc clone()
           
protected  SnakeOptimizer.Snake_status doIteration()
          Performs one single optimization step.
 double[][] getCurGamma()
          Returns current gamma vector.
 Vector<MTBSnakeEnergyDerivable> getEnergies()
          Returns a reference to the list of energies.
 MTBSet_SnakeEnergyDerivable getEnergySet()
          Returns a reference to the set of energies.
 Jama.Matrix getMemorizedMatrixA()
          Returns matrix carrying always the values of the last iteration, or null before first run.
protected  boolean hasEnergies()
          Check if energies are given.
protected  void initOptimizer()
          Initializes the optimizer.
 void printParams()
          Print important parameters to standard output stream.
protected  Object readResolve()
          Function for proper initialization of deserialized objects.
 void resizeMatrices()
          Resize parameter matrices.
protected  void setupEnergyTable()
          Inits the table for sampled energy values.
 String toString()
           
 void validateCustom()
           
 
Methods inherited from class de.unihalle.informatik.MiToBo.segmentation.snakes.optimize.SnakeOptimizerSingle
closeWindows, disableEnergyCalculation, doResampleSnake, enableEnergyCalculation, getCurrentSnake, getCurrentSnakes, getEnergyValue, getIntensityNormalizationMode, getNormalizationMode, getPreviousEnergyValue, getPreviousSnake, getSegmentLength, getWorkingImage, normalizeInputImage, resampleSnake, saveSnake, showSnake
 
Methods inherited from class de.unihalle.informatik.MiToBo.segmentation.snakes.optimize.SnakeOptimizer
disableSaveIntermediateResults, disableShowIntermediateResults, enableSaveIntermediateResults, enableShowIntermediateResults, getExcludeMask, getInitialSnakes, getInputImage, getIterationCount, getResultSnakeImage, getResultSnakes, getSnakeNumber, getStackWithIntermediateResults, operate, setExcludeMask, setInitialSnakes, setInputImage, setIntermediateResultPath, supportsStepWiseExecution, wantStackWithIntermediateResults
 
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, reinitializeParameterDescriptors, removeOperatorExecutionProgressEventListener, runOp, runOp, runOp, setConstructionMode, setHidingMode, setName, setParameter, setVerbose, toStringVerbose, unconfiguredItems, validate, validateGeneric, writeHistory, writeHistory, writeHistory
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

energySet

@Parameter(label="List of Energies",
           mode=STANDARD,
           direction=IN,
           required=true,
           description="List of snake energies.",
           dataIOOrder=3)
protected MTBSet_SnakeEnergyDerivable energySet
List of snake energies to be used in segmentation.


gammaUpdater

@Parameter(label="Gamma Update Strategy",
           mode=ADVANCED,
           direction=IN,
           required=false,
           dataIOOrder=22,
           description="Gamma update object.")
protected MTBGammaUpdate gammaUpdater
Gamma update strategy.


termCriterion

@Parameter(label="Termination Criterion",
           mode=ADVANCED,
           direction=IN,
           required=false,
           dataIOOrder=20,
           description="Termination criterion for optimization.")
protected MTBTermination termCriterion
Termination criterion.


initialGammas

@Parameter(label="Initial Gamma Value",
           mode=STANDARD,
           direction=IN,
           required=false,
           dataIOOrder=21,
           description="Initial step sizes.")
protected Double initialGammas
Initial step size in snake optimization.


energyWeightsNormed

protected transient double[] energyWeightsNormed
List of normalized energy weights.


gammaAdaptive

protected transient double[][] gammaAdaptive
Vector containing the current gamma values (step sizes).

Note that the array is two-dimensional, however, the number of columns is always one! This is mainly for compatibility reasons as we need to convert the double array to Jama matrices which require two-dimensional arrays.

Constructor Detail

SnakeOptimizerSingleVarCalc

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

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

SnakeOptimizerSingleVarCalc

public SnakeOptimizerSingleVarCalc(MTBImage img,
                                   MTBPolygon2DSet initSnake,
                                   MTBSet_SnakeEnergyDerivable energs,
                                   MTBGammaUpdate gamUpdater,
                                   Double gammas,
                                   MTBTermination tc,
                                   Boolean resample,
                                   Double segLength)
                            throws de.unihalle.informatik.Alida.exceptions.ALDOperatorException
Default constructor with parameters.

Parameters:
img - Gray-scale input image.
initSnake - Array of initial snake polygon(s).
energs - Vector of energy objects.
gamUpdater - Object for gamma adaptation.
gammas - Initial value(s) for step size.
tc - Termination checker.
opStepWise - Enables step-through optimization (requires GUI).
stepsize - Number of iterations per step-through step.
normalize - Flag for enabling snake/image normalization.
resample - Flag for activating snake resampling.
segLength - Desired length of segments are resampling.
Throws:
de.unihalle.informatik.Alida.exceptions.ALDOperatorException
SnakeAlgosRegionException
Method Detail

clone

public SnakeOptimizerSingleVarCalc clone()
Specified by:
clone in class SnakeOptimizer

readResolve

protected 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 SnakeOptimizerSingle
Returns:

validateCustom

public void validateCustom()
                    throws de.unihalle.informatik.Alida.exceptions.ALDOperatorException
Overrides:
validateCustom in class SnakeOptimizerSingle
Throws:
de.unihalle.informatik.Alida.exceptions.ALDOperatorException

hasEnergies

protected boolean hasEnergies()
Description copied from class: SnakeOptimizerSingle
Check if energies are given.

Specified by:
hasEnergies in class SnakeOptimizerSingle
Returns:
True, if energies are available.

printParams

public void printParams()
Print important parameters to standard output stream.

Overrides:
printParams in class SnakeOptimizerSingle
Throws:
de.unihalle.informatik.Alida.exceptions.ALDOperatorException

toString

public String toString()
Overrides:
toString in class SnakeOptimizerSingle

initOptimizer

protected void initOptimizer()
                      throws MTBSnakeException
Initializes the optimizer.

Here internal member variables are initialized according to the given parameters, and memory for intermediate results and debug data is allocated.

Overrides:
initOptimizer in class SnakeOptimizerSingle
Throws:
MTBSnakeException

doIteration

protected SnakeOptimizer.Snake_status doIteration()
                                           throws MTBException
Performs one single optimization step.

Specified by:
doIteration in class SnakeOptimizer
Returns:
Status of the optimization process.
Throws:
MTBException

resizeMatrices

public void resizeMatrices()
Resize parameter matrices.

The size of the matrices depends on the number of points used to represent the snake. This methods resizes the snake, if the given point number does not coincide with the current size of the matrices. After resizing the matrices, entries are set to zero.


setupEnergyTable

protected void setupEnergyTable()
Inits the table for sampled energy values.


calcSnakeEnergy

protected double calcSnakeEnergy()
Calculates total snake energy.

Returns:
Value of local energy, -1 if error during calculation.

getEnergySet

public MTBSet_SnakeEnergyDerivable getEnergySet()
Description copied from class: SnakeOptimizerSingle
Returns a reference to the set of energies.

Specified by:
getEnergySet in class SnakeOptimizerSingle
Returns:
Set of energies.

getEnergies

public Vector<MTBSnakeEnergyDerivable> getEnergies()
Returns a reference to the list of energies.


getCurGamma

public double[][] getCurGamma()
Returns current gamma vector.


getMemorizedMatrixA

public Jama.Matrix getMemorizedMatrixA()
Returns matrix carrying always the values of the last iteration, or null before first run.



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