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

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

@ALDDerivedClass
@ALDParametrizedClass
public class MTBSnakeEnergyCD_KassLength
extends java.lang.Object
implements MTBSnakeEnergyDerivable, MTBSnakeEnergyComputable

Internal length penalty energy of the pioneering paper of Kass et al.

This energy is based on first order derivatives of the snake. In contrast to the original work it allows for more flexible weighting parameters alpha, i.e. the weighting factors may be set for each snake point individually.

In addition, the weighting parameters can dynamically be adjusted by providing the energy with an update object, see MTBSnakeEnergyCD_KassLength_ParamAdapt.

Author:
moeller

Field Summary
private  double alphaInitial
          Initial weighting factor for the length term, should be > 0.
private  double[] alphas
          Vector of point-specific alpha values.
private  java.lang.Double maxAlpha
          Maximal possible value of alpha as can be provided by parameter updated.
private  double normalizationFactor
          Normalization factor for scaling matrix entries.
private  SnakeOptimizerSingle.EnergyNormalizationMode normMode
          Mode of normalization.
private  MTBSnakeEnergyCD_KassLength_ParamAdapt pUpdater
          Parameter update strategy.
protected  double scaleFactor
          Scaling factor for image coordinates.
 
Fields inherited from interface de.unihalle.informatik.MiToBo.segmentation.snakes.energies.MTBSnakeEnergyDerivable
targetEnergyRange
 
Constructor Summary
MTBSnakeEnergyCD_KassLength()
          Default constructor.
MTBSnakeEnergyCD_KassLength(double _alpha, MTBSnakeEnergyCD_KassLength_ParamAdapt _pUpd)
          Constructor with dynamic parameter updater.
 
Method Summary
 double calcEnergy(SnakeOptimizerSingle opt)
          Calculates snake energy (non-normalized!).
 double calcEnergy(SnakeOptimizerSingle opt, int pos)
          Calculates energy at a certain position for the current snake.
 Jama.Matrix getDerivative_MatrixPart(SnakeOptimizerSingleVarCalc opt)
          Updates matrix A given weights for the internal energy term.
 Jama.Matrix getDerivative_VectorPart(SnakeOptimizerSingleVarCalc opt)
          Returns the vector part of this energy for snake optimization.
 double getInitAlpha()
          Get the initial alpha value.
private  double getNormalizationFactor(SnakeOptimizerSingle opt)
           
 double getScaleFactor()
          Get scaling factor.
 boolean initEnergy(SnakeOptimizerSingleGreedy o)
          Init routine which is called once before the energy is actually used.
 boolean initEnergy(SnakeOptimizerSingleVarCalc o)
          Init routine which is called once before the energy is actually used.
 void setScaleFactor(double s)
          Set the scaling factor.
 java.lang.String toString()
          Get an identifier string for the energy object.
 void updateStatus(SnakeOptimizerSingleGreedy o)
          Update internal state of energy object prior to querying derivatives and so on.
 void updateStatus(SnakeOptimizerSingleVarCalc o)
          Update internal state of energy object prior to usaging it.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

alphaInitial

@ALDClassParameter(label="Initial Alpha")
private double alphaInitial
Initial weighting factor for the length term, should be > 0.


alphas

private double[] alphas
Vector of point-specific alpha values.


maxAlpha

private java.lang.Double maxAlpha
Maximal possible value of alpha as can be provided by parameter updated.


normalizationFactor

private double normalizationFactor
Normalization factor for scaling matrix entries.


normMode

private SnakeOptimizerSingle.EnergyNormalizationMode normMode
Mode of normalization.


pUpdater

@ALDClassParameter(label="Parameter Updater")
private MTBSnakeEnergyCD_KassLength_ParamAdapt pUpdater
Parameter update strategy.


scaleFactor

protected double scaleFactor
Scaling factor for image coordinates.

The factor is used to scale image coordinates between the range [0,1] and the real-world image size in pixels. Default scaling factor is 1.

Constructor Detail

MTBSnakeEnergyCD_KassLength

public MTBSnakeEnergyCD_KassLength()
Default constructor.


MTBSnakeEnergyCD_KassLength

public MTBSnakeEnergyCD_KassLength(double _alpha,
                                   MTBSnakeEnergyCD_KassLength_ParamAdapt _pUpd)
Constructor with dynamic parameter updater.

Parameters:
_alpha - Weighting factor for length term.
_pUpd - Parameter update object.
Method Detail

calcEnergy

public double calcEnergy(SnakeOptimizerSingle opt)
Calculates snake energy (non-normalized!).

Specified by:
calcEnergy in interface MTBSnakeEnergyComputable
Parameters:
opt - Calling snake optimizer.
Returns:
Energy of complete snake.

calcEnergy

public double calcEnergy(SnakeOptimizerSingle opt,
                         int pos)
Calculates energy at a certain position for the current snake.


getDerivative_MatrixPart

public Jama.Matrix getDerivative_MatrixPart(SnakeOptimizerSingleVarCalc opt)
Updates matrix A given weights for the internal energy term.

The upper left block and the lower right block of matrix A just dependent on the weight parameters alpha and beta for the internal snake energy terms.

Specified by:
getDerivative_MatrixPart in interface MTBSnakeEnergyDerivable
Parameters:
opt - Calling snake optimizer.
Returns:
Optimization matrix for this energy object.

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
Parameters:
opt - Calling snake optimizer.
Returns:
Optimization vector for this energy object.

getInitAlpha

public double getInitAlpha()
Get the initial alpha value.

Returns:
Intial alpha.

getNormalizationFactor

private double getNormalizationFactor(SnakeOptimizerSingle opt)

getScaleFactor

public double getScaleFactor()
Get scaling factor.

Specified by:
getScaleFactor in interface MTBSnakeEnergyComputable
Specified by:
getScaleFactor in interface MTBSnakeEnergyDerivable
Returns:
Scaling factor.

initEnergy

public boolean initEnergy(SnakeOptimizerSingleGreedy o)
Description copied from interface: MTBSnakeEnergyComputable
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 MTBSnakeEnergyComputable
Parameters:
o - Calling snake optimizer.
Returns:
true if init was successful

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
Parameters:
o - Calling snake optimizer.
Returns:
True if init was successful, otherwise false.

setScaleFactor

public void setScaleFactor(double s)
Set the scaling factor.

Specified by:
setScaleFactor in interface MTBSnakeEnergyComputable
Specified by:
setScaleFactor in interface MTBSnakeEnergyDerivable
Parameters:
s - New scaling factor.

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.

updateStatus

public void updateStatus(SnakeOptimizerSingleGreedy o)
Description copied from interface: MTBSnakeEnergyComputable
Update internal state of energy object prior to querying derivatives and so on.

Specified by:
updateStatus in interface MTBSnakeEnergyComputable

updateStatus

public void updateStatus(SnakeOptimizerSingleVarCalc o)
Description copied from interface: MTBSnakeEnergyDerivable
Update internal state of energy object prior to usaging it.

Specified by:
updateStatus in interface MTBSnakeEnergyDerivable