de.unihalle.informatik.MiToBo.segmentation.levelset.PDE.solver
Class LevelsetSolverPDE

java.lang.Object
  extended by de.unihalle.informatik.Alida.operator.ALDOperator
      extended by de.unihalle.informatik.MiToBo.core.operator.MTBOperator
          extended by de.unihalle.informatik.MiToBo.segmentation.levelset.core.LevelsetSolver
              extended by de.unihalle.informatik.MiToBo.segmentation.levelset.core.LevelsetSolverDerivatives
                  extended by de.unihalle.informatik.MiToBo.segmentation.levelset.PDE.solver.LevelsetSolverPDE
All Implemented Interfaces:
de.unihalle.informatik.Alida.datatypes.ALDConfigurationValidator, de.unihalle.informatik.Alida.operator.events.ALDOperatorExecutionProgressEventListener, EventListener

@ALDAOperator(genericExecutionMode=ALL,
              level=APPLICATION)
public class LevelsetSolverPDE
extends LevelsetSolverDerivatives

Solver for level set segmentation problems based on PDEs.

Author:
Martin Scharm, Michael Schneider, Birgit Moeller

Nested Class Summary
static class LevelsetSolverPDE.VelocityExpansionMode
          Available modes for expanding zero level velocities.
 
Nested classes/interfaces inherited from class de.unihalle.informatik.Alida.operator.ALDOperator
de.unihalle.informatik.Alida.operator.ALDOperator.HidingMode
 
Field Summary
protected  int depth
          Depth of the input image.
protected  int height
          Height of the input image.
protected  MTBImageRGB intermediatePhiColorImage
          Color image to visualize intermediate segmentation results.
protected  Vector<MTBImageByte> intermediateResults
          List of intermediate result segmentations.
protected  int intermediateResultSamplingRate
           
protected  MTBImageByte intermediateResultStack
           
protected  MTBPolygon2DSet invisibleRegionSet
           
protected  int iteration
          Iteration counter.
protected  int maxIterations
           
protected  double narrowBandWidth
           
protected  MTBImageRGB resultImage
           
protected  MTBImageByte resultMask
           
protected  boolean showIntermediateResults
           
protected  boolean topologyPreservation
           
protected  LevelsetSolverPDE.VelocityExpansionMode vExpandMode
           
protected  int width
          Width of the input image.
 
Fields inherited from class de.unihalle.informatik.MiToBo.segmentation.levelset.core.LevelsetSolverDerivatives
approxFunction, deltaApproximator, deltaT, energySet, epsilon, phi
 
Fields inherited from class de.unihalle.informatik.MiToBo.segmentation.levelset.core.LevelsetSolver
initGenerator, initialSegmentation, inputImg
 
Fields inherited from class de.unihalle.informatik.Alida.operator.ALDOperator
completeDAG, name, operatorExecutionEventlistenerList, portHashAccess, verbose, versionProvider
 
Constructor Summary
LevelsetSolverPDE()
          Default constructor.
 
Method Summary
 int getHeight()
          Get height of level set function.
 int getMaxIterations()
          Get maximal number of iterations.
 double getNarrowBandWidth()
          Get width of narrow band.
 MTBImageRGB getResultImage()
          Get image with segmentation result overlay.
 MTBImageByte getResultMask()
          Get binary mask of segmentation result.
 int getWidth()
          Get width of level set function domain.
protected  void operate()
          Methode that runs the operator.
 void setInputImg(MTBImage img)
          Set input image.
 void setNarrowBandWidth(double w)
          Set width of narrow band.
protected  int sgn(double ka)
          Returns the sign of a value.
protected  boolean solve()
          Solve this level set problem.
protected  int step()
          Do one iteration, update all pixels of levelset function (in narrow band).
 void validateCustom()
           
 
Methods inherited from class de.unihalle.informatik.MiToBo.segmentation.levelset.core.LevelsetSolverDerivatives
getDeltaApproximator, getDeltaT, getEnergySet, getEpsilon, getPhi
 
Methods inherited from class de.unihalle.informatik.MiToBo.segmentation.levelset.core.LevelsetSolver
getInitialSegmentation, getInputImg, initSegmentation
 
Methods inherited from class de.unihalle.informatik.MiToBo.core.operator.MTBOperator
readResolve
 
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
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

vExpandMode

@Parameter(label="Velocity Expansion Mode",
           required=true,
           direction=IN,
           dataIOOrder=19,
           description="Mode for expansion of contour pixel velocities.")
protected LevelsetSolverPDE.VelocityExpansionMode vExpandMode

maxIterations

@Parameter(label="Max. Iterations",
           required=false,
           direction=IN,
           dataIOOrder=1,
           description="Max. number of iterations in iterative optimization.")
protected int maxIterations

narrowBandWidth

@Parameter(label="Narrow Band Width",
           required=false,
           direction=IN,
           dataIOOrder=2,
           description="Width of narrow band, if zero, all pixels are considered.")
protected double narrowBandWidth

topologyPreservation

@Parameter(label="Preserve Topology",
           required=false,
           direction=IN,
           dataIOOrder=3,
           description="Enables/disables topology preservation.")
protected boolean topologyPreservation

invisibleRegionSet

@Parameter(label="Regions to mask (only 2D)",
           required=false,
           direction=IN,
           dataIOOrder=4,
           description="Optional polygon set to set parts of the image invisible.")
protected MTBPolygon2DSet invisibleRegionSet

showIntermediateResults

@Parameter(label="Show Intermediate Results",
           required=false,
           supplemental=true,
           dataIOOrder=-99,
           direction=IN,
           description="Displays additional, intermediate segmentation results.")
protected boolean showIntermediateResults

intermediateResultSamplingRate

@Parameter(label="Save Intermediate Segmentations, Rate = ",
           required=false,
           supplemental=true,
           dataIOOrder=-98,
           direction=IN,
           description="Sampling rate for intermediate results,\n if zero no stack with intermediate results is generated.")
protected int intermediateResultSamplingRate

resultImage

@Parameter(label="Result Image",
           direction=OUT,
           dataIOOrder=0,
           description="Overlay of contour on input image.")
protected transient MTBImageRGB resultImage

resultMask

@Parameter(label="Result Mask",
           direction=OUT,
           dataIOOrder=1,
           description="Binary segmentation mask.")
protected transient MTBImageByte resultMask

intermediateResultStack

@Parameter(label="Intermediate Results Stack",
           required=false,
           supplemental=true,
           dataIOOrder=2,
           direction=OUT,
           description="Stack with intermediate results.")
protected transient MTBImageByte intermediateResultStack

height

protected int height
Height of the input image.


width

protected int width
Width of the input image.


depth

protected int depth
Depth of the input image.


iteration

protected int iteration
Iteration counter.


intermediateResults

protected transient Vector<MTBImageByte> intermediateResults
List of intermediate result segmentations.


intermediatePhiColorImage

protected transient MTBImageRGB intermediatePhiColorImage
Color image to visualize intermediate segmentation results.

Constructor Detail

LevelsetSolverPDE

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

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

validateCustom

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

operate

protected void operate()
                throws de.unihalle.informatik.Alida.exceptions.ALDOperatorException,
                       de.unihalle.informatik.Alida.exceptions.ALDProcessingDAGException
Methode that runs the operator.

Specified by:
operate in class de.unihalle.informatik.Alida.operator.ALDOperator
Throws:
de.unihalle.informatik.Alida.exceptions.ALDOperatorException
de.unihalle.informatik.Alida.exceptions.ALDProcessingDAGException

solve

protected boolean solve()
Solve this level set problem.

Returns:
True, if a solution could be found, otherwise false.

step

protected int step()
Do one iteration, update all pixels of levelset function (in narrow band).

Returns:
Number of pixels where sign changed.

sgn

protected int sgn(double ka)
Returns the sign of a value.

Parameters:
ka - Value.
Returns:
1 or -1, according to the sign, 0 if value is identical to zero.

getNarrowBandWidth

public double getNarrowBandWidth()
Get width of narrow band.

Returns:
Width of narrow band.

setNarrowBandWidth

public void setNarrowBandWidth(double w)
Set width of narrow band.

Parameters:
w - New width of narrow band.

getWidth

public int getWidth()
Get width of level set function domain.

Returns:
Size of level set function in x.

getMaxIterations

public int getMaxIterations()
Get maximal number of iterations.

Returns:
Maximal number of iterations in optimization.

getHeight

public int getHeight()
Get height of level set function.

Returns:
Size of level set function domain in y.

setInputImg

public void setInputImg(MTBImage img)
Set input image.

Parameters:
img - Image to segment.

getResultMask

public MTBImageByte getResultMask()
Get binary mask of segmentation result.

Returns:
Binary segmentation result.

getResultImage

public MTBImageRGB getResultImage()
Get image with segmentation result overlay.

Returns:
Result image with contour overlay.


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