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

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.SnakeOptimizerCoupled
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

@ALDDerivedClass
@ALDAOperator(genericExecutionMode=ALL)
public class SnakeOptimizerCoupled
extends SnakeOptimizer

Image contour segmentation using multiple parametric snakes.

This class provides methods to segment multiple contours in an image based on parametric active contour models, i.e. snakes. Multiple snakes may be coupled in the sense that overlap will be penalized by a common energy term in the functional.

Author:
Birgit Möller

Nested Class Summary
 
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  boolean[] activityArray
          Array of active snakes, suitable for masking snakes in optimization.
protected  int[] colorArray
          Array containing pseudo-colors for snake visualization.
protected  MTBImageRGB dispImg
          Image for displaying intermediate/final results.
protected  int[] iterationsPerSnake
          Number of iterations done for each snake.
protected  int[][] overlapMask
          Mask to indicate overlap regions between snakes.
protected  boolean overlapMaskRequested
          Flag to indicate if overlap mask is required by at least one energy.
protected  SnakeOptimizerSingle[] snakeOpters
          Array of individual snake optimizers.
protected  SnakeOptimizerSingle snakeOptimizer
          Optimizer object for a single snake.
 
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
SnakeOptimizerCoupled()
          Default constructor.
SnakeOptimizerCoupled(MTBImage img, MTBPolygon2DSet initSnakes, SnakeOptimizerSingle sopt, boolean[] activeArray)
          Default constructor.
 
Method Summary
 SnakeOptimizerCoupled clone()
           
protected  void closeWindows()
          Close all windows openened by this operator (for clean-up).
protected  SnakeOptimizer.Snake_status doIteration()
          Here the main work should be done.
 boolean[] getActivityArray()
          Returns current activity array.
 int[][] getCurrentOverlapMask()
          Get the current overlap mask.
 MTBPolygon2DSet getCurrentSnakes()
          Returns a copy of the set of current snakes.
 int[] getIterationsPerSnake()
          Returns the total number of iterations per snake.
 MTBImage getWorkingImage()
          Returns working image.
protected  void initOptimizer()
          Initializes the optimizer.
protected  void plotImageToBackground()
          Copies the input image as background into the output frame.
protected  void plotSnakeToImage(MTBImageRGB img)
           
 void printParams()
          Print current parameter settings to standard output device.
protected  void saveSnake()
          Save intermediate results.
 void setActivityArray(boolean[] array)
          Specify set of active snakes.
 void setColorArray(int[] array)
          Specify pseudo-colors for snake visualization.
protected  void showSnake()
          Display input image with current snake overlayed.
 String toString()
           
 void updateOverlapMask()
          Update current overlap mask for all snakes.
 void validateCustom()
           
 
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, readResolve, 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

snakeOptimizer

@Parameter(label="Snake Optimizer",
           direction=IN,
           required=true,
           dataIOOrder=3,
           description="Snake optimizer for single snake segmentation.")
protected SnakeOptimizerSingle snakeOptimizer
Optimizer object for a single snake.


activityArray

@Parameter(label="Activity array",
           direction=IN,
           required=false,
           description="Array of active snakes.")
protected boolean[] activityArray
Array of active snakes, suitable for masking snakes in optimization.

Note, per default all snakes are active. The size of the array on init is just randomly chosen, but a certain size is required since otherwise the GUI will initialize the array with false values.


iterationsPerSnake

@Parameter(label="Number of iterations per snake",
           direction=OUT,
           description="Iterations per snake.")
protected transient int[] iterationsPerSnake
Number of iterations done for each snake.


snakeOpters

protected transient SnakeOptimizerSingle[] snakeOpters
Array of individual snake optimizers.


colorArray

protected transient int[] colorArray
Array containing pseudo-colors for snake visualization.


overlapMaskRequested

protected transient boolean overlapMaskRequested
Flag to indicate if overlap mask is required by at least one energy.


overlapMask

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


dispImg

protected transient MTBImageRGB dispImg
Image for displaying intermediate/final results.

Constructor Detail

SnakeOptimizerCoupled

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

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

SnakeOptimizerCoupled

public SnakeOptimizerCoupled(MTBImage img,
                             MTBPolygon2DSet initSnakes,
                             SnakeOptimizerSingle sopt,
                             boolean[] activeArray)
                      throws de.unihalle.informatik.Alida.exceptions.ALDOperatorException
Default constructor.

Parameters:
img - Image to work on.
initSnakes - Set of initial snakes.
sopt - Snake optimizer.
activeArray - Array indicating active snakes.
Throws:
de.unihalle.informatik.Alida.exceptions.ALDOperatorException
Method Detail

validateCustom

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

clone

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

setActivityArray

public void setActivityArray(boolean[] array)
Specify set of active snakes.

Parameters:
array - Boolean array to indicate active snakes.

getActivityArray

public boolean[] getActivityArray()
Returns current activity array.


setColorArray

public void setColorArray(int[] array)
Specify pseudo-colors for snake visualization.


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.

Specified by:
initOptimizer in class SnakeOptimizer
Throws:
MTBSnakeException

doIteration

protected SnakeOptimizer.Snake_status doIteration()
                                           throws MTBException
Description copied from class: SnakeOptimizer
Here the main work should be done.

Specified by:
doIteration in class SnakeOptimizer
Returns:
Indicates if the iteration was successful.
Throws:
MTBException

showSnake

protected void showSnake()
Display input image with current snake overlayed.

Specified by:
showSnake in class SnakeOptimizer

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

saveSnake

protected void saveSnake()
Description copied from class: SnakeOptimizer
Save intermediate results.

Specified by:
saveSnake in class SnakeOptimizer

updateOverlapMask

public void updateOverlapMask()
Update current overlap mask for all snakes.


getWorkingImage

public MTBImage getWorkingImage()
Description copied from class: SnakeOptimizer
Returns working image.

Usually this will be the input image, however, e.g. in case of image normalization being applied the normalized image will be returned.

Specified by:
getWorkingImage in class SnakeOptimizer
Returns:
Image on which the operator works.

getCurrentSnakes

public MTBPolygon2DSet getCurrentSnakes()
Returns a copy of the set of current snakes.

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

getCurrentOverlapMask

public int[][] getCurrentOverlapMask()
Get the current overlap mask.

Returns:
Overlap mask of current snake configuration.

getIterationsPerSnake

public int[] getIterationsPerSnake()
Returns the total number of iterations per snake.

Returns:
Array of iteration counts.

printParams

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

Specified by:
printParams in class SnakeOptimizer

toString

public String toString()
Overrides:
toString in class SnakeOptimizer

plotImageToBackground

protected void plotImageToBackground()
Copies the input image as background into the output frame.


plotSnakeToImage

protected void plotSnakeToImage(MTBImageRGB img)


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