SuPReMo  0.1.1
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Private Member Functions | List of all members
SSDImageSimilarity Class Reference

#include <SSDImageSimilarity.h>

Inheritance diagram for SSDImageSimilarity:
Inheritance graph
[legend]
Collaboration diagram for SSDImageSimilarity:
Collaboration graph
[legend]

Public Types

typedef float PrecisionType
 

Public Member Functions

 SSDImageSimilarity ()
 
 ~SSDImageSimilarity ()
 
double GetSimilarityMeasureValueForImages (nifti_image *source, nifti_image *reference)
 
virtual void GetSimilarityGradientWRTVoxels (nifti_image *referenceImg, nifti_image *sourceImg, nifti_image *similarityGradientWRTVoxelsOutputImage)
 
virtual double GetSimilarityMeasureValueForImages (nifti_image *img1In, nifti_image *img2In)=0
 
virtual void GetSimilarityGradientWRTVoxels (nifti_image *referenceImg, nifti_image *sourceImg, nifti_image *similarityGradientWRTVoxelsOutputImage)=0
 

Private Member Functions

double GetSSDValue (nifti_image *referenceImage, nifti_image *sourceImage)
 

Detailed Description

Class to calculate the sum-of-squared-differences (SSD) image similarity value and gradient.

Member Typedef Documentation

◆ PrecisionType

Constructor & Destructor Documentation

◆ SSDImageSimilarity()

SSDImageSimilarity::SSDImageSimilarity ( )

Constructor.

◆ ~SSDImageSimilarity()

SSDImageSimilarity::~SSDImageSimilarity ( )

Destructor.

Member Function Documentation

◆ GetSimilarityGradientWRTVoxels()

void SSDImageSimilarity::GetSimilarityGradientWRTVoxels ( nifti_image *  referenceImg,
nifti_image *  sourceImg,
nifti_image *  similarityGradientWRTVoxelsOutputImage 
)
virtual

Calculates and returns the gradient of the image similarity measure with respect to the voxel intensities. Unlike SSDImageSimilarity::GetSimilarityMeasureValueForImages this funciton is not symmetric. Here \( \frac{\partial \mathcal{S}_t}{\mathbf{P}_{A_t}}\) is calculated, which for SSD is given by

\[ \frac{ \partial \mathcal{S} }{ \partial p_{A_t ,y} } = -2\left( p_{A_t ,y} - \partial p_{t ,y} \right) \]

calculated at each voxel.

Parameters
referenceImgNifti image pointer to the reference image. In the case of the unified registration framework it is the actual dynamic image \( \mathbf{P}_{t} \).
sourceImgNifti image pointer to the source image. In the case of the unified registration framework it is the simulated dynamic image \( \mathbf{P}_{A_t} \).
similarityGradientWRTVoxelsOutputImageNifti image of the same size/geometry of the sourceImg and referenceImg that is used to recieve the gradient image. Purposely not a member of this class.
Todo:
Decide how to deal with multiple time points in images

Implements ImageSimilarity.

◆ GetSimilarityMeasureValueForImages()

double SSDImageSimilarity::GetSimilarityMeasureValueForImages ( nifti_image *  source,
nifti_image *  reference 
)
virtual

Measures and returns the image similarity \( S(\mathbf{P}_t, \mathbf{P}_{A_t}) \) between two images.

Todo:
Perform checks that images are of equal size, and equal data type (equal geometry?)

Implements ImageSimilarity.

◆ GetSSDValue()

double SSDImageSimilarity::GetSSDValue ( nifti_image *  referenceImage,
nifti_image *  sourceImage 
)
private

The documentation for this class was generated from the following files: