![]() |
aimsalgo
5.0.5
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 AimsData< 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 AimsData< 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 AimsData< 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 AimsData< Point3df > &other) | |
FfdTransformation & | operator= (const FfdTransformation &other) |
operator const AimsData< Point3df > & () const | |
operator AimsData< Point3df > & () | |
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 AimsData< Point3df > &newCtrlKnotGrid) |
void | updateAllCtrlKnotFromDeformation (const AimsData< 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 () |
![]() | |
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 AimsData< 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 () | |
![]() | |
AimsData< Point3df > | _ctrlPointDelta |
int | _dimx |
int | _dimy |
int | _dimz |
float | _vsx |
float | _vsy |
float | _vsz |
bool | _flatx |
bool | _flaty |
bool | _flatz |
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 AimsData<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 | ) |
|
inline |
Definition at line 242 of file ffd.h.
References aims::FfdTransformation::_deformation(), and soma::Transformation3d::transformDouble().
|
virtual |
Reimplemented from aims::FfdTransformation.