Public Member Functions | Protected Attributes | List of all members
mirtk::BSplineFreeFormTransformation4D Class Reference

#include <BSplineFreeFormTransformation4D.h>

Inheritance diagram for mirtk::BSplineFreeFormTransformation4D:
Inheritance graph
Collaboration diagram for mirtk::BSplineFreeFormTransformation4D:
Collaboration graph

Public Member Functions

virtual void ApproximateDOFs (const double *, const double *, const double *, const double *, const double *, const double *, const double *, int)
 
virtual void ApproximateDOFsGradient (const double *, const double *, const double *, const double *, const double *, const double *, const double *, int, double *, double=1.0) const
 
virtual double BendingEnergy (double, double, double, double=0, double=NaN, bool=true) const
 Calculates the bending of the transformation.
 
virtual double BendingEnergy (bool=false, bool=true) const
 Approximates the bending energy on the control point lattice.
 
virtual double BendingEnergy (const ImageAttributes &, double=NaN, bool=true) const
 Approximates the bending energy on the specified discrete domain.
 
virtual void BendingEnergyGradient (double *, double=1.0, bool=false, bool=true, bool=true) const
 
virtual void BoundingBox (int, double &, double &, double=1) const
 
virtual void BoundingBox (int, double &, double &, double &, double &, double &, double &, double=1) const
 
virtual void BoundingBox (int, double &, double &, double &, double &, double &, double &, double &, double &, double=1) const
 
 BSplineFreeFormTransformation4D ()
 Default constructor.
 
 BSplineFreeFormTransformation4D (double, double, double, double, double, double, double, double, double, double, double, double, double *, double *, double *)
 Construct free-form transformation for given image domain and lattice spacing.
 
 BSplineFreeFormTransformation4D (const ImageAttributes &, double=-1, double=-1, double=-1, double=-1)
 Construct free-form transformation for given image domain and lattice spacing.
 
 BSplineFreeFormTransformation4D (const BaseImage &, double, double, double, double)
 Construct free-form transformation for given target image and lattice spacing.
 
 BSplineFreeFormTransformation4D (const BSplineFreeFormTransformation4D &)
 Copy Constructor.
 
virtual bool CanRead (TransformationType) const
 Whether this transformation can read a file of specified type (i.e. format)
 
void Evaluate (double &, double &, double &, double) const
 Calculates the FFD (for a point in FFD coordinates)
 
void EvaluateHessian (Matrix [3], int, int, int, int) const
 Calculates the Hessian of the FFD at a point in lattice coordinates.
 
void EvaluateHessian (Matrix [3], double, double, double, double) const
 Calculates the Hessian of the FFD at a point in lattice coordinates.
 
void EvaluateHessianWorld (Matrix [3], double, double, double, double) const
 
void EvaluateInside (double &, double &, double &, double) const
 Evaluates the FFD at a point in lattice coordinates inside the FFD domain.
 
void EvaluateJacobian (Matrix &, int, int, int, int) const
 Calculates the spatial Jacobian of the FFD at a point in lattice coordinates.
 
void EvaluateJacobian (Matrix &, double, double, double, double) const
 Calculates the spatial Jacobian of the FFD at a point in lattice coordinates.
 
void EvaluateJacobianDOFs (double [3], int, int, int, int, double, double, double, double) const
 
void EvaluateJacobianDOFs (TransformationJacobian &jac, double, double, double, double) const
 
void EvaluateJacobianWorld (Matrix &, double, double, double, double) const
 
void EvaluateLaplacian (double [3], int, int, int, int) const
 Calculates the Laplacian of the FFD at a point in lattice coordinates.
 
void EvaluateLaplacian (double [3], int, int, int, double) const
 Calculates the Laplacian of the FFD at a point in lattice coordinates.
 
void EvaluateLaplacian (double [3], double, double, double, double) const
 Calculates the Laplacian of the FFD at a point in lattice coordinates.
 
void EvaluateLaplacian (double &, double &, double &, double) const
 Calculates the Laplacian of the FFD at a point in lattice coordinates.
 
virtual int GetTAfterSubdivision () const
 Number of control points in t after subdivision.
 
virtual double GetTSpacingAfterSubdivision () const
 Returns the control point spacing in t after the subdivision.
 
virtual int GetXAfterSubdivision () const
 Number of control points in x after subdivision.
 
virtual double GetXSpacingAfterSubdivision () const
 Returns the control point spacing in x after the subdivision.
 
virtual int GetYAfterSubdivision () const
 Number of control points in y after subdivision.
 
virtual double GetYSpacingAfterSubdivision () const
 Returns the control point spacing in y after the subdivision.
 
virtual int GetZAfterSubdivision () const
 Number of control points in z after subdivision.
 
virtual double GetZSpacingAfterSubdivision () const
 Returns the control point spacing in z after the subdivision.
 
virtual void Interpolate (const double *, const double *, const double *)
 
virtual void JacobianDOFs (Matrix &, int, int, int, int, double, double, double, double, double=NaN) const
 Calculates the Jacobian of the transformation w.r.t the transformation parameters.
 
virtual void JacobianDOFs (double [3], int, int, int, int, double, double, double, double, double=NaN) const
 Calculates the Jacobian of the transformation w.r.t the transformation parameters.
 
virtual void JacobianDOFs (TransformationJacobian &, double, double, double, double, double=NaN) const
 Calculates the Jacobian of the transformation w.r.t the transformation parameters.
 
virtual int KernelSize () const
 Size of support region of the used kernel.
 
virtual void LocalHessian (Matrix [3], double, double, double, double, double=NaN) const
 Calculates the Hessian for each component of the local transformation w.r.t world coordinates.
 
virtual void LocalJacobian (Matrix &, double, double, double, double, double=NaN) const
 Calculates the Jacobian of the local transformation w.r.t world coordinates.
 
virtual void LocalTransform (double &, double &, double &, double, double=NaN) const
 Transforms a single point using the local transformation component only.
 
virtual void ParametricGradient (const GenericImage< double > *, double *, const WorldCoordsImage *, const WorldCoordsImage *, double=NaN, double=1.0) const
 
virtual void Print (ostream &, Indent=0) const
 Prints the parameters of the transformation.
 
virtual void Subdivide (bool=true, bool=true, bool=true, bool=true)
 Subdivide FFD lattice in the specified dimensions.
 
virtual ~BSplineFreeFormTransformation4D ()
 Destructor.
 
- Public Member Functions inherited from mirtk::FreeFormTransformation4D
void BoundingBoxCP (int, Point &, Point &, double=1) const
 
void BoundingBoxImage (const GreyImage *, int, int &, int &, int &, int &, int &, int &, double=1) const
 
void GetStatusCP (int, int, int, int, DOFStatus &, DOFStatus &, DOFStatus &) const
 
virtual void Initialize (const ImageAttributes &)
 Initialize free-form transformation.
 
virtual void JacobianDOFs (Matrix &, int, double, double, double, double, double=NaN) const
 Calculates the Jacobian of the transformation w.r.t a control point.
 
virtual void JacobianDOFs (double [3], int, double, double, double, double, double=NaN) const
 Calculates the Jacobian of the transformation w.r.t a transformation parameter.
 
void PutStatusCP (int, int, int, int, DOFStatus, DOFStatus, DOFStatus)
 
virtual ~FreeFormTransformation4D ()
 Destructor.
 
- Public Member Functions inherited from mirtk::FreeFormTransformation
int ActualNumberOfDOFs () const
 
virtual double Approximate (const Transformation *, int=1, double=.0)
 
virtual double Approximate (const ImageAttributes &, double *, double *, double *, int=1, double=.0)
 
virtual double Approximate (const double *, const double *, const double *, double *, double *, double *, int, int=1, double=.0)
 
virtual double Approximate (const double *, const double *, const double *, const double *, double *, double *, double *, int, int=1, double=.0)
 
virtual double ApproximateAsNew (const Transformation *, int=1, double=.0)
 Approximate another transformation and return approximation error.
 
virtual double ApproximateAsNew (const ImageAttributes &, double *, double *, double *, int=1, double=.0)
 
virtual ImageAttributes ApproximationDomain (const ImageAttributes &, const Transformation *)
 
const ImageAttributesAttributes () const
 Returns attributes of control point grid.
 
void BoundingBox (double &, double &) const
 Gets the temporal bounding box of the free-form deformation (in ms)
 
void BoundingBox (double &, double &, double &, double &, double &, double &) const
 Gets the spatial bounding box of the free-form deformation (in mm)
 
void BoundingBox (Point &, Point &) const
 Gets the spatial bounding box of the free-form deformation (in mm)
 
void BoundingBox (double &, double &, double &, double &, double &, double &, double &, double &) const
 Gets the spatio-temporal bounding box of the free-form deformation (in mm and ms)
 
void BoundingBox (Point &, double &, Point &, double &) const
 Gets the spatio-temporal bounding box of the free-form deformation (in mm and ms)
 
void BoundingBox (int, Point &, Point &, double=1) const
 
bool BoundingBox (const ImageAttributes &, int, int &, int &, int &, int &, int &, int &, double=1) const
 
bool BoundingBox (const ImageAttributes &, int, int &, int &, int &, int &, int &, int &, int &, int &, double=1) const
 
bool BoundingBox (const Image *, int, int &, int &, int &, int &, int &, int &, double=1) const
 
bool BoundingBox (const Image *, int, int &, int &, int &, int &, int &, int &, int &, int &, double=1) const
 
void ControlPointLocation (int, double &, double &) const
 Gets the location of the given control point (in mm)
 
void ControlPointLocation (int, double &, double &, double &) const
 Gets the location of the given control point (in mm)
 
