aimsalgo  5.1.2
Neuroimaging image processing
aims::SplineFfd Class Reference

FFD vector field deformation transform. More...

#include <aims/registration/ffd.h>

Inheritance diagram for aims::SplineFfd:
Collaboration diagram for aims::SplineFfd:

Public Member Functions

 SplineFfd (int dimX=0, int dimY=1, int dimZ=1, float sizeX=1., float sizeY=1., float sizeZ=1.)
 
template<typename T >
 SplineFfd (int dimX, int dimY, int dimZ, const carto::rc_ptr< carto::Volume< T > > &test_volume)
 
template<typename T >
 SplineFfd (int dimX, int dimY, int dimZ, const carto::Volume< T > &test_volume)
 
 SplineFfd (const SplineFfd &other)
 
 SplineFfd (const carto::rc_ptr< carto::Volume< Point3df > > &other)
 
SplineFfdoperator= (const SplineFfd &other)
 
virtual void updateDimensions ()
 
Point3dd deformation (const Point3dd &p_mm) const
 
double spline3 (double x) const
 
- Public Member Functions inherited from aims::FfdTransformation
 FfdTransformation (int dimX=0, int dimY=1, int dimZ=1, float sizeX=1., float sizeY=1., float sizeZ=1.)
 
template<typename T >
 FfdTransformation (int dimX, int dimY, int dimZ, const carto::rc_ptr< carto::Volume< T > > &test_volume)
 
template<typename T >
 FfdTransformation (int dimX, int dimY, int dimZ, const carto::Volume< T > &test_volume)
 
 FfdTransformation (const FfdTransformation &other)
 
 FfdTransformation (const carto::rc_ptr< carto::Volume< Point3df > > &other)
 
FfdTransformationoperator= (const FfdTransformation &other)
 
 operator const carto::VolumeRef< Point3df > & () const
 
 operator carto::VolumeRef< Point3df > & ()
 
 operator const carto::rc_ptr< carto::Volume< Point3df > > & () const
 
 operator carto::rc_ptr< carto::Volume< Point3df > > & ()
 
carto::rc_ptr< carto::Volume< Point3df > > & ctrlDeformations ()
 
bool isIdentity () const CARTO_OVERRIDE
 Always false, because testing for identity is expensive. More...
 
Point3df getCtrlKnot (int nx, int ny, int nz) const
 
void updateCtrlKnot (int nx, int ny, int nz, const Point3df &newCtrlKnot)
 
void updateAllCtrlKnot (const carto::rc_ptr< carto::Volume< Point3df > > &newCtrlKnotGrid)
 
void updateAllCtrlKnotFromDeformation (const carto::rc_ptr< carto::Volume< Point3df > > &newDeformationGrid)
 
void increaseResolution (const Point3d &addKnots)
 
Point3dd deformation (const Point3dd &p_mm) const
 
Point3dd ffdCoord (const Point3dd &p_mm) const
 
int dimX () const
 
int dimY () const
 
int dimZ () const
 
int getSizeX () const
 
int getSizeY () const
 
int getSizeZ () const
 
std::vector< int > getSize () const
 
float sizeX () const
 
float sizeY () const
 
float sizeZ () const
 
std::vector< float > getVoxelSize () const
 
bool isFlat (int i) const
 
bool isXFlat () const
 
bool isYFlat () const
 
bool isZFlat () const
 
void printControlPointsGrid () const
 
void writeDebugCtrlKnots (const std::string &filename) const
 
void writeDebugDeformations (const std::string &filename, int dimX, int dimY, int dimZ, float sizeX, float sizeY, float sizeZ) const
 
void write (const std::string &filename) const
 
- Public Member Functions inherited from soma::Transformation3d
virtual ~Transformation3d ()
 
Point3dd transform (double x, double y, double z) const
 
Point3dd transform (const Point3dd &pos) const
 
Point3df transform (const Point3df &dir) const
 
Point3df transform (float x, float y, float z) const
 
Point3d transform (const Point3d &p) const
 
virtual bool invertible () const
 
virtual std::unique_ptr< Transformation3dgetInverse () const
 
