#include <BSplineFreeFormTransformation3D.h>
Public Types | |
enum | ParametricGradientType { PG_Default, PG_Analytic, PG_Convolution, PG_Approximation } |
Options for parametric gradient calculation. More... | |
Public Types inherited from mirtk::FreeFormTransformation | |
typedef GenericExtrapolateImageFunction< CPImage > | CPExtrapolator |
Base type used for extrapolation of control point data. | |
typedef GenericImage< CPValue > | CPImage |
Type of image representation of free-form transformation. | |
typedef GenericInterpolateImageFunction< CPImage > | CPInterpolator |
typedef Vector3D< DOFStatus > | CPStatus |
Type of vector storing status of control point coefficients. | |
typedef Vector3D< DOFValue > | CPValue |
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. | |
Public Member Functions | |
void | AddApproximateSplineCoefficients (const double *, const double *, const double *, const double *, const double *, const double *, int, double *, double=1., bool=false) const |
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 energy 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, bool=false, bool=true, bool=true) const |
virtual void | BoundingBox (int, double &, double &, double &, double &, double &, double &, double=1) const |
BSplineFreeFormTransformation3D () | |
Default constructor. | |
BSplineFreeFormTransformation3D (double, double, double, double, double, double, double, double, double, double *, double *, double *) | |
Construct free-form transformation for given image domain and lattice spacing. | |
BSplineFreeFormTransformation3D (const ImageAttributes &, double=-1, double=-1, double=-1) | |
Construct free-form transformation for given image domain and lattice spacing. | |
BSplineFreeFormTransformation3D (const BaseImage &, double, double, double) | |
Construct free-form transformation for given target image and lattice spacing. | |
BSplineFreeFormTransformation3D (const GenericImage< double > &, bool=false) | |
Construct free-form transformation from existing 3D+t deformation field. | |
BSplineFreeFormTransformation3D (const BSplineFreeFormTransformation3D &) | |
Copy Constructor. | |
virtual bool | CanModifyDisplacement (int=-1) const |
virtual bool | CanRead (TransformationType) const |
Whether this transformation can read a file of specified type (i.e. format) | |
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 | DisplacementAfterDOFChange (int dof, double dv, GenericImage< double > &dx, double t, double t0=-1, const WorldCoordsImage *i2w=NULL) const |
void | Evaluate (double &, double &, double &, int, int) const |
Evaluates the FFD at a lattice point. | |
void | Evaluate (double &, double &, double &, int, int, int) const |
Evaluates the FFD at a lattice point. | |
void | Evaluate (double &, double &, double &) const |
Evaluates the FFD at a point in lattice coordinates. | |
void | EvaluateDerivativeOfJacobianWrtDOF (Matrix &, int, double, double) const |
void | EvaluateDerivativeOfJacobianWrtDOF (Matrix &, int, double, double, double) const |
void | EvaluateHessian (Matrix [3], int, int) const |
Calculates the Hessian of the 2D FFD at a point in lattice coordinates. | |
void | EvaluateHessian (Matrix [3], double, double) const |
Calculates the Hessian of the 2D FFD at a point in lattice coordinates. | |
void | EvaluateHessian (Matrix [3], int, int, int) const |
Calculates the Hessian of the FFD at a point in lattice coordinates. | |
void | EvaluateHessian (Matrix [3], double, double, double) const |
Calculates the Hessian of the FFD at a point in lattice coordinates. | |
void | EvaluateInside (double &, double &, double &) const |
Evaluates the FFD at a point in lattice coordinates inside the FFD domain. | |
void | EvaluateJacobian (Matrix &, int, int) const |
Calculates the Jacobian of the FFD at a point in lattice coordinates. | |
void | EvaluateJacobian (Matrix &, int, int, int) const |
Calculates the Jacobian of the FFD at a point in lattice coordinates. | |
void | EvaluateJacobian (Matrix &, double, double) const |
Calculates the Jacobian of the FFD at a point in lattice coordinates. | |
void | EvaluateJacobian (Matrix &, double, double, double) const |
Calculates the Jacobian of the FFD at a point in lattice coordinates. | |
void | EvaluateJacobianDetDerivative (double dJ[3], const Matrix &adj, double a, double b, double c, bool wrt_world=true, bool use_spacing=true) const |
void | EvaluateJacobianDetDerivative (double dJ[3], const Matrix &adj, int a, int b, int c, bool wrt_world=true, bool use_spacing=true) const |
void | EvaluateJacobianDetDerivative (double dJ[3], const Matrix &adj, int i, int j, int k, double x, double y, double z, bool wrt_world=true, bool use_spacing=true) const |
void | EvaluateJacobianDetDerivative (double dJ[3], const Matrix &adj, int cp, double x, double y, double z, bool wrt_world=true, bool use_spacing=true) const |
void | EvaluateJacobianDOFs (double [3], int, int, double, double) const |
void | EvaluateJacobianDOFs (double [3], int, int, int, double, double, double) const |
void | EvaluateJacobianDOFs (double [3], int, int, int, int, double, double, double, double) const |
void | EvaluateJacobianWorld (Matrix &, double, double) const |
void | EvaluateJacobianWorld (Matrix &, double, double, double) const |
void | EvaluateLaplacian (double [3], int, int, int) const |
Calculates the Laplacian of the FFD at a point in lattice coordinates. | |
void | EvaluateLaplacian (double [3], double, double, double) const |
Calculates the Laplacian of the FFD at a point in lattice coordinates. | |
void | EvaluateLaplacian (double &, double &, double &) const |
Calculates the Laplacian of the FFD at a point in lattice coordinates. | |
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. | |
virtual int | GetTAfterSubdivision () const |
Number of control points in t after subdivision. | |
virtual double | GetTSpacingAfterSubdivision () const |
Control point spacing in t after subdivision. | |
virtual int | GetXAfterSubdivision () const |
Number of control points in x after subdivision. | |
virtual double | GetXSpacingAfterSubdivision () const |
Control point spacing in x after subdivision. | |
virtual int | GetYAfterSubdivision () const |
Number of control points in y after subdivision. | |
virtual double | GetYSpacingAfterSubdivision () const |
Control point spacing in y after subdivision. | |
virtual int | GetZAfterSubdivision () const |
Number of control points in z after subdivision. | |
virtual double | GetZSpacingAfterSubdivision () const |
Control point spacing in z after subdivision. | |
virtual void | Interpolate (const double *, const double *, const double *=NULL) |
virtual void | JacobianDOFs (double [3], int, int, int, double, double, double) const |
Calculates the Jacobian of the transformation w.r.t. the parameters of a control point. | |
virtual int | KernelSize () const |
Size of support region of the used kernel. | |
virtual void | LocalHessian (Matrix [3], double, double, double, double=0, 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=0, double=NaN) const |
Calculates the Jacobian of the local transformation w.r.t world coordinates. | |
virtual void | LocalTransform (double &, double &, double &, double=0, double=NaN) const |
Transforms a single point using the local transformation component only. | |
virtual ParameterList | Parameter () const |
Get (non-DoF) parameters as key/value as string map. | |
virtual void | ParametricGradient (const GenericImage< double > *, double *, const WorldCoordsImage *, const WorldCoordsImage *, double=NaN, double=1) const |
to a gradient w.r.t the parameters of this transformation More... | |
virtual void | Print (ostream &, Indent=0) const |
Prints the parameters of the transformation. | |
virtual bool | Set (const char *, const char *) |
Set named (non-DoF) parameter from value as string. | |
virtual void | Subdivide (bool=true, bool=true, bool=true, bool=true) |
Subdivide FFD lattice. | |
virtual | ~BSplineFreeFormTransformation3D () |
Destructor. | |
Public Member Functions inherited from mirtk::FreeFormTransformation3D | |
void | BoundingBoxCP (int cp, Point &, Point &, double=1) const |
void | BoundingBoxImage (const BaseImage *, int, int &, int &, int &, int &, int &, int &, double=1) const |
void | GetStatusCP (int, int, int, DOFStatus &, DOFStatus &, DOFStatus &) const |
virtual void | Initialize (const ImageAttributes &) |
Initialize free-form transformation. | |
virtual void | JacobianDOFs (Matrix &, int, int, int, double, double, double) const |
Calculates the Jacobian of the transformation w.r.t a control point. | |
virtual void | JacobianDOFs (Matrix &, int, double, double, double, double=0, 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=0, double=NaN) const |
Calculates the Jacobian of the transformation w.r.t a transformation parameter. | |
void | MultiBoundingBoxImage (const BaseImage *, int, int &, int &, int &, int &, int &, int &, double=1) const |
virtual void | ParametricGradient (const PointSet &, const Vector3D< double > *, double *, double=0, double=NaN, double=1) const |
void | PutStatusCP (int, int, int, DOFStatus, DOFStatus, DOFStatus) |
virtual | ~FreeFormTransformation3D () |
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 ImageAttributes & | Attributes () 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) | |
virtual void | BoundingBox (int, double &, double &, double=1) const |
virtual void | BoundingBox (int, double &, double &, double &, double &, double &, double &, double &, double &, double=1) const |
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 CPExtrapolator * | Extrapolator () const |
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 |
virtual void | JacobianDOFs (TransformationJacobian &, double, double, double, double=0, double=NaN) const |
Calculates the Jacobian of the transformation w.r.t the transformation parameters. | |
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. | |
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. | |
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 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 |
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 Cifstream & | Read (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 Cofstream & | Write (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 Member Functions | |
mirtkPublicAttributeMacro (ParametricGradientType, ParametricGradientCalculation) | |
Whether to compute parametric gradient using cubic B-spline convolution. | |
Protected Member Functions inherited from mirtk::FreeFormTransformation3D | |
FreeFormTransformation3D (CPInterpolator &, CPInterpolator *=NULL) | |
Default constructor. | |
FreeFormTransformation3D (const FreeFormTransformation3D &, CPInterpolator &, CPInterpolator *=NULL) | |
Copy Constructor. | |
virtual Cifstream & | ReadDOFs (Cifstream &, TransformationType) |
Reads transformation parameters from a file stream. | |
virtual Cofstream & | WriteDOFs (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. | |
Cofstream & | WriteCPs (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. | |
Observable & | operator= (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 | |
Interpolator | _FFD |
Interpolates control point values at arbitrary lattice locations. | |
Interpolator2D | _FFD2D |
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 | |
Static Public Member Functions inherited from mirtk::FreeFormTransformation3D | |
static ImageAttributes | DefaultAttributes (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::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 Transformation * | New (TransformationType) |
static Transformation * | New (const Transformation *) |
static Transformation * | New (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. | |
Static Protected Member Functions inherited from mirtk::Object | |
template<typename... Args> | |
static void | ThrowStatic (ErrorType err, const char *cls, const char *func, Args... args) |
Class for free-form transformations based on tensor product B-splines.
This class implements 3D 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 BSplineFreeFormTransformation3D.h.
Options for parametric gradient calculation.
Definition at line 57 of file BSplineFreeFormTransformation3D.h.
void mirtk::BSplineFreeFormTransformation3D::AddApproximateSplineCoefficients | ( | const double * | , |
const double * | , | ||
const double * | , | ||
const double * | , | ||
const double * | , | ||
const double * | , | ||
int | , | ||
double * | , | ||
double | = 1. , |
||
bool | = false |
||
) | const |
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. These parameters are added to the given coefficients using specified weight.
|
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::BSplineFreeFormTransformationSV, and mirtk::BSplineFreeFormTransformationStatistical.
|
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::BSplineFreeFormTransformationSV, and mirtk::BSplineFreeFormTransformationStatistical.
|
virtual |
Approximates and adds the gradient of the bending energy on the control point lattice w.r.t the transformation parameters using the given weight
Reimplemented from mirtk::FreeFormTransformation.
Reimplemented in mirtk::BSplineFreeFormTransformationStatistical.
|
virtual |
Returns the bounding box for a control point (in mm). 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.
|
virtual |
Whether this transformation implements a more efficient update of a given displacement field given the desired change of a transformation parameter
Reimplemented from mirtk::Transformation.
|
virtual |
Updates the displacement vectors for a whole image domain
[in] | dof | Transformation parameter. |
[in] | dv | Change of transformation parameter value. |
[in,out] | dx | Displacement field to be updated. |
[in] | t | Time point of start point. |
[in] | t0 | Time point of end point. |
[in] | i2w | Pre-computed world coordinates. |
Reimplemented from mirtk::Transformation.
|
inline |
Calculates the derivative of the Jacobian of the FFD at a point in lattice coordinates w.r.t a transformation parameter
Definition at line 541 of file BSplineFreeFormTransformation3D.h.
|
inline |
Calculates the derivative of the Jacobian of the FFD at a point in lattice coordinates w.r.t a transformation parameter
Definition at line 558 of file BSplineFreeFormTransformation3D.h.
void mirtk::BSplineFreeFormTransformation3D::EvaluateJacobianDetDerivative | ( | double | dJ[3], |
const Matrix & | adj, | ||
double | a, | ||
double | b, | ||
double | c, | ||
bool | wrt_world = true , |
||
bool | use_spacing = true |
||
) | const |
Calculate derivatives of Jacobian determinant w.r.t. DoFs of control point
[out] | dJ | Partial derivatives of Jacobian determinant w.r.t. DoFs of control point. |
[in] | adj | Adjugate of Jacobian matrix evaluated at (x, y, z). |
[in] | a | Distance from control point along x axis of lattice in lattice units. |
[in] | b | Distance from control point along y axis of lattice in lattice units. |
[in] | c | Distance from control point along z axis of lattice in lattice units. |
[in] | wrt_world | Whether derivatives are computed w.r.t. world coordinate system. |
[in] | use_spacing | Whether to use grid spacing when wrt_world is true . |
void mirtk::BSplineFreeFormTransformation3D::EvaluateJacobianDetDerivative | ( | double | dJ[3], |
const Matrix & | adj, | ||
int | a, | ||
int | b, | ||
int | c, | ||
bool | wrt_world = true , |
||
bool | use_spacing = true |
||
) | const |
Calculate derivatives of Jacobian determinant w.r.t. DoFs of control point
[out] | dJ | Partial derivatives of Jacobian determinant w.r.t. DoFs of control point. |
[in] | adj | Adjugate of Jacobian matrix evaluated at (x, y, z). |
[in] | a | Distance from control point along x axis of lattice in lattice units. |
[in] | b | Distance from control point along y axis of lattice in lattice units. |
[in] | c | Distance from control point along z axis of lattice in lattice units. |
[in] | wrt_world | Whether derivatives are computed w.r.t. world coordinate system. |
[in] | use_spacing | Whether to use grid spacing when wrt_world is true . |
|
inline |
Calculate derivatives of Jacobian determinant w.r.t. DoFs of control point
[out] | dJ | Partial derivatives of Jacobian determinant w.r.t. DoFs of control point. |
[in] | adj | Adjugate of Jacobian matrix evaluated at (x, y, z). |
[in] | i | Index of control point along x axis of lattice. |
[in] | j | Index of control point along y axis of lattice. |
[in] | k | Index of control point along z axis of lattice. |
[in] | x | Point coordinate along x axis of lattice in lattice units. |
[in] | y | Point coordinate along y axis of lattice in lattice units. |
[in] | z | Point coordinate along z axis of lattice in lattice units. |
[in] | wrt_world | Whether derivatives are computed w.r.t. world coordinate system. |
[in] | use_spacing | Whether to use grid spacing when wrt_world is true . |
Definition at line 653 of file BSplineFreeFormTransformation3D.h.
|
inline |
Calculate derivatives of Jacobian determinant w.r.t. DoFs of control point
[out] | dJ | Partial derivatives of Jacobian determinant w.r.t. DoFs of control point. |
[in] | adj | Adjugate of Jacobian matrix evaluated at (x, y, z). |
[in] | cp | Linear index of control point. |
[in] | x | Point coordinate along x axis of lattice in lattice units. |
[in] | y | Point coordinate along y axis of lattice in lattice units. |
[in] | z | Point coordinate along z axis of lattice in lattice units. |
[in] | wrt_world | Whether derivatives are computed w.r.t. world coordinate system. |
[in] | use_spacing | Whether to use grid spacing when wrt_world is true . |
Definition at line 662 of file BSplineFreeFormTransformation3D.h.
|
inline |
Calculates the Jacobian of the FFD at a point in lattice coordinates w.r.t the control point with lattice coordinates (i, j)
Definition at line 516 of file BSplineFreeFormTransformation3D.h.
|
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)
Definition at line 523 of file BSplineFreeFormTransformation3D.h.
|
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)
Definition at line 533 of file BSplineFreeFormTransformation3D.h.
|
inline |
Calculates the 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 496 of file BSplineFreeFormTransformation3D.h.
|
inline |
Calculates the 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 506 of file BSplineFreeFormTransformation3D.h.
|
inlinevirtual |
Calculates derivatives of the Jacobian determinant of spline function w.r.t. DoFs of a control point
This function is identical to JacobianDetDerivative when the DoFs of the control points are displacements. When the DoFs are velocities, however, this function computes the derivatives of the Jacobian determinant of the velocity field instead.
[out] | dJ | Partial derivatives of Jacobian determinant at (x, y, z) w.r.t. DoFs of control point. |
[in] | cp | Index of control point w.r.t. whose DoFs the derivatives are computed. |
[in] | x | World coordinate along x axis at which to evaluate derivatives. |
[in] | y | World coordinate along y axis at which to evaluate derivatives. |
[in] | z | World coordinate along z axis at which to evaluate derivatives. |
[in] | adj | Adjugate of Jacobian matrix evaluated at (x, y, z). |
[in] | wrt_world | Whether derivatives are computed w.r.t. world coordinate system. |
[in] | use_spacing | Whether to use grid spacing when wrt_world is true . |
Reimplemented from mirtk::FreeFormTransformation.
Definition at line 673 of file BSplineFreeFormTransformation3D.h.
|
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::BSplineFreeFormTransformationSV, and mirtk::BSplineFreeFormTransformationStatistical.
|
virtual |
to a gradient w.r.t the parameters of this transformation
Applies the chain rule to convert spatial non-parametric gradient
Reimplemented from mirtk::FreeFormTransformation3D.
Reimplemented in mirtk::BSplineFreeFormTransformationSV, and mirtk::BSplineFreeFormTransformationStatistical.
|
protected |
Interpolates control point values at arbitrary 2D lattice locations
Definition at line 80 of file BSplineFreeFormTransformation3D.h.