ImFusion SDK 4.3
FFDImageRegistration Class Reference

#include <ImFusion/Reg/FFDImageRegistration.h>

Registers two images with a non-linear deformation based on FFDs. More...

+ Inheritance diagram for FFDImageRegistration:

Detailed Description

Registers two images with a non-linear deformation based on FFDs.

The algorithm modifies the FreeFormDeformation object attached to image2. Because FFD deformations are generally not invertible, only one image can have a deformation at a time.

Public Member Functions

 FFDImageRegistration (SharedImageSet *image1, SharedImageSet *image2)
 
void initializeTransformationModel () override
 
virtual void setSmoothness (double lambda)
 Sets the strength of the regularization term.
 
double smoothness () const
 Returns the strength of the regularization term.
 
double evaluate (int n, const double *x, double *dx=0) override
 Evaluates the similarity measure with the given parameters.
 
virtual double evaluateRegularization (const std::vector< vec3f > &displacements)
 Evaluates a regularization term for the given parameters.
 
std::shared_ptr< FreeFormDeformationdeformation () const
 Returns the deformation object that is currently modified.
 
void configure (const Properties *p) override
 Configure this object instance by de-serializing the given Properties.
 
void configuration (Properties *p) const override
 Serialize the current object configuration into the given Properties object.
 
void setLambda (double lambda)
 
double lambda ()
 
- Public Member Functions inherited from ParametricDeformableRegistration
 ParametricDeformableRegistration (SharedImageSet *image1, SharedImageSet *image2)
 
void compute () override
 Starts the registration.
 
double evaluate (int n, const double *x, double *dx=0) override
 Assembles the parameters and returns similarity of images.
 
int numberOfParameters () const final
 Returns the number of parameters of the deformation model. Since it is called in the constructor it is defined final.
 
void reset () override
 Resets the deformation of moving to its initial deformation.
 
std::shared_ptr< ParametricDeformationdeformation () const
 Returns the deformation object that is currently modified.
 
bool isDeformable () const override
 Returns if the registration is non-linear or not.
 
void setUseLinear (bool flag)
 Specify whether linear transformation parameters should be used in addition to the deformable ones.
 
bool useLinear () const
 Returns whether linear transformation parameters are used.
 
void configure (const Properties *p) override
 Configures the registration.
 
void configuration (Properties *p) const override
 Gets the configuration of the registration.
 
- Public Member Functions inherited from ParametricImageRegistration
 ParametricImageRegistration (SharedImageSet *image1, SharedImageSet *image2, int numberOfParameters)
 Creates a registration that keeps image1 fixed and moves image2.
 
void compute () override
 Starts the registration.
 
virtual void setProgress (Progress *progress) override
 Sets a Progress interface the algorithm can use to notify observers about its computing progress.
 
virtual void setOptimizer (std::shared_ptr< Optimizer > opt)
 Sets an optimizer.
 
virtual std::shared_ptr< Optimizeroptimizer ()
 
virtual bool setReference (SharedImageSet *img)
 Specifies which of the two images will be used as a reference in the similarity measure.
 
SharedImageSetreference () const override
 Returns the image that will be iterated during the registration.
 
virtual SimilarityMeasureFactorysimilarityMeasureFactory ()
 Returns the factory that creates the SimilarityMeasureImpl instance during the registration.
 
virtual const SimilarityMeasureFactorysimilarityMeasureFactory () const
 
PreProcessingFilter requiredPreprocessingFilter () const override
 Returns LC2_GradientMagnitude if the similarity measure is LC2 or None otherwise.
 
virtual void setPreApplyTransformation (bool enable)
 If set the transformation will be pre-applied before computing the similarity.
 
virtual bool preApplyTransformation () const
 
void setSimilarityMeasure (SimilarityMeasureFactory::Mode mode)
 Convenient method to set the similarity measure.
 
SimilarityMeasureFactory::Mode similarityMeasure () const
 
void setPointCorrespondences (PointCorr *pc)
 Set a point correspondences class instance to use as error function or clear it (ownership not transferred)
 
void setReInitialize (bool flag)
 Specify whether similarity measure and transformation shaders shall be re-initialized every time compute is called (on by default)
 
void setRelativeToWorld (bool flag)
 Sets whether the relative transformation is applied in world or image coordinates.
 
bool isRelativeToWorld () const
 Returns whether the relative transformation is applied in world (true) or image coordinates (false)
 
bool isAffine () const
 Returns true if the optimizer uses affine parameters or false otherwise.
 
void setAffine (bool affine)
 
void setReferenceCoordinateSystem (const mat4 &mat)
 Set a reference coordinate system to use with the linear transformation.
 
