![]() |
aimsalgo
5.1.2
Neuroimaging image processing
|
FFD vector field deformation transform. More...
#include <aims/registration/ffd.h>
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) | |
SplineFfd & | operator= (const SplineFfd &other) |
virtual void | updateDimensions () |
Point3dd | deformation (const Point3dd &p_mm) const |
double | spline3 (double x) const |
![]() | |
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) | |
FfdTransformation & | operator= (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 |
![]() | |
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< Transformation3d > | getInverse () const |
![]() | |
virtual | ~Transformation () |
carto::Object | header () |
const carto::Object | header () const |
void | setHeader (carto::Object ph) |
![]() | |
RCObject () | |
RCObject (const RCObject &) | |
RCObject & | operator= (const RCObject &) |
virtual | ~RCObject () |
Additional Inherited Members | |
![]() | |
typedef int | RefCounterType |
![]() | |
Point3dd | splineVoxToMm (const Point3dd &p) const |
Point3dd | mmToSplineVox (const Point3dd &p) const |
void | updateGridResolution (const carto::rc_ptr< carto::Volume< Point3df > > &newGrid) |
![]() | |
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 |
![]() | |
Transformation () | |
![]() | |
carto::VolumeRef< Point3df > | _ctrlPointDelta |
int | _dimx |
int | _dimy |
int | _dimz |
float | _vsx |
float | _vsy |
float | _vsz |
bool | _flatx |
bool | _flaty |
bool | _flatz |
![]() | |
carto::Object | _header |
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".
aims::SplineFfd::SplineFfd | ( | int | dimX = 0 , |
int | dimY = 1 , |
||
int | dimZ = 1 , |
||
float | sizeX = 1. , |
||
float | sizeY = 1. , |
||
float | sizeZ = 1. |
||
) |
|
inline |
|
inline |
aims::SplineFfd::SplineFfd | ( | const SplineFfd & | other | ) |
aims::SplineFfd::SplineFfd | ( | const carto::rc_ptr< carto::Volume< Point3df > > & | other | ) |
|
virtual |
Reimplemented from aims::FfdTransformation.