Classes | Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | Static Private Member Functions | Friends

cmtk::GroupwiseRegistrationFunctionalXformTemplate< SplineWarpXform > Class Template Reference

Template specialization for groupwise nonrigid registration functionals. More...

#include <cmtkGroupwiseRegistrationFunctionalXformTemplate_SplineWarp.h>

Inheritance diagram for cmtk::GroupwiseRegistrationFunctionalXformTemplate< SplineWarpXform >:
Inheritance graph
[legend]
Collaboration diagram for cmtk::GroupwiseRegistrationFunctionalXformTemplate< SplineWarpXform >:
Collaboration graph
[legend]

List of all members.

Classes

class  InterpolateImageThreadParameters
 Thread function parameters for image interpolation. More...

Public Types

typedef
GroupwiseRegistrationFunctionalXformTemplateBase
< SplineWarpXform
Superclass
 Type of this class.
typedef
GroupwiseRegistrationFunctionalXformTemplate
< SplineWarpXform
Self
 Type of this class.
typedef SmartPointer< SelfSmartPtr
 Smart pointer.

Public Member Functions

 GroupwiseRegistrationFunctionalXformTemplate ()
 Constructor.
virtual ~GroupwiseRegistrationFunctionalXformTemplate ()
 Destructor.
virtual void InitializeXformsFromAffine (const Types::Coordinate gridSpacing, std::vector< AffineXform::SmartPtr > initialAffineXformsVector, const bool exactSpacing=true)
virtual void InitializeXforms (const Types::Coordinate gridSpacing, const bool exactSpacing=true)
 Initialize spline warp transformations.
virtual void RefineTransformationGrids ()
 Refine transformation control point grids.
void SetForceZeroSumNoAffine (const bool noaffine=true)
 Set flag for exclusion of affine components in unbiased groupwise deformation.
void SetPartialGradientMode (const bool partialGradientMode=false, const float partialGradientThreshold=0.0)
 Set partial gradient mode.
void SetDeactivateUninformativeMode (const bool dum=true)
 Set deactivate uninformative control points mode.
virtual void SetActiveXformsFromTo (const size_t from, const size_t to)
 Set range of currently active transformations.
virtual void SetTemplateGrid (UniformVolume::SmartPtr &templateGrid, const int downsample=1, const bool useTemplateData=false)
 Call inherited function and allocate local storage.

Protected Member Functions

virtual void UpdateVolumesOfInfluence ()
 Update volumes of influence for warp parameters.
virtual void UpdateActiveControlPoints ()=0
 Update deactivated control points.
virtual void InterpolateImage (const size_t idx, byte *const destination)
 Interpolate given moving image to template.
virtual void ForceZeroSumGradient (CoordinateVector &g) const
 Enforce gradient to be zero-sum over all images.
bool Wiggle ()
 "Wiggle" functional a little, i.e., by updating probabilistic sampling.
virtual bool UpdateParamStepArray ()
 Update parameter steppings for the warp parameters.

Protected Attributes

size_t m_MaximumNumberOfPixelsVOI
 Maximum number of pixels in any VOI.
size_t m_MaximumNumberOfPixelsPerLineVOI
 Maximum number of pixels per line in any VOI.
bool m_ForceZeroSumNoAffine
 Flag for correction of affine components in unbiased warp.
bool m_WarpFastMode
 Flag for fast warp mode, i.e., reduced control point influence volume.
float m_JacobianConstraintWeight
 Weight for jacobian constraint term.
float m_BendingEnergyWeight
 Weight for grid bending energy term.
bool m_PartialGradientMode
 Flag for partial gradient computation.
std::vector
< AffineXform::SmartPtr
m_InitialAffineXformsVector
 Initial affine transformations.
std::vector
< AffineXform::SmartPtr
m_InitialRotationsVector
 Rotation components of initial affine transformations.
std::vector< Types::Coordinatem_ParamStepArray
 Current parameter steppings for the warp parameters.