Point ControlPointLocation (int) const
 Returns the location of the given control point (in mm)
 
virtual bool CopyFrom (const Transformation *)
 
bool CropPadPassiveCPs (int=0, bool=false)
 
virtual bool CropPadPassiveCPs (int, int, int=0, int=0, bool=false)
 
bool DOFBoundingBox (const ImageAttributes &, int, int &, int &, int &, int &, int &, int &, double=1) const
 
bool DOFBoundingBox (const Image *, int, int &, int &, int &, int &, int &, int &, double=1) const
 
virtual double DOFGradientNorm (const double *) const
 Get norm of the gradient vector.
 
int DOFToDimension (int) const
 Get index of dimension corresponding to transformation parameter (DoFs)
 
int DOFToIndex (int) const
 Get index of control point corresponding to transformation parameter (DoFs)
 
double EvaluateRMSError (const Transformation *) const
 Evaluates RMS error of transformation at control points compared to another.
 
virtual void ExtrapolationMode (enum ExtrapolationMode)
 Set extrapolation mode.
 
const CPExtrapolatorExtrapolator () const
 
virtual void FFDJacobianDetDerivative (double dJ[3], const Matrix &adj, int cp, double x, double y, double z, double=0, double=NaN, bool wrt_world=true, bool use_spacing=true) const
 
virtual void FFDJacobianWorld (Matrix &, double, double, double, double=0, double=NaN) const
 Calculates the Jacobian of the transformation w.r.t either control point displacements or velocities.
 
void Get (int, Vector &) const
 Gets values of the parameters at a control point.
 
void Get (int, double &, double &, double &) const
 Gets values of the parameters at a control point.
 
void Get (int, int, int, double &, double &, double &) const
 Gets values of the parameters at a control point.
 
void Get (int, int, int, int, double &, double &, double &) const
 Gets values of the parameters at a control point.
 
void GetOrientation (double *, double *, double *) const
 Gets the orientation of the free-form deformation lattice.
 
void GetSpacing (double &, double &, double &) const
 Gets the control point spacing (in mm)
 
void GetSpacing (double &, double &, double &, double &) const
 Gets the control point spacing (in mm)
 
void GetStatus (int, CPStatus &) const
 Gets status of the parameters at a control point.
 
void GetStatus (int, int, int, DOFStatus &, DOFStatus &, DOFStatus &) const
 Gets status of the parameters at a control point.
 
void GetStatus (int, int, int, int, DOFStatus &, DOFStatus &, DOFStatus &) const
 Gets status of the parameters at a control point.
 
int GetT () const
 Returns the number of control points in t.
 
double GetTSpacing () const
 Returns the of control point spacing in t.
 
int GetX () const
 Returns the number of control points in x.
 
double GetXSpacing () const
 Returns the of control point spacing in x.
 
int GetY () const
 Returns the number of control points in y.
 
double GetYSpacing () const
 Returns the of control point spacing in y.
 
int GetZ () const
 Returns the number of control points in z.
 
double GetZSpacing () const
 Returns the of control point spacing in z.
 
virtual void GlobalHessian (Matrix [3], double, double, double, double=0, double=NaN) const
 Calculates the Hessian for each component of the global transformation w.r.t world coordinates.
 
virtual void GlobalInverse (double &, double &, double &, double=0, double=NaN) const
 Transforms a single point using the inverse of the global transformation only.
 
virtual void GlobalJacobian (Matrix &, double, double, double, double=0, double=NaN) const
 Calculates the Jacobian of the global transformation w.r.t world coordinates.
 
virtual void GlobalTransform (double &, double &, double &, double=0, double=NaN) const
 Transforms a single point using the global transformation component only.
 
virtual void Hessian (Matrix [3], double, double, double, double=0, double=NaN) const
 Calculates the Hessian for each component of the transformation w.r.t world coordinates.
 
void HessianToWorld (double &, double &, double &) const
 
void HessianToWorld (double &, double &, double &, double &, double &, double &) const
 
void HessianToWorld (Matrix &) const
 
void HessianToWorld (Matrix [3]) const
 
void IndexToDOFs (int, int &, int &) const
 Get indices of transformation parameters (DoFs)
 
void IndexToDOFs (int, int &, int &, int &) const
 Get indices of transformation parameters (DoFs)
 
void IndexToLattice (int, int &, int &) const
 Get control point lattice coordinates from index.
 
void IndexToLattice (int, int &, int &, int &) const
 Get control point lattice coordinates from index.
 
void IndexToLattice (int, int &, int &, int &, int &) const
 Get control point lattice coordinates from index.
 
void IndexToWorld (int, double &, double &) const
 Get world coordinates (in mm) of control point.
 
void IndexToWorld (int, double &, double &, double &) const
 Get world coordinates (in mm) of control point.
 
void IndexToWorld (int, Point &) const
 Get world coordinates (in mm) of control point.
 
Point IndexToWorld (int) const
 Get world coordinates (in mm) of control point.
 
