NifTK
16.4.1 - 0798f20
CMIC's Translational Medical Imaging Platform
|
Initial implementation of Seb Ourselin's block matching algorithm. More...
Classes | |
class | ResidualHeapDataType |
So we can have an ordered list of points, based on the residual between transformed fixed and moving. More... | |
class | VarianceHeapDataType |
So we can have an ordered list of indexes, based on variance of a block. More... | |
Public Types | |
typedef BlockMatchingMethod | Self |
typedef MaskedImageRegistrationMethod < TImageType > | Superclass |
typedef SmartPointer< Self > | Pointer |
typedef SmartPointer< const Self > | ConstPointer |
typedef TImageType | ImageType |
typedef ImageType::SizeType | ImageSizeType |
typedef ImageType::PixelType | ImagePixelType |
typedef ImageType::SpacingType | ImageSpacingType |
typedef ImageType::RegionType | ImageRegionType |
typedef ImageType::IndexType | ImageIndexType |
typedef ResampleImageFilter < TImageType, TImageType > | ResampleFilterType |
typedef ResampleFilterType::Pointer | ResampleFilterPointer |
typedef RegionOfInterestImageFilter < TImageType, TImageType > | RegionOfInterestFilterType |
typedef RegionOfInterestFilterType::Pointer | RegionOfInterestFilterPointer |
typedef itk::Statistics::ImageToListSampleAdaptor < ImageType > | ImageTypeListAdaptorType |
typedef ImageTypeListAdaptorType::Pointer | ImageTypeListAdaptorPointer |
typedef itk::Statistics::CovarianceSampleFilter < ImageTypeListAdaptorType > | ImageTypeCovarianceSampleFilterType |
typedef ImageTypeCovarianceSampleFilterType::Pointer | ImageTypeCovarianceSampleFilterPointer |
typedef Image< float, TImageType::ImageDimension > | GradientImageType |
typedef GradientMagnitudeImageFilter < TImageType, GradientImageType > | GradientMagnitudeFilterType |
typedef GradientMagnitudeFilterType::Pointer | GradientMagnitudeFilterPointer |
typedef itk::Statistics::ImageToListSampleAdaptor < GradientImageType > | GradientImageTypeListAdaptorType |
typedef GradientImageTypeListAdaptorType::Pointer | GradientImageTypeListAdaptorPointer |
typedef itk::Statistics::CovarianceSampleFilter < GradientImageTypeListAdaptorType > | GradientImageTypeCovarianceSampleFilterType |
typedef GradientImageTypeCovarianceSampleFilterType::Pointer | GradientImageTypeCovarianceSampleFilterPointer |
typedef SimilarityMeasure < TImageType, TImageType > | SimilarityMeasureType |
typedef SimilarityMeasureType * | SimilarityMeasurePointer |
typedef NearestNeighborInterpolateImageFunction < TImageType, TScalarType > | DummyInterpolatorType |
typedef DummyInterpolatorType::Pointer | DummyInterpolatorPointer |
typedef Superclass::ParametersType | ParametersType |
typedef PointSet< TScalarType, TImageType::ImageDimension, DefaultStaticMeshTraits < TScalarType, TImageType::ImageDimension, TImageType::ImageDimension, TScalarType, TScalarType > > | PointSetType |
typedef PointSetType::PointType | PointType |
typedef PointSetType::PointsContainer::ConstIterator | PointIterator |
typedef PointSetType::Pointer | PointSetPointer |
typedef PointSetType::PointsContainer | PointsContainerType |
typedef PointsContainerType::Pointer | PointsContainerPointer |
typedef PointSetToPointSetSingleValuedMetric < PointSetType, PointSetType > | PointSetMetricType |
typedef PointSetMetricType::Pointer | PointSetMetricPointer |
typedef Superclass::TransformType | TransformType |
typedef TransformType * | TransformPointer |
typedef MinimumMaximumImageCalculator < TImageType > | MinimumMaximumImageCalculatorType |
typedef MinimumMaximumImageCalculatorType::Pointer | MinimumMaximumImageCalculatorPointer |
Public Types inherited from itk::MaskedImageRegistrationMethod< TImageType > | |
typedef MaskedImageRegistrationMethod | Self |
typedef SingleResolutionImageRegistrationMethod < TImageType, TImageType > | Superclass |
typedef SmartPointer< Self > | Pointer |
typedef SmartPointer< const Self > | ConstPointer |
typedef TImageType | InputImageType |
typedef InputImageType::PixelType | InputImagePixelType |
typedef InputImageType::Pointer | InputImagePointer |
typedef InputImageType::ConstPointer | InputImageConstPointer |
typedef InputImageType::RegionType | InputImageRegionType |
typedef InputImageType::SizeType | InputImageSizeType |
typedef InputImageType::IndexType | InputImageIndexType |
typedef InputImageType::SpacingType | InputImageSpacingType |
typedef InputImageType::PointType | InputImageOriginType |
typedef InputImageType::DirectionType | InputImageDirectionType |
typedef BoundaryValueRescaleIntensityImageFilter < InputImageType > | RescaleFilterType |
typedef RescaleFilterType::Pointer | RescaleFilterPointer |
typedef SmoothingRecursiveGaussianImageFilter < InputImageType, InputImageType > | SmoothingFilterType |
typedef SmoothingFilterType::Pointer | SmoothingFilterPointer |
typedef BinaryThresholdImageFilter < InputImageType, InputImageType > | ThresholdFilterType |
typedef ThresholdFilterType::Pointer | ThresholdFilterPointer |
typedef BinaryCrossStructuringElement < InputImagePixelType, InputImageType::ImageDimension > | StructuringType |
typedef BinaryDilateImageFilter < InputImageType, InputImageType, StructuringType > | DilateMaskFilterType |
typedef DilateMaskFilterType::Pointer | DilateMaskFilterPointer |
typedef MultiplyImageFilter < InputImageType, InputImageType > | MultiplyFilterType |
typedef MultiplyFilterType::Pointer | MultiplyFilterPointer |
typedef unsigned char | MaskPixelType |
typedef Image< MaskPixelType, InputImageType::ImageDimension > | MaskImageType |
typedef CastImageFilter < InputImageType, MaskImageType > | CastToMaskImageTypeFilterType |
typedef CastToMaskImageTypeFilterType::Pointer | CastToMaskImageTypeFilterPointer |
typedef ImageMaskSpatialObject < InputImageType::ImageDimension > | MaskFilterType |
typedef MaskFilterType::Pointer | MaskFilterPointer |
typedef Superclass::TransformType | TransformType |
Public Types inherited from itk::SingleResolutionImageRegistrationMethod< TImageType, TImageType > | |
typedef SingleResolutionImageRegistrationMethod | Self |
typedef ImageRegistrationMethod < TImageType, TImageType > | Superclass |
typedef SmartPointer< Self > | Pointer |
typedef SmartPointer< const Self > | ConstPointer |
typedef itk::IterationUpdateCommand | IterationUpdateCommandType |
typedef IterationUpdateCommandType::Pointer | IterationUpdateCommandPointer |
typedef Superclass::ParametersType | ParametersType |
typedef Superclass::TransformType | TransformType |
typedef Superclass::InterpolatorType | InterpolatorType |
Static Public Member Functions | |
static Pointer | New () |
Static Public Member Functions inherited from itk::MaskedImageRegistrationMethod< TImageType > | |
static Pointer | New () |
Static Public Member Functions inherited from itk::SingleResolutionImageRegistrationMethod< TImageType, TImageType > | |
static Pointer | New () |
Protected Types | |
typedef std::priority_queue < VarianceHeapDataType > | VarianceHeap |
typedef std::priority_queue < ResidualHeapDataType > | ResidualHeap |
Additional Inherited Members | |
Protected Attributes inherited from itk::SingleResolutionImageRegistrationMethod< TImageType, TImageType > | |
InterpolatorType::Pointer | m_FixedImageInterpolator |
InterpolatorType::Pointer | m_MovingImageInterpolator |
Initial implementation of Seb Ourselin's block matching algorithm.
This class implements the main algorithm of Ourselin et. al. Image and Vision Computing 19 (2000) 25-31. It's a subclass of the itkSingleResolutionImageRegistrationMethod so that we can easily plug it into our usual multi-resolution stuff in itkMultiResolutionImageRegistrationWrapper, and hence put it into itkImageRegistrationFilter.
This implementation uses the same components as the other methods in the RegistrationToolbox, but it doesn't use the same plumbing at all. This class overrides a lot of the base class functionality, so you are advised to look at the implementation.
The algorithm proceeds by:
For further details read Ourselin et. al. Image and Vision Computing 19 (2000) 25-31.
typedef SmartPointer<const Self> itk::BlockMatchingMethod< TImageType, TScalarType >::ConstPointer |
typedef DummyInterpolatorType::Pointer itk::BlockMatchingMethod< TImageType, TScalarType >::DummyInterpolatorPointer |
typedef NearestNeighborInterpolateImageFunction< TImageType, TScalarType> itk::BlockMatchingMethod< TImageType, TScalarType >::DummyInterpolatorType |
typedef Image<float, TImageType::ImageDimension> itk::BlockMatchingMethod< TImageType, TScalarType >::GradientImageType |
typedef GradientImageTypeCovarianceSampleFilterType::Pointer itk::BlockMatchingMethod< TImageType, TScalarType >::GradientImageTypeCovarianceSampleFilterPointer |
typedef itk::Statistics::CovarianceSampleFilter< GradientImageTypeListAdaptorType > itk::BlockMatchingMethod< TImageType, TScalarType >::GradientImageTypeCovarianceSampleFilterType |
typedef GradientImageTypeListAdaptorType::Pointer itk::BlockMatchingMethod< TImageType, TScalarType >::GradientImageTypeListAdaptorPointer |
typedef itk::Statistics::ImageToListSampleAdaptor< GradientImageType > itk::BlockMatchingMethod< TImageType, TScalarType >::GradientImageTypeListAdaptorType |
typedef GradientMagnitudeFilterType::Pointer itk::BlockMatchingMethod< TImageType, TScalarType >::GradientMagnitudeFilterPointer |
typedef GradientMagnitudeImageFilter<TImageType, GradientImageType> itk::BlockMatchingMethod< TImageType, TScalarType >::GradientMagnitudeFilterType |
typedef ImageType::IndexType itk::BlockMatchingMethod< TImageType, TScalarType >::ImageIndexType |
typedef ImageType::PixelType itk::BlockMatchingMethod< TImageType, TScalarType >::ImagePixelType |
typedef ImageType::RegionType itk::BlockMatchingMethod< TImageType, TScalarType >::ImageRegionType |
typedef ImageType::SizeType itk::BlockMatchingMethod< TImageType, TScalarType >::ImageSizeType |
typedef ImageType::SpacingType itk::BlockMatchingMethod< TImageType, TScalarType >::ImageSpacingType |
typedef TImageType itk::BlockMatchingMethod< TImageType, TScalarType >::ImageType |
Typdef's anonymous.
typedef ImageTypeCovarianceSampleFilterType::Pointer itk::BlockMatchingMethod< TImageType, TScalarType >::ImageTypeCovarianceSampleFilterPointer |
typedef itk::Statistics::CovarianceSampleFilter< ImageTypeListAdaptorType > itk::BlockMatchingMethod< TImageType, TScalarType >::ImageTypeCovarianceSampleFilterType |
typedef ImageTypeListAdaptorType::Pointer itk::BlockMatchingMethod< TImageType, TScalarType >::ImageTypeListAdaptorPointer |
typedef itk::Statistics::ImageToListSampleAdaptor< ImageType > itk::BlockMatchingMethod< TImageType, TScalarType >::ImageTypeListAdaptorType |
typedef MinimumMaximumImageCalculatorType::Pointer itk::BlockMatchingMethod< TImageType, TScalarType >::MinimumMaximumImageCalculatorPointer |
typedef MinimumMaximumImageCalculator<TImageType> itk::BlockMatchingMethod< TImageType, TScalarType >::MinimumMaximumImageCalculatorType |
typedef Superclass::ParametersType itk::BlockMatchingMethod< TImageType, TScalarType >::ParametersType |
typedef SmartPointer<Self> itk::BlockMatchingMethod< TImageType, TScalarType >::Pointer |
typedef PointSetType::PointsContainer::ConstIterator itk::BlockMatchingMethod< TImageType, TScalarType >::PointIterator |
typedef PointsContainerType::Pointer itk::BlockMatchingMethod< TImageType, TScalarType >::PointsContainerPointer |
typedef PointSetType::PointsContainer itk::BlockMatchingMethod< TImageType, TScalarType >::PointsContainerType |
typedef PointSetMetricType::Pointer itk::BlockMatchingMethod< TImageType, TScalarType >::PointSetMetricPointer |
typedef PointSetToPointSetSingleValuedMetric<PointSetType, PointSetType> itk::BlockMatchingMethod< TImageType, TScalarType >::PointSetMetricType |
typedef PointSetType::Pointer itk::BlockMatchingMethod< TImageType, TScalarType >::PointSetPointer |
typedef PointSet< TScalarType, TImageType::ImageDimension, DefaultStaticMeshTraits < TScalarType, TImageType::ImageDimension, TImageType::ImageDimension, TScalarType, TScalarType > > itk::BlockMatchingMethod< TImageType, TScalarType >::PointSetType |
typedef PointSetType::PointType itk::BlockMatchingMethod< TImageType, TScalarType >::PointType |
typedef RegionOfInterestFilterType::Pointer itk::BlockMatchingMethod< TImageType, TScalarType >::RegionOfInterestFilterPointer |
typedef RegionOfInterestImageFilter<TImageType, TImageType> itk::BlockMatchingMethod< TImageType, TScalarType >::RegionOfInterestFilterType |
typedef ResampleFilterType::Pointer itk::BlockMatchingMethod< TImageType, TScalarType >::ResampleFilterPointer |
typedef ResampleImageFilter<TImageType, TImageType > itk::BlockMatchingMethod< TImageType, TScalarType >::ResampleFilterType |
|
protected |
typedef BlockMatchingMethod itk::BlockMatchingMethod< TImageType, TScalarType >::Self |
Standard class typedefs.
typedef SimilarityMeasureType* itk::BlockMatchingMethod< TImageType, TScalarType >::SimilarityMeasurePointer |
typedef SimilarityMeasure<TImageType, TImageType > itk::BlockMatchingMethod< TImageType, TScalarType >::SimilarityMeasureType |
typedef MaskedImageRegistrationMethod<TImageType> itk::BlockMatchingMethod< TImageType, TScalarType >::Superclass |
typedef TransformType* itk::BlockMatchingMethod< TImageType, TScalarType >::TransformPointer |
typedef Superclass::TransformType itk::BlockMatchingMethod< TImageType, TScalarType >::TransformType |
|
protected |
|
protected |
|
inlineprotectedvirtual |
|
protectedvirtual |
Used to compare the previousParameters to currentParameters and decide if we should keep iterating, or change scale
|
protectedvirtual |
Multiplies the given point by the two sets of transforms, and returns the difference between the results.
|
protectedvirtual |
We override this method to actually do the registration.
Reimplemented from itk::SingleResolutionImageRegistrationMethod< TImageType, TImageType >.
|
virtual |
Get the block half width, this is big Omega in the IVC paper.
|
virtual |
Get the block size, this is big N in the IVC paper.
|
virtual |
Get the spacing between blocks, this is big Delta_1 in the IVC paper.
|
virtual |
Get the sub-sampling for moving blocks, this is big Delta_2 in the IVC paper.
|
virtual |
Run-time type information (and related methods).
Reimplemented from itk::MaskedImageRegistrationMethod< TImageType >.
|
virtual |
|
virtual |
|
virtual |
|
virtual |
|
virtual |
|
virtual |
|
virtual |
|
protectedvirtual |
Unfortunately, need a 2D version.
|
protectedvirtual |
Unfortunately, need a 3D version aswell.
|
virtual |
|
virtual |
|
virtual |
|
virtual |
|
virtual |
|
virtual |
|
virtual |
|
virtual |
|
virtual |
|
protectedvirtual |
We override this method to wire everything together.
Reimplemented from itk::MaskedImageRegistrationMethod< TImageType >.
itk::BlockMatchingMethod< TImageType, TScalarType >::itkStaticConstMacro | ( | Dimension | , |
unsigned | int, | ||
TImageType::ImageDimension | |||
) |
Get the number of dimensions we are working in.
|
static |
Method for creation through the object factory.
|
protected |
void itk::BlockMatchingMethod< TImageType, TScalarType >::SetBlockParameters | ( | double | blockSize, |
double | blockHalfWidth, | ||
double | blockSpacing, | ||
double | blockSubSampling | ||
) |
Set all the block parameters in one go. Otherwise, they default to -1, and this class works them out according to section 2.3 in Ourselin et. al. Image and Vision Computing 19 (2000) 25-31.
blockSize is big N in the IVC paper. blockHalfWidth is big Omega in the IVC paper. blockSpacing is big Delta_1 in the IVC paper. blockSubSampling is big Delta_2 in the IVC paper.
You should set these values in millimetres, and then internally, we set up different values for each image axis depending on voxel size.
|
virtual |
Set/Get Epsilon to control the termination criteria. See Section 2.3. in IVC 2000 paper. Defaults to 1.
|
virtual |
Max iterations round main 1. ) block match, 2.) optimisation loop. Default 10.
|
virtual |
Set the minimum block size (Big N in IVC 2000 paper). Default 4.0 mm.
|
virtual |
To determine if we include pairs with zero displacement.
|
virtual |
According to paper, once we have solved at one level, we half the parameters and continue. This parameter gives us the option to reduce it more quickly or more slowly. Default 0.5
|
virtual |
Set the percentage of points to keep in least trimmed squares. As with PercentageOfPointsToKeep, this is applied blindly, so this class knows nothing of how you change it for different multi-resolution levels. Defaults to 100%
|
virtual |
Set the percentage of fixed image points to used, based on variance. In Ourselin et. al. MICCAI 2002, the multi-resolution approach describes how you use all points at lower resolution, and halve the number of relevant voxels at each resolution, with a lower bound of 20%. So, this percentage should be set externally, as this class just applies it blindly. Defaults to 100%.
|
virtual |
Set the file name. The file extension .vtk is added automatically.
|
virtual |
Set/Get the point based metric.
|
virtual |
Scale block parameters from voxels to millimetres.
|
virtual |
For writing out the transformed moving image.
|
virtual |
For writing out the transformed moving image.
|
virtual |
Set the transformed moving image pad value. Default 0.
|
virtual |
And when we are calculating the variance, if this is true, we use the gradient magnitude image and if this is false, we use the normal intensity image.
|
virtual |
To determine if we write the point set.
|
virtual |
For writing out the transformed moving image.
|
protectedvirtual |
Method to trim points.
|
protectedvirtual |
Writes the point set to file.