std::vector< DataGrid::RegionTypem_VolumeOfInfluenceArray
 Volumes of influence for the warp parameters.
Types::Coordinate m_PartialGradientThreshold
 Threshold for partial gradient computation.
bool m_DeactivateUninformativeMode
 Deactivate uninformative control points mode.
std::vector< bool > m_ActiveControlPointFlags
 List of flags for deactivated control points.
size_t m_NumberOfActiveControlPoints
 Number of deactivated control points.

Static Private Member Functions

static void InterpolateImageThread (void *args, const size_t taskIdx, const size_t taskCnt, const size_t, const size_t)
 Image interpolation thread function.

Friends

ClassStreamoperator<< (ClassStream &stream, const GroupwiseRegistrationFunctionalXformTemplate< SplineWarpXform > &func)
ClassStreamoperator>> (ClassStream &stream, GroupwiseRegistrationFunctionalXformTemplate< SplineWarpXform > &func)

Detailed Description

template<>
class cmtk::GroupwiseRegistrationFunctionalXformTemplate< SplineWarpXform >

Template specialization for groupwise nonrigid registration functionals.

This class is the specialization of the generic transformation-dependent functional class template, specialized for nonrigid (B-spline FFD) transformations.

As such, this class provides functionality such as: initialization of FFDs from affine transformations, grid refinement, and deformation constraints.

Definition at line 50 of file cmtkGroupwiseRegistrationFunctionalXformTemplate_SplineWarp.h.


Member Typedef Documentation


Constructor & Destructor Documentation

Constructor.

Definition at line 8 of file cmtkGroupwiseRegistrationFunctionalXformTemplate_SplineWarp.cxx.

Destructor.

Definition at line 68 of file cmtkGroupwiseRegistrationFunctionalXformTemplate_SplineWarp.h.


Member Function Documentation

void cmtk::GroupwiseRegistrationFunctionalXformTemplate< SplineWarpXform >::ForceZeroSumGradient ( CoordinateVector g ) const [protected, virtual]

Enforce gradient to be zero-sum over all images.

This function essentially calls the inherited function of the same name. However, if this->m_ForceZeroSumNoAffine is true, then the initial affine transformations of each warp are eliminated from the gradient prior to calling the inherited function, and they are re-applied afterwards. This way, the unbiased property of the transformation set is made invariant under the affine transformation components.

Reimplemented from cmtk::GroupwiseRegistrationFunctionalBase.

Definition at line 153 of file cmtkGroupwiseRegistrationFunctionalXformTemplate_SplineWarp.cxx.

References cmtk::AffineXform::GetInverse(), and cmtk::AffineXform::RotateScaleShear().

virtual void cmtk::GroupwiseRegistrationFunctionalXformTemplate< SplineWarpXform >::InitializeXforms ( const Types::Coordinate  gridSpacing,
const bool  exactSpacing = true 
) [inline, virtual]

Initialize spline warp transformations.

Parameters:
gridSpacingControl point grid spacing in real-world units
exactSpacingIf set, the control point spacing will be exactly as given in the first parameter

Definition at line 78 of file cmtkGroupwiseRegistrationFunctionalXformTemplate_SplineWarp.h.

void cmtk::GroupwiseRegistrationFunctionalXformTemplate< SplineWarpXform >::InitializeXformsFromAffine ( const Types::Coordinate  gridSpacing,
std::vector< AffineXform::SmartPtr initialAffineXformsVector,
const bool  exactSpacing = true 
) [virtual]
Parameters:
gridSpacingControl point grid spacing in real-world units
initialAffineXformsVectorVector of initial affine coordinate transformations
exactSpacingIf set, the control point spacing will be exactly as given in the first parameter

Reimplemented in cmtk::SplineWarpCongealingFunctional.

Definition at line 43 of file cmtkGroupwiseRegistrationFunctionalXformTemplate_SplineWarp.cxx.