void Initialize (const ImageAttributes &, double, double, double=-1.0, double=-1.0)
 Initialize free-form transformation.
 
void Initialize (const CPImage &, bool=false)
 Initialize transformation from existing vector field.
 
void Initialize (const GenericImage< double > &, bool=false)
 Initialize transformation from existing 3D+t vector field.
 
virtual bool Inverse (double &, double &, double &, double=0, double=NaN) const
 Transforms a single point using the inverse of the transformation.
 
virtual bool IsActive (int) const
 Whether the control point at given lattice index is active.
 
virtual bool IsActive (int, int, int=0, int=0) const
 Whether the control point at given lattice coordinates is active.
 
virtual void Jacobian (Matrix &, double, double, double, double=0, double=NaN) const
 Calculates the Jacobian of the transformation w.r.t world coordinates.
 
virtual void JacobianDetDerivative (double dJ[3], const Matrix &adj, int cp, double x, double y, double z, double t=0, double t0=NaN, bool wrt_world=true, bool use_spacing=true) const
 
void JacobianToWorld (double &, double &) const
 
void JacobianToWorld (double &, double &, double &) const
 
void JacobianToWorld (Matrix &) const
 
void JacobianToWorldOrientation (double &, double &) const
 Reorient 1st order derivatives computed w.r.t 2D lattice coordinates.
 
void JacobianToWorldOrientation (double &, double &, double &) const
 Reorient 1st order derivatives computed w.r.t 2D lattice coordinates.
 
int KernelRadius () const
 Radius of support region of the used kernel.
 
int LatticeToIndex (int, int, int=0, int=0) const
 Get control point index from lattice coordinates.
 
virtual double LatticeToTime (double) const
 Transforms temporal lattice coordinate to time (in ms)
 
virtual void LatticeToWorld (double &, double &) const
 Transforms lattice coordinates to world coordinates (in mm)
 
virtual void LatticeToWorld (double &, double &, double &) const
 Transforms lattice coordinates to world coordinates (in mm)
 
virtual void LatticeToWorld (Point &) const
 Transforms lattice coordinates to world coordinates (in mm)
 
 mirtkPublicAttributeMacro (double, SpeedupFactor)
 Speedup factor for gradient computation.
 
 mirtkReadOnlyAttributeMacro (enum ExtrapolationMode, ExtrapolationMode)
 Mode used for extrapolation of control point image.
 
int NumberOfActiveCPs () const
 Number of active control points.
 
int NumberOfCPs () const
 Number of control points.
 
int NumberOfPassiveCPs () const
 Number of non-active control points.
 
virtual ParameterList Parameter () const
 Get (non-DoF) parameters as key/value as string map.
 
virtual void ParametricGradient (const PointSet &, const Vector3D< double > *, double *, double=0, double=NaN, double=1) const
 
void Put (int, const Vector &)
 Puts values of the parameters at a control point.
 
void Put (int, double, double, double)
 Puts values of the parameters at a control point.
 
void Put (int, int, int, double, double, double)
 Puts values of the parameters at a control point.
 
void Put (int, int, int, int, double, double, double)
 Puts values of the parameters at a control point.
 
void PutBoundingBox (double, double, double, double, double, double)
 Puts the spatial bounding box for the free-form deformation (in mm)
 
void PutBoundingBox (const Point &, const Point &)
 Puts the temporal bounding box for the free-form deformation (in mm)
 
void PutBoundingBox (double, double)
 Puts the temporal bounding box of the free-form deformation (in ms)
 
void PutBoundingBox (double, double, double, double, double, double, double, double)
 Puts the spatio-temporal bounding box for the free-form deformation (in mm)
 
void PutOrientation (double *, double *, double *)
 Puts the orientation of the free-form deformation lattice.
 
void PutStatus (int, const CPStatus &)
 Puts status of the parameters at a control point.
 
void PutStatus (int, int, int, DOFStatus, DOFStatus, DOFStatus)
 Puts status of the parameters at a control point.
 
void PutStatus (int, int, int, int, DOFStatus, DOFStatus, DOFStatus)
 Puts status of the parameters at a control point.
 
virtual bool Set (const char *, const char *)
 Set named (non-DoF) parameter from value as string.
 
void Subdivide2D ()
 Subdivide lattice in first two dimensions.
 
void Subdivide3D ()
 Subdivide lattice in first three dimensions.
 
void Subdivide4D ()
 Subdivide lattice in all four dimensions.
 
int T () const
 Returns the number of control points in t.
 
virtual double TimeToLattice (double) const
 Transforms time (in ms) to temporal lattice coordinate.
 
virtual void Transform (double &, double &, double &, double=0, double=NaN) const
 Transforms a single point.
 
virtual void WorldToLattice (double &, double &) const
 Transforms world coordinates (in mm) to lattice coordinates.
 
virtual void WorldToLattice (double &, double &, double &) const
 Transforms world coordinates (in mm) to lattice coordinates.
 
