de.unihalle.informatik.MiToBo.segmentation.snakes.energies
Class MTBSnakeEnergyCDIB_Gradient

java.lang.Object
  extended by de.unihalle.informatik.MiToBo.segmentation.snakes.energies.MTBSnakeEnergyCDImageBased
      extended by de.unihalle.informatik.MiToBo.segmentation.snakes.energies.MTBSnakeEnergyCDIB_Gradient
All Implemented Interfaces:
MTBActiveContourEnergyDerivable, MTBSnakeEnergyComputable, MTBSnakeEnergyDerivable

@ALDDerivedClass
@ALDParametrizedClass
public class MTBSnakeEnergyCDIB_Gradient
extends MTBSnakeEnergyCDImageBased

Class for external energy from the gradient image. Every energy vector is stored in a one dimensional array, so the width of the image is used to get a energy value at position (x,y).

The external energy is defined as: extEnergy = -|gradient(Image(x,y))|^2.

Author:
Danny Misiak
See Also:
GradientFieldCalculator2D

Field Summary
private  MTBVectorField2D gradField
           
private  MTBImage image
          The given input image to calculate the external energy from it.
private  MTBImageDouble imageNormalized
          Normalized version of input image used in calculations.
 
Fields inherited from class de.unihalle.informatik.MiToBo.segmentation.snakes.energies.MTBSnakeEnergyCDImageBased
height, normalizationFactor, normMode, scaleFactor, width
 
Fields inherited from interface de.unihalle.informatik.MiToBo.segmentation.snakes.energies.MTBSnakeEnergyDerivable
targetEnergyRange
 
Constructor Summary
MTBSnakeEnergyCDIB_Gradient()
          Constructor to create a new SnakeExternalEnergyGradient object.
MTBSnakeEnergyCDIB_Gradient(MTBImage img)
          Constructor to create a new SnakeExternalEnergyGradient object.
 
Method Summary
 Jama.Matrix getDerivative_VectorPart(SnakeOptimizerSingleVarCalc opt)
          Returns the vector part of this energy for snake optimization.
 double getDerivativeX(double x, double y)
          Get x-derivative of negative absolute gradient value to the power of two (external energy) at given position using central differences.
 double getDerivativeY(double x, double y)
          Get y-derivative of negative absolute gradient value to the power of two (external energy) at given position using central differences.
 double getValue(double x, double y)
          Returns the negative absolute gradient value to the power of 2 (the external energy) at the given position.
 boolean initEnergy(SnakeOptimizerSingleVarCalc o)
          Init routine which is called once before the energy is actually used.
 void normalizeEnergy()
          Normalize the external energy in a range [-1.0, 1.0].
 java.lang.String toString()
          Get an identifier string for the energy object.
 
Methods inherited from class de.unihalle.informatik.MiToBo.segmentation.snakes.energies.MTBSnakeEnergyCDImageBased
calcEnergy, calcEnergy, getDerivative_MatrixPart, getDerivativeX_norm, getDerivativeY_norm, getScaleFactor, getValue_norm, initEnergy, setScaleFactor, updateStatus, updateStatus
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

gradField

private MTBVectorField2D gradField

image

@ALDClassParameter(label="Input Image")
private MTBImage image
The given input image to calculate the external energy from it.


imageNormalized

private MTBImageDouble imageNormalized
Normalized version of input image used in calculations.

Constructor Detail

MTBSnakeEnergyCDIB_Gradient

public MTBSnakeEnergyCDIB_Gradient()
Constructor to create a new SnakeExternalEnergyGradient object.

Parameters:
img - input image
Throws:
de.unihalle.informatik.Alida.exceptions.ALDOperatorException
de.unihalle.informatik.Alida.exceptions.ALDProcessingDAGException

MTBSnakeEnergyCDIB_Gradient

public MTBSnakeEnergyCDIB_Gradient(MTBImage img)
Constructor to create a new SnakeExternalEnergyGradient object.

Parameters:
img - input image
Method Detail

getDerivative_VectorPart

public Jama.Matrix getDerivative_VectorPart(SnakeOptimizerSingleVarCalc opt)
Description copied from interface: MTBSnakeEnergyDerivable
Returns the vector part of this energy for snake optimization.

Specified by:
getDerivative_VectorPart in interface MTBSnakeEnergyDerivable
Overrides:
getDerivative_VectorPart in class MTBSnakeEnergyCDImageBased
Parameters:
opt - Calling snake optimizer.
Returns:
Optimization vector for this energy object.

getDerivativeX

public double getDerivativeX(double x,
                             double y)
Get x-derivative of negative absolute gradient value to the power of two (external energy) at given position using central differences.

Specified by:
getDerivativeX in class MTBSnakeEnergyCDImageBased
Parameters:
x - x-coordinate of pixel position
y - y-coordinate of pixel position
Returns:
x-derivative value at given position.

getDerivativeY

public double getDerivativeY(double x,
                             double y)
Get y-derivative of negative absolute gradient value to the power of two (external energy) at given position using central differences.

Specified by:
getDerivativeY in class MTBSnakeEnergyCDImageBased
Parameters:
x - x-coordinate of pixel position
y - y-coordinate of pixel position
Returns:
y-derivative value at given position.

getValue

public double getValue(double x,
                       double y)
Returns the negative absolute gradient value to the power of 2 (the external energy) at the given position.

Specified by:
getValue in class MTBSnakeEnergyCDImageBased
Parameters:
x - x-coordinate of position
y - y-coordinate of position
Returns:
Absolute value of external energy.

initEnergy

public boolean initEnergy(SnakeOptimizerSingleVarCalc o)
Description copied from interface: MTBSnakeEnergyDerivable
Init routine which is called once before the energy is actually used.

In this routine global parameter settings can be handled or other initialization stuff be done. The SnakeOptimizer will call this routine once before the actual use of the energy. If no stuff needs to be done in advance the routine should at least return true.

Specified by:
initEnergy in interface MTBSnakeEnergyDerivable
Overrides:
initEnergy in class MTBSnakeEnergyCDImageBased
Parameters:
o - Calling snake optimizer.
Returns:
True if init was successful, otherwise false.

normalizeEnergy

public void normalizeEnergy()
Description copied from class: MTBSnakeEnergyCDImageBased
Normalize the external energy in a range [-1.0, 1.0]. The user implements how the energy is normalized. The range can also be [0.0, 1.0] or something else, but the range must be inside [-1.0, 1.0]. The normalization is called in the initEnergy method of the energy.

Specified by:
normalizeEnergy in class MTBSnakeEnergyCDImageBased

toString

public java.lang.String toString()
Description copied from interface: MTBSnakeEnergyDerivable
Get an identifier string for the energy object.

When meta parameters are saved to a file, configuration objects need to be converted to strings. Consequently, each snake energy should be associated with a unique and descriptive string for later reference.

Specified by:
toString in interface MTBSnakeEnergyComputable
Specified by:
toString in interface MTBSnakeEnergyDerivable
Overrides:
toString in class java.lang.Object
Returns:
Identifier string.