void cmtk::GroupwiseRegistrationFunctionalXformTemplate< SplineWarpXform >::InterpolateImage ( const size_t  idx,
byte *const   destination 
) [protected, virtual]

Interpolate given moving image to template.

This function overrides the interpolation function provided by the base class. It makes use of the fact that affine transformations preserve parallel lines for more efficient computation.

Parameters:
idxIndex of of to reformat to template. This also determines which transformation is used.
destinationThe reformatted pixel data is stored in this array. Sufficient memory (for as many pixels as there are in the template grid) must be allocated there.

Reimplemented from cmtk::GroupwiseRegistrationFunctionalBase.

Definition at line 215 of file cmtkGroupwiseRegistrationFunctionalXformTemplate_SplineWarp.cxx.

References cmtk::ThreadPool::GetNumberOfThreads(), and cmtk::ThreadPool::Run().

void cmtk::GroupwiseRegistrationFunctionalXformTemplate< SplineWarpXform >::InterpolateImageThread ( void *  args,
const size_t  taskIdx,
const size_t  taskCnt,
const   size_t,
const   size_t 
) [static, private]
void cmtk::GroupwiseRegistrationFunctionalXformTemplate< SplineWarpXform >::RefineTransformationGrids (  ) [virtual]

Refine transformation control point grids.

Reimplemented in cmtk::SplineWarpCongealingFunctional.

Definition at line 74 of file cmtkGroupwiseRegistrationFunctionalXformTemplate_SplineWarp.cxx.

References cmtk::SplineWarpXform::RegisterVolume().

virtual void cmtk::GroupwiseRegistrationFunctionalXformTemplate< SplineWarpXform >::SetActiveXformsFromTo ( const size_t  from,
const size_t  to 
) [inline, virtual]

Set range of currently active transformations.

Call inherited function, then update local step size array.

Reimplemented from cmtk::GroupwiseRegistrationFunctionalBase.

Definition at line 110 of file cmtkGroupwiseRegistrationFunctionalXformTemplate_SplineWarp.h.

void cmtk::GroupwiseRegistrationFunctionalXformTemplate< SplineWarpXform >::SetDeactivateUninformativeMode ( const bool  dum = true ) [inline]

Set deactivate uninformative control points mode.

Definition at line 102 of file cmtkGroupwiseRegistrationFunctionalXformTemplate_SplineWarp.h.

void cmtk::GroupwiseRegistrationFunctionalXformTemplate< SplineWarpXform >::SetForceZeroSumNoAffine ( const bool  noaffine = true ) [inline]

Set flag for exclusion of affine components in unbiased groupwise deformation.

Definition at line 89 of file cmtkGroupwiseRegistrationFunctionalXformTemplate_SplineWarp.h.

void cmtk::GroupwiseRegistrationFunctionalXformTemplate< SplineWarpXform >::SetPartialGradientMode ( const bool  partialGradientMode = false,
const float  partialGradientThreshold = 0.0 
) [inline]

Set partial gradient mode.

Definition at line 95 of file cmtkGroupwiseRegistrationFunctionalXformTemplate_SplineWarp.h.

void cmtk::GroupwiseRegistrationFunctionalXformTemplate< SplineWarpXform >::SetTemplateGrid ( UniformVolume::SmartPtr templateGrid,
const int  downsample = 1,
const bool  useTemplateData = false 
) [virtual]
virtual void cmtk::GroupwiseRegistrationFunctionalXformTemplate< SplineWarpXform >::UpdateActiveControlPoints (  ) [protected, pure virtual]

Update deactivated control points.

Implemented in cmtk::SplineWarpCongealingFunctional, and cmtk::SplineWarpGroupwiseRegistrationRMIFunctional.

bool cmtk::GroupwiseRegistrationFunctionalXformTemplate< SplineWarpXform >::UpdateParamStepArray (  ) [protected, virtual]