virtual void WorldToLattice (Point &) const
 Transforms world coordinates (in mm) to lattice coordinates.
 
int X () const
 Returns the number of control points in x.
 
int Y () const
 Returns the number of control points in y.
 
int Z () const
 Returns the number of control points in z.
 
virtual ~FreeFormTransformation ()
 Destructor.
 
- Public Member Functions inherited from mirtk::Transformation
virtual void Add (const DOFValue *)
 Add change to transformation parameters.
 
virtual double Approximate (const ImageAttributes &, const Transformation *, int=1, double=.0)
 Approximate another transformation and return approximation error.
 
virtual double Approximate (GenericImage< double > &, int=1, double=.0)
 
virtual double ApproximateAsNew (const ImageAttributes &, const Transformation *, int=1, double=.0)
 Approximate another transformation and return approximation error.
 
virtual double ApproximateAsNew (GenericImage< double > &, int=1, double=.0)
 
virtual double ApproximateAsNew (const double *, const double *, const double *, double *, double *, double *, int, int=1, double=.0)
 
virtual double ApproximateAsNew (const double *, const double *, const double *, const double *, double *, double *, double *, int, int=1, double=.0)
 
virtual void ApproximateGradient (const ImageAttributes &, const double *, const double *, const double *, double *, double=1.0) const
 
virtual void ApproximateGradient (const double *, const double *, const double *, const double *, const double *, const double *, int, double *, double=1.0) const
 
virtual void ApproximateGradient (const double *, const double *, const double *, const double *, const double *, const double *, const double *, int, double *, double=1.0) const
 
virtual bool CanModifyDisplacement (int=-1) const
 
virtual void DeriveJacobianWrtDOF (Matrix &, int, double, double, double, double=0, double=NaN) const
 Calculates the derivative of the Jacobian of the transformation (w.r.t. world coordinates) w.r.t. a transformation parameter.
 
virtual void Displacement (double &, double &, double &, double=0, double=NaN) const
 Calculates the displacement of a single point.
 
virtual void Displacement (const ImageAttributes &, double *, double *, double *) const
 
virtual void Displacement (GenericImage< double > &, double=NaN, const WorldCoordsImage *=NULL) const
 Calculates the displacement vectors for a whole image domain.
 
virtual void Displacement (GenericImage< float > &, double=NaN, const WorldCoordsImage *=NULL) const
 Calculates the displacement vectors for a whole image domain.
 
virtual void Displacement (GenericImage< double > &, double, double, const WorldCoordsImage *=NULL) const
 
virtual void Displacement (GenericImage< float > &, double, double, const WorldCoordsImage *=NULL) const
 
virtual void DisplacementAfterDOFChange (int dof, double dv, GenericImage< double > &dx, double t, double t0=NaN, const WorldCoordsImage *i2w=NULL) const
 
double EvaluateRMSError (const ImageAttributes &, const Transformation *) const
 Evaluates RMS error of transformation compared to another.
 
double EvaluateRMSError (const ImageAttributes &, double *, double *) const
 
double EvaluateRMSError (const ImageAttributes &, double *, double *, double *) const
 
double EvaluateRMSError (const double *, const double *, const double *, double, double *, double *, double *, int no) const
 Evaluates RMS error of transformation compared to displacement field.
 
double EvaluateRMSError (const double *, const double *, const double *, const double *, double *, double *, double *, int no) const
 Evaluates RMS error of transformation compared to given displacement field.
 
virtual double Get (int) const
 Get value of transformation parameter.
 
virtual void Get (DOFValue *) const
 Get values of transformation parameters.
 
virtual DOFStatus GetStatus (int) const
 Get status of transformation parameter.
 
virtual void GlobalDisplacement (double &, double &, double &, double=0, double=NaN) const
 Calculates the displacement of a single point using the global transformation component only.
 
virtual void GlobalInverseDisplacement (double &, double &, double &, double=0, double=NaN) const
 Calculates the displacement of a single point using the inverse of the global transformation only.
 
virtual double GlobalJacobian (double, double, double, double=0, double=NaN) const
 Calculates the determinant of the Jacobian of the global transformation w.r.t world coordinates.
 
virtual bool HasSameDOFsAs (const Transformation *) const
 Checks whether transformation depends on the same vector of parameters.
 
virtual bool Inverse (Point &, double=0, double=NaN) const
 Transforms a single point using the inverse of the transformation.
 
virtual int Inverse (PointSet &, double=0, double=NaN) const
 
virtual bool InverseDisplacement (double &, double &, double &, double=0, double=NaN) const
 Calculates the displacement of a single point using the inverse of the transformation.
 
virtual int InverseDisplacement (const ImageAttributes &, double *, double *, double *) const
 
virtual int InverseDisplacement (GenericImage< double > &, double=NaN, const WorldCoordsImage *=NULL) const
 
virtual int InverseDisplacement (GenericImage< float > &, double=NaN, const WorldCoordsImage *=NULL) const
 
virtual int InverseDisplacement (GenericImage< double > &, double, double, const WorldCoordsImage *=NULL) const
 
virtual int InverseDisplacement (GenericImage< float > &, double, double, const WorldCoordsImage *=NULL) const
 
virtual bool IsIdentity () const
 Checks whether the transformation is an identity mapping.
 
virtual double Jacobian (double, double, double, double=0, double=NaN) const
 Calculates the determinant of the Jacobian of the transformation w.r.t world coordinates.
 
virtual void LocalDisplacement (double &, double &, double &, double=0, double=NaN) const
 Calculates the displacement of a single point using the local transformation component only.
 
virtual bool LocalInverse (double &, double &, double &, double=0, double=NaN) const
 Transforms a single point using the inverse of the local transformation only.
 
virtual bool LocalInverseDisplacement (double &, double &, double &, double=0, double=NaN) const
 Calculates the displacement of a single point using the inverse of the local transformation only.
 
virtual double LocalJacobian (double, double, double, double=0, double=NaN) const
 Calculates the determinant of the Jacobian of the local transformation w.r.t world coordinates.
 
int NumberOfActiveDOFs () const
 Get number of active transformation parameters.
 
virtual int NumberOfDOFs () const
 Get number of transformation parameters.
 
int NumberOfPassiveDOFs () const
 Get number of passive transformation parameters.
 
void ParametricGradient (const GenericImage< double > *, double *, const WorldCoordsImage *, double=NaN, double=1) const
 
void ParametricGradient (const GenericImage< double > *, double *, double=NaN, double=1) const
 
virtual void ParametricGradient (const GenericImage< double > **, int, double *, const WorldCoordsImage *, const WorldCoordsImage *, const double *=NULL, double=1) const
 
void ParametricGradient (const GenericImage< double > **, int, double *, const WorldCoordsImage *, const double *=NULL, double=1) const
 
void ParametricGradient (const GenericImage< double > **, int, double *, const double *=NULL, double=1) const
 
void Print (Indent=0) const
 Prints information about the transformation.
 
virtual void Put (int, double)
 Put value of transformation parameter.
 
virtual void Put (const DOFValue *)
 Put values of transformation parameters.
 
virtual void PutStatus (int, DOFStatus)
 Put status of transformation parameter.
 
virtual void Read (const char *)
 Reads a transformation from a file.
 
virtual CifstreamRead (Cifstream &)
 Reads a transformation from a file stream.
 
virtual bool RequiresCachingOfDisplacements () const
 
virtual void Reset ()
 Reset transformation.
 
virtual void Transform (Point &, double=0, double=NaN) const
 Transforms a single point.
 
virtual void Transform (PointSet &, double=0, double=NaN) const
 Transforms a set of points.
 
virtual void Transform (int, double *, double *, double *, double=0, double=NaN) const
 Transforms a set of points.
 
virtual void Transform (int, double *, double *, double *, const double *, double=NaN) const
 Transforms a set of points.
 
virtual void Transform (WorldCoordsImage &, double=NaN) const
 Transforms world coordinates of image voxels.
 
virtual TransformationType TypeOfClass () const
 Returns type ID of the instantiated transformation class.
 
virtual double Update (const DOFValue *)
 Update transformation parameters given parametric gradient.
 
virtual void Verify ()
 
virtual void Write (const char *) const
 Writes a transformation to a file.
 
virtual CofstreamWrite (Cofstream &) const
 Writes a transformation to a file stream.
 
virtual ~Transformation ()
 Default 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 Attributes

Interpolator _FFD
 Interpolates control point values at arbitrary lattice locations.
 
- Protected Attributes inherited from mirtk::FreeFormTransformation
const ImageAttributes_attr
 Control point lattice attributes.
 
CPInterpolator_CPFunc
 
CPImage _CPImage
 
CPStatus **** _CPStatus
 
CPExtrapolator_CPValue
 Infinite discrete representation of free-form transformation coefficients.
 
const double & _dt
 Read-only reference to _dt attribute of _CPImage.
 
const double & _dx
 Read-only reference to _dx attribute of _CPImage.
 
const double & _dy
 Read-only reference to _dy attribute of _CPImage.
 
const double & _dz
 Read-only reference to _dz attribute of _CPImage.
 
const Matrix_matL2W
 Read-only reference to _matI2W of _CPImage.
 
const Matrix_matW2L
 Read-only reference to _matW2I of _CPImage.
 
const int & _t
 Read-only reference to _t attribute of _CPImage.
 
const int & _x
 Read-only reference to _x attribute of _CPImage.
 
const int & _y
 Read-only reference to _y attribute of _CPImage.
 
const int & _z
 Read-only reference to _z attribute of _CPImage.
 
- Protected Attributes inherited from mirtk::Transformation
int _NumberOfDOFs
 Number of transformation parameters.
 
