Template specialization for groupwise nonrigid registration functionals. More...
#include <cmtkGroupwiseRegistrationFunctionalXformTemplate_SplineWarp.h>
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< Self > | SmartPtr |
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::Coordinate > | m_ParamStepArray |
Current parameter steppings for the warp parameters. | |
std::vector< DataGrid::RegionType > | m_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 | |
ClassStream & | operator<< (ClassStream &stream, const GroupwiseRegistrationFunctionalXformTemplate< SplineWarpXform > &func) |
ClassStream & | operator>> (ClassStream &stream, GroupwiseRegistrationFunctionalXformTemplate< SplineWarpXform > &func) |
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.
typedef GroupwiseRegistrationFunctionalXformTemplate<SplineWarpXform> cmtk::GroupwiseRegistrationFunctionalXformTemplate< SplineWarpXform >::Self |
Type of this class.
Reimplemented from cmtk::GroupwiseRegistrationFunctionalXformTemplateBase< SplineWarpXform >.
Reimplemented in cmtk::SplineWarpCongealingFunctional, cmtk::SplineWarpGroupwiseRegistrationRMIFunctional, cmtk::CongealingFunctional< SplineWarpXform >, and cmtk::GroupwiseRegistrationRMIFunctional< SplineWarpXform >.
Definition at line 59 of file cmtkGroupwiseRegistrationFunctionalXformTemplate_SplineWarp.h.
typedef SmartPointer<Self> cmtk::GroupwiseRegistrationFunctionalXformTemplate< SplineWarpXform >::SmartPtr |
Smart pointer.
Reimplemented from cmtk::GroupwiseRegistrationFunctionalXformTemplateBase< SplineWarpXform >.
Reimplemented in cmtk::SplineWarpCongealingFunctional, cmtk::SplineWarpGroupwiseRegistrationRMIFunctional, cmtk::CongealingFunctional< SplineWarpXform >, and cmtk::GroupwiseRegistrationRMIFunctional< SplineWarpXform >.
Definition at line 62 of file cmtkGroupwiseRegistrationFunctionalXformTemplate_SplineWarp.h.
typedef GroupwiseRegistrationFunctionalXformTemplateBase<SplineWarpXform> cmtk::GroupwiseRegistrationFunctionalXformTemplate< SplineWarpXform >::Superclass |
Type of this class.
Reimplemented from cmtk::GroupwiseRegistrationFunctionalXformTemplateBase< SplineWarpXform >.
Reimplemented in cmtk::SplineWarpCongealingFunctional, cmtk::SplineWarpGroupwiseRegistrationRMIFunctional, cmtk::CongealingFunctional< SplineWarpXform >, and cmtk::GroupwiseRegistrationRMIFunctional< SplineWarpXform >.
Definition at line 56 of file cmtkGroupwiseRegistrationFunctionalXformTemplate_SplineWarp.h.
cmtk::GroupwiseRegistrationFunctionalXformTemplate< SplineWarpXform >::GroupwiseRegistrationFunctionalXformTemplate | ( | ) |
Constructor.
Definition at line 8 of file cmtkGroupwiseRegistrationFunctionalXformTemplate_SplineWarp.cxx.
virtual cmtk::GroupwiseRegistrationFunctionalXformTemplate< SplineWarpXform >::~GroupwiseRegistrationFunctionalXformTemplate | ( | ) | [inline, virtual] |
Destructor.
Definition at line 68 of file cmtkGroupwiseRegistrationFunctionalXformTemplate_SplineWarp.h.
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.
gridSpacing | Control point grid spacing in real-world units |
exactSpacing | If 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] |
gridSpacing | Control point grid spacing in real-world units |
initialAffineXformsVector | Vector of initial affine coordinate transformations |
exactSpacing | If 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.
idx | Index of of to reformat to template. This also determines which transformation is used. |
destination | The 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] |
Image interpolation thread function.
Definition at line 234 of file cmtkGroupwiseRegistrationFunctionalXformTemplate_SplineWarp.cxx.
References cmtk::AXIS_X, cmtk::AXIS_Y, cmtk::AXIS_Z, cmtk::SplineWarpXform::GetTransformedGridRow(), and cmtk::UniformVolume::ProbeData().
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] |
Call inherited function and allocate local storage.
Reimplemented from cmtk::GroupwiseRegistrationFunctionalBase.
Reimplemented in cmtk::SplineWarpCongealingFunctional, cmtk::CongealingFunctional< SplineWarpXform >, and cmtk::GroupwiseRegistrationRMIFunctional< SplineWarpXform >.
Definition at line 26 of file cmtkGroupwiseRegistrationFunctionalXformTemplate_SplineWarp.cxx.
References cmtk::SplineWarpXform::RegisterVolume().
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] |
Update volumes of influence for warp parameters.
Definition at line 90 of file cmtkGroupwiseRegistrationFunctionalXformTemplate_SplineWarp.cxx.
References cmtk::Region< NDIM, T >::From(), cmtk::SplineWarpXform::GetVolumeOfInfluence(), cmtk::Region< NDIM, T >::Size(), and cmtk::Region< NDIM, T >::To().
bool cmtk::GroupwiseRegistrationFunctionalXformTemplate< SplineWarpXform >::Wiggle | ( | ) | [protected, virtual] |
"Wiggle" functional a little, i.e., by updating probabilistic sampling.
Reimplemented from cmtk::GroupwiseRegistrationFunctionalBase.
Reimplemented in cmtk::CongealingFunctional< SplineWarpXform >, and cmtk::GroupwiseRegistrationRMIFunctional< SplineWarpXform >.
Definition at line 200 of file cmtkGroupwiseRegistrationFunctionalXformTemplate_SplineWarp.cxx.
ClassStream& operator<< | ( | ClassStream & | stream, |
const GroupwiseRegistrationFunctionalXformTemplate< SplineWarpXform > & | func | ||
) | [friend] |
ClassStream& operator>> | ( | ClassStream & | stream, |
GroupwiseRegistrationFunctionalXformTemplate< SplineWarpXform > & | func | ||
) | [friend] |
std::vector<bool> cmtk::GroupwiseRegistrationFunctionalXformTemplate< SplineWarpXform >::m_ActiveControlPointFlags [protected] |
List of flags for deactivated control points.
Definition at line 201 of file cmtkGroupwiseRegistrationFunctionalXformTemplate_SplineWarp.h.
float cmtk::GroupwiseRegistrationFunctionalXformTemplate< SplineWarpXform >::m_BendingEnergyWeight [protected] |
Weight for grid bending energy term.
Definition at line 171 of file cmtkGroupwiseRegistrationFunctionalXformTemplate_SplineWarp.h.
bool cmtk::GroupwiseRegistrationFunctionalXformTemplate< SplineWarpXform >::m_DeactivateUninformativeMode [protected] |
Deactivate uninformative control points mode.
Definition at line 198 of file cmtkGroupwiseRegistrationFunctionalXformTemplate_SplineWarp.h.
bool cmtk::GroupwiseRegistrationFunctionalXformTemplate< SplineWarpXform >::m_ForceZeroSumNoAffine [protected] |
Flag for correction of affine components in unbiased warp.
Definition at line 162 of file cmtkGroupwiseRegistrationFunctionalXformTemplate_SplineWarp.h.
std::vector<AffineXform::SmartPtr> cmtk::GroupwiseRegistrationFunctionalXformTemplate< SplineWarpXform >::m_InitialAffineXformsVector [protected] |
Initial affine transformations.
Definition at line 180 of file cmtkGroupwiseRegistrationFunctionalXformTemplate_SplineWarp.h.
std::vector<AffineXform::SmartPtr> cmtk::GroupwiseRegistrationFunctionalXformTemplate< SplineWarpXform >::m_InitialRotationsVector [protected] |
Rotation components of initial affine transformations.
Definition at line 183 of file cmtkGroupwiseRegistrationFunctionalXformTemplate_SplineWarp.h.
float cmtk::GroupwiseRegistrationFunctionalXformTemplate< SplineWarpXform >::m_JacobianConstraintWeight [protected] |
Weight for jacobian constraint term.
Definition at line 168 of file cmtkGroupwiseRegistrationFunctionalXformTemplate_SplineWarp.h.
size_t cmtk::GroupwiseRegistrationFunctionalXformTemplate< SplineWarpXform >::m_MaximumNumberOfPixelsPerLineVOI [protected] |
Maximum number of pixels per line in any VOI.
Definition at line 124 of file cmtkGroupwiseRegistrationFunctionalXformTemplate_SplineWarp.h.
size_t cmtk::GroupwiseRegistrationFunctionalXformTemplate< SplineWarpXform >::m_MaximumNumberOfPixelsVOI [protected] |
Maximum number of pixels in any VOI.
Definition at line 121 of file cmtkGroupwiseRegistrationFunctionalXformTemplate_SplineWarp.h.
size_t cmtk::GroupwiseRegistrationFunctionalXformTemplate< SplineWarpXform >::m_NumberOfActiveControlPoints [protected] |
Number of deactivated control points.
Definition at line 204 of file cmtkGroupwiseRegistrationFunctionalXformTemplate_SplineWarp.h.
std::vector<Types::Coordinate> cmtk::GroupwiseRegistrationFunctionalXformTemplate< SplineWarpXform >::m_ParamStepArray [protected] |
Current parameter steppings for the warp parameters.
Definition at line 186 of file cmtkGroupwiseRegistrationFunctionalXformTemplate_SplineWarp.h.
bool cmtk::GroupwiseRegistrationFunctionalXformTemplate< SplineWarpXform >::m_PartialGradientMode [protected] |
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.
Types::Coordinate cmtk::GroupwiseRegistrationFunctionalXformTemplate< SplineWarpXform >::m_PartialGradientThreshold [protected] |
Threshold for partial gradient computation.
Definition at line 195 of file cmtkGroupwiseRegistrationFunctionalXformTemplate_SplineWarp.h.
std::vector<DataGrid::RegionType> cmtk::GroupwiseRegistrationFunctionalXformTemplate< SplineWarpXform >::m_VolumeOfInfluenceArray [protected] |
Volumes of influence for the warp parameters.
Definition at line 192 of file cmtkGroupwiseRegistrationFunctionalXformTemplate_SplineWarp.h.
bool cmtk::GroupwiseRegistrationFunctionalXformTemplate< SplineWarpXform >::m_WarpFastMode [protected] |
Flag for fast warp mode, i.e., reduced control point influence volume.
Definition at line 165 of file cmtkGroupwiseRegistrationFunctionalXformTemplate_SplineWarp.h.