- Public Member Functions inherited from soma::Transformation
virtual ~Transformation ()
 
carto::Object header ()
 
const carto::Object header () const
 
void setHeader (carto::Object ph)
 
- Public Member Functions inherited from carto::RCObject
 RCObject ()
 
 RCObject (const RCObject &)
 
RCObjectoperator= (const RCObject &)
 
virtual ~RCObject ()
 

Additional Inherited Members

- Public Types inherited from carto::RCObject
typedef int RefCounterType
 
- Protected Member Functions inherited from aims::FfdTransformation
Point3dd splineVoxToMm (const Point3dd &p) const
 
Point3dd mmToSplineVox (const Point3dd &p) const
 
void updateGridResolution (const carto::rc_ptr< carto::Volume< Point3df > > &newGrid)
 
- Protected Member Functions inherited from soma::Transformation3d
 Transformation3d ()
 
virtual Point3dd transformPoint3dd (const Point3dd &pos) const
 
virtual Point3df transformPoint3df (const Point3df &dir) const
 
virtual Point3d transformPoint3d (const Point3d &p) const
 
virtual Point3df transformFloat (float x, float y, float z) const
 
- Protected Member Functions inherited from soma::Transformation
 Transformation ()
 
- Protected Attributes inherited from aims::FfdTransformation
carto::VolumeRef< Point3df_ctrlPointDelta
 
int _dimx
 
int _dimy
 
int _dimz
 
float _vsx
 
float _vsy
 
float _vsz
 
bool _flatx
 
bool _flaty
 
bool _flatz
 
- Protected Attributes inherited from soma::Transformation
carto::Object _header
 

Detailed Description

FFD vector field deformation transform.

Free Form Deformation is the registration technique used to build the vector fields. This class is dedicated to the application of the vector field deformation to transform coordinates.

Vector fields are stored in volumes VolumeRef<Point3df>.

This Spline FFD uses cubic spline interpolation between displacement vectors to process transformed coordinates. See TrilinearFfd for a variant using trilinear interpolation.

This class is the "base" vector field deformation class, which can perform point-to-point transformation. It is used by various higher-level classes or functions to work on higher-level objects:

To resample full 2D or 3D images, see the Resampler class and its derived classes (see also ResamplerFactory).

As a Transformation3d specialization, the main method of this class is the transform() method, which actually performs 3D coordinates transformation. The other methods can be seen as "internal machinery".

See also
transformMesh, transformBucket, transformGraph and BundleTransformer to apply vector field deformations to various types of objects.

Definition at line 224 of file ffd.h.

Constructor & Destructor Documentation

◆ SplineFfd() [1/5]

aims::SplineFfd::SplineFfd ( int  dimX = 0,
int  dimY = 1,
int  dimZ = 1,
float  sizeX = 1.,
float  sizeY = 1.,
float  sizeZ = 1. 
)

◆ SplineFfd() [2/5]

template<typename T >
aims::SplineFfd::SplineFfd ( int  dimX,
int  dimY,
int  dimZ,
const carto::rc_ptr< carto::Volume< T > > &  test_volume 
)
inline

Definition at line 263 of file ffd.h.

◆ SplineFfd() [3/5]

template<typename T >
aims::SplineFfd::SplineFfd ( int  dimX,
int  dimY,
int  dimZ,
const carto::Volume< T > &  test_volume 
)
inline

Definition at line 272 of file ffd.h.

◆ SplineFfd() [4/5]

aims::SplineFfd::SplineFfd ( const SplineFfd other)

◆ SplineFfd() [5/5]

aims::SplineFfd::SplineFfd ( const carto::rc_ptr< carto::Volume< Point3df > > &  other)

Member Function Documentation

◆ deformation()

Point3dd aims::SplineFfd::deformation ( const Point3dd p_mm) const

◆ operator=()

SplineFfd& aims::SplineFfd::operator= ( const SplineFfd other)

◆ spline3()

double aims::SplineFfd::spline3 ( double  x) const
inline

Definition at line 244 of file ffd.h.

◆ updateDimensions()

virtual void aims::SplineFfd::updateDimensions ( )
virtual

Reimplemented from aims::FfdTransformation.


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