DOFValue_Param
 Value of each transformation parameter.
 
DOFStatus_Status
 Status of each transformation parameter (Active or Passive)
 

Additional Inherited Members

- Public Types inherited from mirtk::FreeFormTransformation
typedef GenericExtrapolateImageFunction< CPImageCPExtrapolator
 Base type used for extrapolation of control point data.
 
typedef GenericImage< CPValueCPImage
 Type of image representation of free-form transformation.
 
typedef GenericInterpolateImageFunction< CPImageCPInterpolator
 
typedef Vector3D< DOFStatusCPStatus
 Type of vector storing status of control point coefficients.
 
typedef Vector3D< DOFValueCPValue
 Type of vector storing the coefficients at a control point.
 
typedef CPValue Vector
 
- Public Types inherited from mirtk::Transformation
typedef Status DOFStatus
 Type of transforamtion parameter status.
 
typedef double DOFValue
 Type of transformation parameter value.
 
- Static Public Member Functions inherited from mirtk::FreeFormTransformation
static double Bending3D (const Matrix [3])
 Calculates the bending of the transformation given the 2nd order derivatives.
 
static ImageAttributes DefaultAttributes (const ImageAttributes &attr, double dx=-1.0, double dy=-1.0, double dz=-1.0, double dt=-1.0)
 
static ImageAttributes DefaultAttributes (double, double, double, double, double, double, double, double, double, double, double, double, const double *, const double *, const double *)
 Default attributes of free-form transformation lattice.
 
- Static Public Member Functions inherited from mirtk::Transformation
static bool CheckHeader (const char *)
 Whether magic number in header of given file.
 
static TransformationNew (TransformationType)
 
static TransformationNew (const Transformation *)
 
static TransformationNew (const char *)
 
static TransformationType TypeOfClass (const char *)
 Returns type ID corresponding to transformations of the named class.
 
- Static Public Member Functions inherited from mirtk::Object
static const char * NameOfType ()
 Get name of this class type.
 
- Protected Member Functions inherited from mirtk::FreeFormTransformation4D
 FreeFormTransformation4D (CPInterpolator &)
 Default constructor.
 
 FreeFormTransformation4D (const FreeFormTransformation4D &, CPInterpolator &)
 Copy Constructor.
 
virtual CifstreamReadDOFs (Cifstream &, TransformationType)
 Reads transformation parameters from a file stream.
 
virtual CofstreamWriteDOFs (Cofstream &) const
 Writes transformation parameters to a file stream.
 
- Protected Member Functions inherited from mirtk::FreeFormTransformation
 FreeFormTransformation (CPInterpolator &, CPInterpolator *=NULL)
 Default constructor.
 
 FreeFormTransformation (const FreeFormTransformation &, CPInterpolator &, CPInterpolator *=NULL)
 Copy constructor.
 
void InitializeCPs (const ImageAttributes &, bool=true)
 Initialize control points.
 
void InitializeCPs (const FreeFormTransformation &, bool=true)
 Copy control points from other transformation.
 
void InitializeInterpolator ()
 Initialize interpolator of control points.
 
void InitializeStatus ()
 Initialize status of control points.
 
CofstreamWriteCPs (Cofstream &) const
 Writes the control point and status information to a file stream.
 
- Protected Member Functions inherited from mirtk::Transformation
void InitializeDOFs (int)
 Initialize transformation parameters.
 
void InitializeDOFs (const Transformation &, int=-1)
 Copy transformation parameters (DoFs) and their status.
 
 Transformation (int=0)
 Default constructor.
 
 Transformation (const Transformation &)
 Copy constructor.
 
 Transformation (const Transformation &, int)
 Copy constructor.
 
- 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
 
- 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

Class for free-form transformations based on tensor product B-splines.

This class implements 4D free-form transformation using B-splines.

For more details about the implementation see Lee, Wolberg and Shin, IEEE Transactions on Visualization and Computer Graphics, Vol. 3, No. 3, 1997.

Definition at line 41 of file BSplineFreeFormTransformation4D.h.

Member Function Documentation

§ ApproximateDOFs()

virtual void mirtk::BSplineFreeFormTransformation4D::ApproximateDOFs ( const double *  ,
const double *  ,
const double *  ,
const double *  ,
const double *  ,
const double *  ,
const double *  ,
int   
)
virtual

Approximate displacements: This function takes a set of points and a set of displacements and finds !new! parameters such that the resulting transformation approximates the displacements as good as possible.

Reimplemented from mirtk::Transformation.

Reimplemented in mirtk::BSplineFreeFormTransformationTD.

§ ApproximateDOFsGradient()

virtual void mirtk::BSplineFreeFormTransformation4D::ApproximateDOFsGradient ( const double *  ,
const double *  ,
const double *  ,
const double *  ,
const double *  ,
const double *  ,
const double *  ,
int  ,
double *  ,
double  = 1.0 
) const
virtual

