B-spline-based local deformation. More...
#include <cmtkSplineWarpXform.h>


Classes | |
| struct | JacobianConstraintThreadInfo |
| Thread parameter block for volume resampling. More... | |
Public Types | |
| typedef SplineWarpXform | Self |
| This class. | |
| typedef WarpXform | Superclass |
| Parent class. | |
| typedef SmartPointer< Self > | SmartPtr |
| Smart pointer to SplineWarpXform. | |
| typedef SmartConstPointer< Self > | SmartConstPtr |
| Smart pointer to const SplineWarpXform. | |
Public Member Functions | |
| SplineWarpXform () | |
| Construct empty new warp. | |
| SplineWarpXform (const FixedVector< 3, Types::Coordinate > &domain, const Types::Coordinate delta, const AffineXform *initialXform=NULL, const bool exactDelta=false) | |
| Construct new warp from volume size and control grid density. | |
| void | Init (const Self::SpaceVectorType &domain, const Types::Coordinate delta, const AffineXform *initialXform=NULL, const bool exactDelta=false) |
| Initialize warp from volume size and control grid density. | |
| SplineWarpXform (const FixedVector< 3, Types::Coordinate > &domain, const Self::IndexType &dims, CoordinateVector::SmartPtr ¶meters, const AffineXform *initialXform=NULL) | |
| Construct new warp from volume size, grid dimensions and parameters. | |
| Self::SmartPtr | Clone () const |
| Clone and return smart pointer. | |
| void | InitControlPoints (const AffineXform *affineXform=NULL) |
| Initialize control point positions, potentially with affine displacement. | |
| virtual void | Update (const bool exactDelta=false) |
| Update internal representation. | |
| virtual SplineWarpXform * | MakeInverse () const |
| Create inverse transformation. | |
| virtual void | Refine () |
| Refine control point grid by a factor of two, but maintain transformation exactly. | |
| virtual Types::Coordinate | GetGridEnergy () const |
| Return grid bending energy. | |
| virtual Types::Coordinate | GetGridEnergy (const Types::Coordinate *cp) const |
| Return grid bending energy at one control point. | |
| virtual Types::Coordinate | GetGridEnergy (const Self::SpaceVectorType &v) const |
| Return grid bending energy at arbitrary location. | |
| virtual void | GetGridEnergyDerivative (double &lower, double &upper, const int param, const Types::Coordinate step) const |
| Return derivative of grid energy with respect to one parameter. | |
| virtual Types::Coordinate | GetJacobianDeterminant (const Self::SpaceVectorType &v) const |
| Compute Jacobian determinant at a certain location. | |
| virtual Types::Coordinate | GetJacobianDeterminant (const int x, const int y, const int z) const |
| Compute Jacobian determinant at a certain reference image pixel. | |
| virtual void | GetJacobianDeterminantRow (double *const values, const int x, const int y, const int z, const size_t numberOfPoints=1) const |
| Compute sequence of Jacobian determinants from given grid location. | |
| Types::Coordinate | JacobianDeterminant (const Types::Coordinate *cp) const |
| Compute Jacobian determinant at a certain control point. | |
| virtual Types::Coordinate | GetJacobianConstraint () const |
| Return Jacobian constraint of the current transformation grid. | |
| virtual Types::Coordinate | GetJacobianFoldingConstraint () const |
| Return Jacobian folding constraint of the current transformation grid. | |
| virtual void | RelaxToUnfold () |
| Relax the deformation to unfold areas with negative Jacobian at the current image sampling. | |
| virtual Types::Coordinate | GetRigidityConstraint () const |
| Return rigidity constraint of the current transformation grid. | |
| virtual Types::Coordinate | GetRigidityConstraint (const DataGrid *weightMap) const |
| Return rigidity constraint of the current transformation grid with local weights. | |
| virtual Types::Coordinate | GetJacobianConstraintSparse () const |
| Return sparse Jacobian constraint of the current transformation grid. | |
| virtual Types::Coordinate | GetRigidityConstraintSparse () const |
| Return sparse rigidity constraint of the current transformation grid. | |
| virtual void | GetJacobianConstraintDerivative (double &lower, double &upper, const int param, const UniformVolume::RegionType &, const Types::Coordinate step) const |
| Return derivative of Jacobian constraint with respect to one parameter. | |
| virtual void | GetJacobianFoldingConstraintDerivative (double &lower, double &upper, const int param, const UniformVolume::RegionType &, const Types::Coordinate step) const |
| Return derivative of Jacobian constraint with respect to one parameter. | |
| virtual void | GetJacobianConstraintDerivative (double &lower, double &upper, const int param, const Types::Coordinate step) const |
| Return derivative of Jacobian constraint with respect to one parameter. | |
| virtual void | GetRigidityConstraintDerivative (double &lower, double &upper, const int param, const UniformVolume::RegionType &, const Types::Coordinate step) const |
| Return derivative of rigidity constraint with respect to one parameter. | |
| virtual void | GetRigidityConstraintDerivative (double &lower, double &upper, const int param, const UniformVolume::RegionType &, const Types::Coordinate step, const DataGrid *weightMap) const |
| Return derivative of rigidity constraint with respect to one parameter. | |
| virtual void | GetRigidityConstraintDerivative (double &lower, double &upper, const int param, const Types::Coordinate step) const |
| Return derivative of rigidity constraint with respect to one parameter. | |
| virtual Types::Coordinate | GetInverseConsistencyError (const WarpXform *inverse, const UniformVolume *volume, const UniformVolume::RegionType *voi=NULL) const |
| Return inverse consistency. | |
| virtual bool | ApplyInverse (const Self::SpaceVectorType &v, Self::SpaceVectorType &u, const Types::Coordinate accuracy=0.01) const |
| Return origin of warped vector. | |
| virtual bool | ApplyInverseInPlace (Self::SpaceVectorType &v, const Types::Coordinate accuracy=0.01) const |
| Return origin of warped vector. | |
| virtual bool | ApplyInverseInPlaceWithInitial (Self::SpaceVectorType &v, const Self::SpaceVectorType &initial, const Types::Coordinate accuracy=0.01) const |
| Return origin of warped vector. | |
| virtual void | ApplyInPlace (Self::SpaceVectorType &v) const |
| Replace existing vector with transformed location. | |
| virtual void | GetVolumeOfInfluence (const size_t idx, const Self::SpaceVectorType &, const Self::SpaceVectorType &, Self::SpaceVectorType &, Self::SpaceVectorType &, const int=-1) const |
| Get volume influenced by one parameter. | |
| void | RegisterVolume (const UniformVolume *volume) |
| Register the grid points of the deformed uniform or non-uniform volume. | |
| void | UnRegisterVolume () |
| Unegister axes points, ie free all internal data structures. | |
| void | GetTransformedGrid (Self::SpaceVectorType &v, const int idxX, const int idxY, const int idxZ) const |
| Get a grid point from the deformed grid. | |
| void | GetTransformedGridRow (const int numPoints, Self::SpaceVectorType *const v, const int idxX, const int idxY, const int idxZ) const |
| Get a sequence of grid points from the deformed grid. | |
| virtual Types::Coordinate | GetParamStep (const size_t idx, const Self::SpaceVectorType &volSize, const Types::Coordinate mmStep=1) const |
| Get parameter stepping. | |
| virtual Self::SpaceVectorType & | GetDeformedControlPointPosition (Self::SpaceVectorType &, const int, const int, const int) const |
| Get the deformed position of a transformation control point. | |
| Types::Coordinate * | GetPureDeformation (const bool includeScale=false) const |
| Return array of pre deformation vectors. | |
| virtual CoordinateMatrix3x3 | GetJacobian (const Self::SpaceVectorType &v) const |
| Get local Jacobian. | |
| virtual void | GetJacobian (const Self::SpaceVectorType &v, CoordinateMatrix3x3 &J) const |
| Get local Jacobian into existing matrix. | |
| virtual void | GetJacobianAtControlPoint (const Types::Coordinate *cp, CoordinateMatrix3x3 &J) const |
| Get local Jacobian at control point into existing matrix. | |
| virtual void | GetJacobianRow (CoordinateMatrix3x3 *const array, const int x, const int y, const int z, const size_t numberOfPoints) const |
| Get sequence of Jacobians for pixel row. | |
Protected Member Functions | |
| virtual SplineWarpXform * | CloneVirtual () const |
| Clone transformation. | |
| void | Init () |
| Initialize internal data structures. | |
| void | FindClosestControlPoint (const Self::SpaceVectorType &v, Self::SpaceVectorType &cp) const |
| Find nearest (after deformation) control point. | |
Static Protected Member Functions | |
| static void | GetJacobianConstraintThread (void *const args, const size_t taskIdx, const size_t taskCnt, const size_t, const size_t) |
| Thread function for SMP Jacobian constraint computation. | |
| static void | GetJacobianFoldingConstraintThread (void *const args, const size_t taskIdx, const size_t taskCnt, const size_t, const size_t) |
| Thread function for SMP Jacobian folding constraint computation. | |
Protected Attributes | |
| DataGrid::IndexType | VolumeDims |
| Dimensions of the volume image linked to this transformation. | |
| int | GridPointOffset [48] |
| Relative offsets of all control points in a 4 x 4 x 4 neighborhood. | |
Precomputed grid indices. | |
These arrays hold the precomputed grid indices of the deformed grid's voxels with respect to the control point grid of this deformation. | |
| std::vector< int > | gX |
| x-axis. | |
| std::vector< int > | gY |
| y-axis. | |
| std::vector< int > | gZ |
| z-axis. | |
Precomputed spline coefficients. | |
These arrays hold the precomputed spline coefficients for deforming the voxel locations in the associated deformed grid. | |
| std::vector< Types::Coordinate > | splineX |
| x-axis. | |
| std::vector< Types::Coordinate > | splineY |
| y-axis. | |
| std::vector< Types::Coordinate > | splineZ |
| z-axis. | |
Precomputed derivative spline coefficients. | |
These arrays hold the precomputed derivatives of the spline coefficients. This allows for rapid evaluation of the Jacobian determinant. | |
| std::vector< Types::Coordinate > | dsplineX |
| x-axis. | |
| std::vector< Types::Coordinate > | dsplineY |
| y-axis. | |
| std::vector< Types::Coordinate > | dsplineZ |
| z-axis. | |
Private Member Functions | |
| void | RegisterVolumePoints (const DataGrid::IndexType &, const Self::SpaceVectorType &) |
| Register axes points of the volume to be deformed. | |
| void | RegisterVolumePoints (const DataGrid::IndexType &, const Self::SpaceVectorType &, const Self::SpaceVectorType &) |
| Register axes points of the volume to be deformed. | |
| void | RegisterVolumeAxis (const DataGrid::IndexType::ValueType, const Types::Coordinate delta, const Types::Coordinate origin, const int, const Types::Coordinate, std::vector< int > &g, std::vector< Types::Coordinate > &spline, std::vector< Types::Coordinate > &dspline) |
| Register a single axis of the uniform volume to be deformed. | |
| Types::Coordinate | GetRigidityConstraint (const CoordinateMatrix3x3 &J) const |
| Return rigidity constraint based on given Jacobian matrix. | |
Friends | |
| class | SplineWarpXformUniformVolume |
| Friend declaration. | |
B-spline-based local deformation.
Definition at line 59 of file cmtkSplineWarpXform.h.
This class.
Reimplemented from cmtk::WarpXform.
Definition at line 65 of file cmtkSplineWarpXform.h.
1.7.2