void setWeights (const SharedImage *weights1, const SharedImage *weights2)
 Set optional weight images which will be passed on to the similarity measure class.
 
void setErrorFunction (ErrorFunction *ef)
 Set an optional error function that is also used to penalize the image similarity during registration.
 
int numberOfLinearParameters () const
 Return the number of parameters for the linear transformation model.
 
double overlap () const
 Return the last overlap computed by the similarity measure (0..1), i.e. the fraction of used pixels/voxels wrt. the fixed image.
 
virtual double bestSimilarityValue () const override
 Returns the best value of the similarity measure after optimization (may return NaN if algorithm is not intialized)
 
void configure (const Properties *p) override
 Configures the registration.
 
void configuration (Properties *p) const override
 Gets the configuration of the registration.
 
void setDefaultOptimizer ()
 Sets the optimizer to the optimizer created by createDefaultOptimizer
 
- Public Member Functions inherited from AbstractImageRegistration
 AbstractImageRegistration (SharedImageSet *image1, SharedImageSet *image2)
 
virtual SharedImageSetimage1 () const
 
virtual SharedImageSetimage2 () const
 
virtual void setImage1 (SharedImageSet *img)
 
virtual void setImage2 (SharedImageSet *img)
 
- Public Member Functions inherited from Algorithm
 Algorithm ()
 Default constructor will registers a single "compute" action that calls compute() and returns status().
 
virtual OwningDataList takeOutput ()
 Return any new Data that was created by the Algorithm during the last call to compute().
 
Progressprogress () const
 Returns the progress interface if set.
 
virtual int status () const
 Indicates the status of the last call to compute().
 
virtual bool survivesDataDeletion (const Data *) const
 Indicates whether the algorithm can handle (partial) deletion of the specified data, by default this checks whether the data is in the input list.
 
const FactoryInfofactoryInfo () const
 Returns the record describing how this Algorithm was instantiated by the AlgorithmFactory.
 
void setFactoryInfo (const FactoryInfo &value)
 Sets the record describing how this Algorithm was instantiated by the AlgorithmFactory.
 
Status runAction (const std::string &id)
 Run the action with name id if it exists.
 
const std::vector< Action > & actions ()
 Get a mapping from Action id to Action as registered in this algorithm.
 
- Public Member Functions inherited from Configurable
virtual void configureDefaults ()
 Retrieve the properties of this object, replaces values with their defaults and sets it again.
 
void registerParameter (ParameterBase *param)
 Register the given Parameter or SubProperty, so that it will be configured during configure()/configuration().
 
void unregisterParameter (const ParameterBase *param)
 Remove the given Parameter or SubProperty from the list of registered parameters.
 
 Configurable (const Configurable &rhs)
 
 Configurable (Configurable &&rhs) noexcept
 
Configurableoperator= (const Configurable &)
 
Configurableoperator= (Configurable &&) noexcept
 

Static Public Member Functions

static bool createCompatible (const DataList &data, Algorithm **a=0)
 Expects two Volumes/Images.
 
- Static Public Member Functions inherited from Algorithm
static bool createCompatible (const DataList &data, Algorithm **a=nullptr)
 Factory function to check algorithm compatibility with input data and optionally instantiate it.
 

Additional Inherited Members

- Public Types inherited from AbstractImageRegistration
enum  PreProcessingFilter { None , LC2_GradientMagnitude }
 
- Public Types inherited from Algorithm
enum  Status {
  Unknown = -1 , Success = 0 , Error = 1 , InvalidInput ,
  IncompleteInput , OutOfMemoryHost , OutOfMemoryGPU , UnsupportedGPU ,
  UnknownAction , AbortedByUser , User = 1000
}
 Status codes. More...
 
- Public Attributes inherited from Algorithm
Signal signalOutputChanged
 Signal should be emitted by Algorithms when their output/result has changed.
 
Signal signalParametersChanged
 Signal should be emitted by Algorithms when their parameter configuration has changed.
 
- Public Attributes inherited from Configurable
Signal signalParametersChanged
 Emitted whenever one of the registered Parameters' or SubPropertys' signalValueChanged signal was emitted.
 
- Protected Member Functions inherited from ParametricImageRegistration
std::shared_ptr< OptimizercreateDefaultOptimizer (int numParameters) const
 Returns a default optimizer with the given number if parameters.
 
mat4 updateLinearTransform (int n, const double *x)
 Compute the linear homogenous moving image transformation from optimization parameters.
 
- Protected Member Functions inherited from AbstractImageRegistration
bool complainAboutDeformationOnFixedImage ()
 
- Protected Member Functions inherited from Algorithm
void loadDefaults ()
 
void registerAction (const std::string &id, const std::string &guiName, const std::function< Algorithm::Status(void)> &action)
 Register an action to be run via runAction.
 