Finds gradient of approximation error: This function takes a set of points and a set of errors. It finds a gradient w.r.t. the transformation parameters which minimizes the L2 norm of the approximation error and adds it to the input gradient with the given weight.

Reimplemented from mirtk::Transformation.

Reimplemented in mirtk::BSplineFreeFormTransformationTD.

§ BendingEnergyGradient()

virtual void mirtk::BSplineFreeFormTransformation4D::BendingEnergyGradient ( double *  ,
double  = 1.0,
bool  = false,
bool  = true,
bool  = true 
) const
virtual

Approximates the gradient of the bending energy on the control point lattice w.r.t the transformation parameters and adds it with the given weight

Reimplemented from mirtk::FreeFormTransformation.

§ BoundingBox() [1/3]

virtual void mirtk::BSplineFreeFormTransformation4D::BoundingBox ( int  ,
double &  ,
double &  ,
double  = 1 
) const
virtual

Gets the temporal bounding box for a control point. The last parameter specifies what fraction of the bounding box to return. The default is 1 which equals 100% of the bounding box.

Reimplemented from mirtk::FreeFormTransformation.

§ BoundingBox() [2/3]

virtual void mirtk::BSplineFreeFormTransformation4D::BoundingBox ( int  ,
double &  ,
double &  ,
double &  ,
double &  ,
double &  ,
double &  ,
double  = 1 
) const
virtual

Gets the spatial bounding box for a control point. The last parameter specifies what fraction of the bounding box to return. The default is 1 which equals 100% of the bounding box.

Implements mirtk::FreeFormTransformation.

§ BoundingBox() [3/3]

virtual void mirtk::BSplineFreeFormTransformation4D::BoundingBox ( int  ,
double &  ,
double &  ,
double &  ,
double &  ,
double &  ,
double &  ,
double &  ,
double &  ,
double  = 1 
) const
virtual

Gets the spatio-temporal bounding box for a control point. The last parameter specifies what fraction of the bounding box to return. The default is 1 which equals 100% of the bounding box.

Reimplemented from mirtk::FreeFormTransformation.

§ EvaluateHessianWorld()

void mirtk::BSplineFreeFormTransformation4D::EvaluateHessianWorld ( Matrix  hessian[3],
double  x,
double  y,
double  z,
double  t 
) const
inline

Calculates the Hessian of the FFD at a point in lattice coordinates and converts the resulting Hessian to derivatives w.r.t world coordinates

Definition at line 374 of file BSplineFreeFormTransformation4D.h.

§ EvaluateJacobianDOFs() [1/2]

void mirtk::BSplineFreeFormTransformation4D::EvaluateJacobianDOFs ( double  jac[3],
int  i,
int  j,
int  k,
int  l,
double  x,
double  y,
double  z,
double  t 
) const
inline

Calculates the Jacobian of the FFD at a point in lattice coordinates w.r.t the control point with lattice coordinates (i, j, k, l)

Definition at line 314 of file BSplineFreeFormTransformation4D.h.

§ EvaluateJacobianDOFs() [2/2]

void mirtk::BSplineFreeFormTransformation4D::EvaluateJacobianDOFs ( TransformationJacobian jac,
double  x,
double  y,
double  z,
double  t 
) const
inline

Calculates the Jacobian of the FFD at a point in lattice coordinates w.r.t the parameters. The resulting Jacobian matrix contains one column for each parameter, but only non-zero columns, i.e., of control points for whom the point is in the local support region, are actually stored.

Definition at line 325 of file BSplineFreeFormTransformation4D.h.

§ EvaluateJacobianWorld()

void mirtk::BSplineFreeFormTransformation4D::EvaluateJacobianWorld ( Matrix jac,
double  x,
double  y,
double  z,
double  t 
) const
inline

Calculates the spatial Jacobian of the FFD at a point in lattice coordinates and converts the resulting Jacobian to derivatives w.r.t world coordinates

Definition at line 306 of file BSplineFreeFormTransformation4D.h.

§ Interpolate()

virtual void mirtk::BSplineFreeFormTransformation4D::Interpolate ( const double *  ,
const double *  ,
const double *   
)
virtual

Interpolates displacements: This function takes a set of displacements defined at the control points and finds a FFD which interpolates these displacements.

Implements mirtk::FreeFormTransformation.

Reimplemented in mirtk::BSplineFreeFormTransformationTD.

§ ParametricGradient()

virtual void mirtk::BSplineFreeFormTransformation4D::ParametricGradient ( const GenericImage< double > *  ,
double *  ,
const WorldCoordsImage ,
const WorldCoordsImage ,
double  = NaN,
double  = 1.0 
) const
virtual

Applies the chain rule to convert spatial non-parametric gradient to a gradient w.r.t the parameters of this transformation

Reimplemented from mirtk::FreeFormTransformation4D.

Reimplemented in mirtk::BSplineFreeFormTransformationTD.


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