Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
mirtk::JacobianConstraint Class Referenceabstract

#include <JacobianConstraint.h>

Inheritance diagram for mirtk::JacobianConstraint:
Inheritance graph
Collaboration diagram for mirtk::JacobianConstraint:
Collaboration graph

Public Types

enum  SubDomainEnum { SD_Image, SD_Lattice, SD_SubDiv, SD_Shifted }
 Enumeration of target image sub-domains on which to evaluate penalty. More...
 
- Public Types inherited from mirtk::EnergyTerm
typedef ObjectFactory< enum EnergyMeasure, EnergyTermFactoryType
 Type of energy term factory.
 

Public Member Functions

virtual double DerivativeWrtJacobianDet (double det) const =0
 
virtual void Initialize ()
 Initialize energy term once input and parameters have been set.
 
 mirtkPublicAttributeMacro (SubDomainEnum, SubDomain)
 Sub-domain on which to evaluate penalty.
 
 mirtkPublicAttributeMacro (bool, WithRespectToWorld)
 
 mirtkPublicAttributeMacro (bool, UseLatticeSpacing)
 Whether to use control point spacing when derivatives are computed w.r.t. world coordinates.
 
 mirtkPublicAttributeMacro (bool, Symmetric)
 Whether to apply symmetric penalty in case of SVFFD model (default: true)
 
 mirtkReadOnlyAttributeMacro (bool, ConstrainParameterization)
 
virtual ParameterList Parameter () const
 Get parameter key/value as string map.
 
virtual double Penalty (double det) const =0
 
virtual void Update (bool=true)
 Update internal state upon change of input.
 
virtual void WriteDataSets (const char *, const char *, bool=true) const
 Write Jacobian determinant.
 
virtual void WriteGradient (const char *, const char *) const
 Write gradient of penalty term.
 
virtual ~JacobianConstraint ()
 Destructor.
 
- Public Member Functions inherited from mirtk::TransformationConstraint
virtual ~TransformationConstraint ()
 Destructor.
 
- Public Member Functions inherited from mirtk::EnergyTerm
virtual enum EnergyMeasure EnergyMeasure () const =0
 Energy measure implemented by this term.
 
void Gradient (double *gradient, double step)
 
virtual void GradientStep (const double *gradient, double &min, double &max) const
 
double InitialValue ()
 Returns initial value of energy term.
 
void NormalizedGradient (double *gradient, double step)
 
string Prefix (const char *=NULL) const
 Prefix to be used for debug output files.
 
virtual void Print (Indent=0) const
 Print debug information.
 
virtual double RawValue (double) const
 
double RawValue ()
 
void ResetInitialValue ()
 Reset initial value of energy term.
 
void ResetValue ()
 Reset cached value of energy term.
 
virtual bool Upgrade ()
 Update energy term after convergence.
 
double Value ()
 Evaluate energy term.
 
virtual ~EnergyTerm ()
 Destructor.
 
- Public Member Functions inherited from mirtk::Configurable
string DefaultName () const
 
virtual bool Set (const char *, const char *)
 Set parameter value from string.
 
virtual ~Configurable ()
 Destructor.
 
- Public Member Functions inherited from mirtk::Observable
void AddObserver (Observer &)
 Add observer.
 
void Broadcast (Event, const void *=NULL)
 Broadcast event to observers.
 
void ClearObservers ()
 Delete all observers.
 
void DeleteObserver (Observer &)
 Delete observer.
 
void NotifyObservers (Event, const void *=NULL)
 Notify all observers about given event if this object has changed.
 
int NumberOfObservers () const
 Number of current observers.
 
virtual ~Observable ()
 Destructor.
 
- Public Member Functions inherited from mirtk::Object
virtual const char * NameOfClass () const =0
 Get name of class, which this object is an instance of.
 
bool Parameter (const ParameterList &)
 Set parameters from name/value pairs.
 
virtual ~Object ()
 Destructor.
 

Protected Member Functions

virtual double Evaluate ()
 Compute penalty for current transformation estimate.
 
virtual void EvaluateGradient (double *, double, double)
 Compute gradient of penalty term w.r.t transformation parameters.
 
 JacobianConstraint (const char *, bool=false)
 Constructor.
 
virtual bool SetWithoutPrefix (const char *, const char *)
 Set parameter value from string.
 
- Protected Member Functions inherited from mirtk::TransformationConstraint
const FreeFormTransformationFFD () const
 Get transformation as free-form deformation or NULL if it is none.
 
const MultiLevelTransformationMFFD () const
 Get transformation as multi-level transformation or NULL if it is none.
 
TransformationConstraintoperator= (const TransformationConstraint &)
 Assignment operator.
 
virtual bool SetWithPrefix (const char *, const char *)
 Set parameter value from string.
 
template<class TransformationType >
const TransformationTypeTransformationAs () const
 Get transformation as specific type or NULL if dynamic cast fails.
 
 TransformationConstraint (const char *="", double=1.0)
 Constructor.
 
 TransformationConstraint (const TransformationConstraint &)
 Copy constructor.
 
void WriteFFDGradient (const char *, const FreeFormTransformation *, const double *) const
 Write gradient of penalty term w.r.t. control point parameters.
 