template<typename D>
void registerAction (const std::string &id, const std::string &guiName, Algorithm::Status(D::*action)(void))
 Template version of runAction that can be used with a pointer to a member function.
 
void registerAction (const Action &action)
 Register an action.
 
- Static Protected Member Functions inherited from ParametricDeformableRegistration
template<class T, class U>
static bool createCompatible (const DataList &data, Algorithm **a)
 Auxiliary factory method to create specialized registration instance Is used by DemonsImageRegistration.
 
- Protected Attributes inherited from ParametricDeformableRegistration
Propertiesm_resetProperties
 used to reset the deformation grid to its pre-registration state (if there was such a state)
 
std::vector< double > m_initialPars
 inner displacements when the registration was started, only available during registration
 
bool m_useLinear
 If true, linear transformation parameters are used in addition to the deformable ones.
 
- Protected Attributes inherited from ParametricImageRegistration
std::shared_ptr< Optimizerm_opt
 NOTE: A default optimizer will be created by configure if no instance is already set.
 
SimilarityMeasureFactory m_smFactory
 
SimilarityMeasureImplm_sm
 Actual similarity measure instance, only set during compute.
 
bool m_smIterate1
 
bool m_preApplyTransformation
 
bool m_reInit
 Re-initialize transformation and similarity measure every time compute is called.
 
double m_overlap
 
const SharedImagem_weights1
 
const SharedImagem_weights2
 
SharedImagem_resampled
 the moving image with pre-applied transformation, only set during compute and if m_preApplyTransformation is true
 
ImageTransformerm_transformer
 capsulates the transformation, only set during compute
 
PointCorrm_pointCorr
 Point correspondences instance if available.
 
ErrorFunctionm_errorFunc
 Optional error function also used to penalize similarity.
 
mat4 m_initMat
 Initial registration matrix for linear transformation model.
 
mat4 m_resetMat
 Unmodified matrix of the moving image for reseting.
 
mat4 m_refCoord
 Reference coordinate system to use with linear transformation.
 
bool m_relWorld
 Apply relative transformation wrt. world coordinates for linear model.
 
int m_affine
 0=rigid, 1=affine, 2=rigid then affine (2 only supported through configurable interface)
 
- Protected Attributes inherited from AbstractImageRegistration
SharedImageSetm_image1
 First image of the registration.
 
SharedImageSetm_image2
 Second image of the registration.
 
PointCorrAlgorithmm_pcAlg
 Optional point correspondences for evaluation.
 
- Protected Attributes inherited from Algorithm
std::string m_name
 Algorithm name.
 
Progressm_progress = nullptr
 Non-owing pointer to a progress interface. May be a nullptr.
 
FactoryInfo m_factoryInfo = {}
 Record describing how this algorithm was instantiated by the AlgorithmFactory.
 
int m_status = Status::Unknown
 Algorithm status after last call to compute()
 
std::vector< Actionm_actions
 Map of key given by the id of the action, of the available actions of this algorithm.
 
- Protected Attributes inherited from Configurable
std::vector< Paramm_params
 List of all registered Parameter and SubProperty instances.
 

Member Function Documentation

◆ initializeTransformationModel()

void initializeTransformationModel ( )
overridevirtual

◆ setSmoothness()

virtual void setSmoothness ( double lambda)
virtual

Sets the strength of the regularization term.

Default is 0.01 according to Rueckert et al.

◆ evaluate()

double evaluate ( int n,
const double * x,
double * dx = 0 )
overridevirtual

Evaluates the similarity measure with the given parameters.

The overall cost function is: similarity - smoothness * regularization

Parameters
displacementsabsolute 3D displacement for all control points of the FFD

Implements ParametricImageRegistration.

◆ deformation()

std::shared_ptr< FreeFormDeformation > deformation ( ) const

Returns the deformation object that is currently modified.

This is a convenience method that casts moving to a SharedImageSet, retrieves its deformation and cast that to a FreeFormDeformation. Returns 0, if any of the casts fail.

◆ configure()

void configure ( const Properties * p)
overridevirtual

Configure this object instance by de-serializing the given Properties.

The default implementation will do so automatically for all registered Parameter and SubProperty instances.

See also
configuration() for the inverse functionality

Reimplemented from AbstractImageRegistration.

◆ configuration()

void configuration ( Properties * p) const
overridevirtual

Serialize the current object configuration into the given Properties object.

The default implementation will do so automatically for all registered Parameter and SubProperty instances.

See also
configure() for the inverse functionality

Reimplemented from AbstractImageRegistration.


The documentation for this class was generated from the following file:
Search Tab / S to search, Esc to close