Update parameter steppings for the warp parameters.

Definition at line 116 of file cmtkGroupwiseRegistrationFunctionalXformTemplate_SplineWarp.cxx.

void cmtk::GroupwiseRegistrationFunctionalXformTemplate< SplineWarpXform >::UpdateVolumesOfInfluence (  ) [protected, virtual]
bool cmtk::GroupwiseRegistrationFunctionalXformTemplate< SplineWarpXform >::Wiggle (  ) [protected, virtual]

"Wiggle" functional a little, i.e., by updating probabilistic sampling.

Returns:
True if the functional actually changed slightly, false if no "wiggle" has actually taken place. This signals the optimizer whether it's worth trying the current stage again (true) or not (false).

Reimplemented from cmtk::GroupwiseRegistrationFunctionalBase.

Reimplemented in cmtk::CongealingFunctional< SplineWarpXform >, and cmtk::GroupwiseRegistrationRMIFunctional< SplineWarpXform >.

Definition at line 200 of file cmtkGroupwiseRegistrationFunctionalXformTemplate_SplineWarp.cxx.


Friends And Related Function Documentation

ClassStream& operator<< ( ClassStream stream,
const GroupwiseRegistrationFunctionalXformTemplate< SplineWarpXform > &  func 
) [friend]
ClassStream& operator>> ( ClassStream stream,
GroupwiseRegistrationFunctionalXformTemplate< SplineWarpXform > &  func 
) [friend]

Member Data Documentation

List of flags for deactivated control points.

Definition at line 201 of file cmtkGroupwiseRegistrationFunctionalXformTemplate_SplineWarp.h.

Weight for grid bending energy term.

Definition at line 171 of file cmtkGroupwiseRegistrationFunctionalXformTemplate_SplineWarp.h.

Deactivate uninformative control points mode.

Definition at line 198 of file cmtkGroupwiseRegistrationFunctionalXformTemplate_SplineWarp.h.

Flag for correction of affine components in unbiased warp.

Definition at line 162 of file cmtkGroupwiseRegistrationFunctionalXformTemplate_SplineWarp.h.

Initial affine transformations.

Definition at line 180 of file cmtkGroupwiseRegistrationFunctionalXformTemplate_SplineWarp.h.

Rotation components of initial affine transformations.

Definition at line 183 of file cmtkGroupwiseRegistrationFunctionalXformTemplate_SplineWarp.h.

Weight for jacobian constraint term.

Definition at line 168 of file cmtkGroupwiseRegistrationFunctionalXformTemplate_SplineWarp.h.

Maximum number of pixels per line in any VOI.

Definition at line 124 of file cmtkGroupwiseRegistrationFunctionalXformTemplate_SplineWarp.h.

Maximum number of pixels in any VOI.

Definition at line 121 of file cmtkGroupwiseRegistrationFunctionalXformTemplate_SplineWarp.h.

Number of deactivated control points.

Definition at line 204 of file cmtkGroupwiseRegistrationFunctionalXformTemplate_SplineWarp.h.

Current parameter steppings for the warp parameters.

Definition at line 186 of file cmtkGroupwiseRegistrationFunctionalXformTemplate_SplineWarp.h.

Flag for partial gradient computation.

If this is set, gradient components under a given threshold are deactivated and not used for gradient approximation.

Definition at line 177 of file cmtkGroupwiseRegistrationFunctionalXformTemplate_SplineWarp.h.

Threshold for partial gradient computation.

Definition at line 195 of file cmtkGroupwiseRegistrationFunctionalXformTemplate_SplineWarp.h.

Volumes of influence for the warp parameters.

Definition at line 192 of file cmtkGroupwiseRegistrationFunctionalXformTemplate_SplineWarp.h.

Flag for fast warp mode, i.e., reduced control point influence volume.

Definition at line 165 of file cmtkGroupwiseRegistrationFunctionalXformTemplate_SplineWarp.h.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines