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

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

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

Curvature energy of the pioneering paper of Kass et al.

This energy includes a curvature term based on second order derivatives of the snake. In contrast to the original work it allows for more flexible weighting parameters beta, 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_KassCurvature_ParamAdapt.

Author:
moeller

Field Summary
private  double betaInitial
          Weighting factor for the curvature term, should always be > 0.
private  double[] betas
          Vector of point-specific beta values.
private  java.lang.Double maxBeta
          Maximal possible value of beta.
private  double normalizationFactor
          Normalization factor for scaling matrix entries.
private  SnakeOptimizerSingle.EnergyNormalizationMode normMode
          Mode of normalization.
private  MTBSnakeEnergyCD_KassCurvature_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_KassCurvature()
          Default constructor.
MTBSnakeEnergyCD_KassCurvature(double _beta, MTBSnakeEnergyCD_KassCurvature_ParamAdapt _pUpd)
          Constructor with dynamic parameter updater.
 
Method Summary
 double calcEnergy(SnakeOptimizerSingle opt)
          Calculates normalized snake energy.
 double calcEnergy(SnakeOptimizerSingle opt, int pos)
          Calculates length term of snake 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 getInitBeta()
          Get the initial beta 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

betaInitial

@ALDClassParameter(label="Initial Beta")
private double betaInitial
Weighting factor for the curvature term, should always be > 0.


betas

private double[] betas
Vector of point-specific beta values.


maxBeta

private java.lang.Double maxBeta
Maximal possible value of beta.


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_KassCurvature_ParamAdapt pUpdater
Parameter update strategy.


scaleFactor

protected double scaleFactor
Scaling factor for image coordinates.

The factor is used to rescale image coordinates to the range [0,1]. Default scaling factor is 1.

Constructor Detail

MTBSnakeEnergyCD_KassCurvature

public MTBSnakeEnergyCD_KassCurvature()
Default constructor.


MTBSnakeEnergyCD_KassCurvature

public MTBSnakeEnergyCD_KassCurvature(double _beta,
                                      MTBSnakeEnergyCD_KassCurvature_ParamAdapt _pUpd)
Constructor with dynamic parameter updater.

Parameters:
_beta - Weighting factor for curvature term.
_pUpd - Parameter update object.
Method Detail

calcEnergy

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

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 length term of snake 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.

getInitBeta

public double getInitBeta()
Get the initial beta value.

Returns:
Intial beta.

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