- Protected Member Functions inherited from mirtk::EnergyTerm
 EnergyTerm (const char *="", double=1.0)
 Constructor.
 
 EnergyTerm (const EnergyTerm &)
 Copy constructor.
 
EnergyTermoperator= (const EnergyTerm &)
 Assignment operator.
 
- Protected Member Functions inherited from mirtk::Configurable
 Configurable (const char *="")
 Constructor.
 
 Configurable (const Configurable &)
 Copy constructor.
 
string DefaultPrefix () const
 Get default object name prefix (if any)
 
bool HasName () const
 Whether this object has an explicit name.
 
bool HasPrefix () const
 Whether this object has either an explicit name or default prefix.
 
template<class T >
bool InsertWithPrefix (ParameterList &, string, T) const
 Insert parameter into name/value list with object name prefix.
 
bool InsertWithPrefix (ParameterList &, const ParameterList &) const
 Insert parameters into name/value list with object name prefix.
 
Configurableoperator= (const Configurable &)
 Assignment operator.
 
string ParameterNameWithoutPrefix (const char *) const
 Get name of parameter without object name prefix.
 
string ParameterNameWithPrefix (const string &) const
 Get name of parameter with default object name prefix.
 
string ParameterNameWithPrefix (const char *) const
 Get name of parameter with default object name prefix.
 
- Protected Member Functions inherited from mirtk::Observable
 Observable ()
 Default constructor.
 
 Observable (const Observable &)
 Copy constructor.
 
Observableoperator= (const Observable &)
 Assignment operator.
 
- Protected Member Functions inherited from mirtk::Object
template<typename... Args>
void Throw (ErrorType err, const char *func, Args... args) const
 

Protected Attributes

Matrix_AdjJacobian
 Adjugate of Jacobian at each control point.
 
double * _DetJacobian
 Determinant of Jacobian at each control point.
 
Array< Matrix_MatL2W
 Sub-domain lattice coordinates to world.
 
Array< Matrix_MatW2L
 World to sub-domain lattice coordinates.
 
int _NumJacobian
 Number of allocated Jacobian matrices.
 
Array< ImageAttributes_SubDomains
 Discrete sub-domain over which to integrate penalty.
 

Additional Inherited Members

- Static Public Member Functions inherited from mirtk::TransformationConstraint
static TransformationConstraintNew (ConstraintMeasure, const char *="", double=1.0)
 Instantiate new transformation constraint of given kind.
 
- Static Public Member Functions inherited from mirtk::EnergyTerm
static FactoryTypeFactory ()
 Get global energy term factory instance.
 
static EnergyTermNew (EnergyMeasure, const char *="", double=1.0)
 Construct new energy term.
 
static EnergyTermTryNew (EnergyMeasure, const char *="", double=1.0)
 Construct new energy term or return nullptr if term not available.
 
- Static Public Member Functions inherited from mirtk::Object
static const char * NameOfType ()
 Get name of this class type.
 
- Static Protected Member Functions inherited from mirtk::Object
template<typename... Args>
static void ThrowStatic (ErrorType err, const char *cls, const char *func, Args... args)
 

Detailed Description

Base class of soft transformation constraints penalizing the Jacobian determinant

Note
The Jacobian, Penalty, and Derivative functions are public such that these can be called by a TBB parallel_for/parall_reduce body in a subclass implementation. These should not be considered as public API and may be subject to change.

Definition at line 43 of file JacobianConstraint.h.

Member Enumeration Documentation

§ SubDomainEnum

Enumeration of target image sub-domains on which to evaluate penalty.

Enumerator
SD_Image 

Evaluate penalty at image voxels.

SD_Lattice 

Evaluate penalty at control points.

SD_SubDiv 

Evaluate penalty at subdivided control point lattice.

SD_Shifted 

Evaluate penalty in-between control points.

Definition at line 53 of file JacobianConstraint.h.

Member Function Documentation

§ DerivativeWrtJacobianDet()

virtual double mirtk::JacobianConstraint::DerivativeWrtJacobianDet ( double  det) const
pure virtual

Evaluate derivative of penalty w.r.t. Jacobian determinant value

Parameters
[in]detJacobian determinant value.

Implemented in mirtk::NegJacobianConstraint, and mirtk::LogJacobianConstraint.

§ mirtkPublicAttributeMacro()

mirtk::JacobianConstraint::mirtkPublicAttributeMacro ( bool  ,
WithRespectToWorld   
)

Whether to evaluate derivatives of smoothness term w.r.t. world coordinates.

When false, the smoothness penalty is evaluated w.r.t the local lattice coordinates

§ mirtkReadOnlyAttributeMacro()

mirtk::JacobianConstraint::mirtkReadOnlyAttributeMacro ( bool  ,
ConstrainParameterization   
)

Whether to always apply constraint to Jacobian of FFD spline function

This option has no effect when the FFD parameters are displacements. In case of a velocity based FFD model, it applies the constraint to the velocity field instead of the corresponding displacement field.

§ Penalty()

virtual double mirtk::JacobianConstraint::Penalty ( double  det) const
pure virtual

Evaluate penalty at control point location given Jacobian determinant value

Parameters
[in]detJacobian determinant value.

Implemented in mirtk::NegJacobianConstraint, and mirtk::LogJacobianConstraint.


The documentation for this class was generated from the following file: