itk registration methods
DESCRIPTION
ITK Registration Methods. Kitware Inc. Overview. Image Resampling Registration Framework Multi-Modality Multi-Resolution Deformable registration. Image Resampling. Why Resampling ?. Resampling is the Essence of Intensity-Based Image Registration. What is an Image ?. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/1.jpg)
ITK Registration Methods
Kitware Inc.
![Page 2: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/2.jpg)
Overview
Image Resampling
Registration Framework
Multi-Modality
Multi-Resolution
Deformable registration
![Page 3: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/3.jpg)
Image Resampling
![Page 4: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/4.jpg)
Why Resampling ?
Resamplingis the Essence
of Intensity-BasedImage Registration
![Page 5: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/5.jpg)
What is an Image ?
An Image is a sampling of a continuous field
using a discrete grid
![Page 6: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/6.jpg)
Image Origin & Spacing
Origin (Ox,Oy)
Spacing (Sy)
Spacing (Sx)
x
y
![Page 7: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/7.jpg)
Image Sampling Grid
Origin (Ox,Oy)
Spacing (Sy)
Spacing (Sx)
![Page 8: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/8.jpg)
Image Pixel
Origin (Ox,Oy)
Spacing (Sy)
Spacing (Sx)
Pixel Value
Pixel Region
![Page 9: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/9.jpg)
Image Indices
Origin (Ox,Oy)
Spacing (Sy)
Spacing (Sx)
[0,0] [1,0] [2,0] [3,0] [4,0] [5,0]
[0,1]
[0,2]
[0,3]
[0,4]
[0,5]
[4,7]
[0,6]
[0,7] Pixel Index
![Page 10: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/10.jpg)
Index to Physical Coordinates
Origin (Ox,Oy)
Spacing (Sy)
Spacing (Sx)
[0,0] [1,0] [2,0] [3,0] [4,0] [5,0]
[0,1]
[0,2]
[0,3]
[0,4]
[0,5]
[4,7]
[0,6]
[0,7] Pixel Index
P[0] = Index[0] x Spacing[0] + Origin[0]P[1] = Index[1] x Spacing[1] + Origin[1]
Index[0] = floor( ( P[0] - Origin[0] ) / Spacing[0] + 0.5 )Index[1] = floor( ( P[1] - Origin[1] ) / Spacing[1] + 0.5 )
![Page 11: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/11.jpg)
Image Region
Origin (Ox,Oy)
Spacing (Sy)
Spacing (Sx)
Pixel Value
Pixel Region
Image Region
![Page 12: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/12.jpg)
Image Region
Origin (Ox,Oy)
Spacing (Sy)
Spacing (Sx)
Image Region
Starting Index
Region Size
[2,3]
[3,5]
![Page 13: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/13.jpg)
Basic Resampling
ResamplingTrivial Cases
![Page 14: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/14.jpg)
Sub-Sampling by Half
Origin (Ox,Oy)
Spacing (Sy)
Spacing (Sx)
Image Region Spacing( 2 x Sy )
Spacing ( 2 x Sx )
![Page 15: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/15.jpg)
Sub-Sampling by Half
Origin (Ox,Oy)
New Origin(O’x,O’y)
New SpacingS’y
New SpacingS’x
![Page 16: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/16.jpg)
Super-Sampling by Double
Origin (Ox,Oy)
Spacing (Sy)
Spacing (Sx)
Image RegionSpacing ( Sy/2 )
Spacing ( Sx/2 )
![Page 17: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/17.jpg)
Super-Sampling by Double
Origin (Ox,Oy)
New SpacingS’x
New SpacingS’y
New Origin(O’x,O’y)
![Page 18: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/18.jpg)
Resampling in ITK
itk::ResampleImageFilter
![Page 19: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/19.jpg)
Resampling in ITK
Transform
Interpolator
Origin
Spacing
Region Start
Region Size
Resample Filter
Input Image Output Image
![Page 20: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/20.jpg)
Resample Image Filter#include "itkImage.h"#include "itkResampleImageFilter.h"#include "itkIdentityTransform.h“#include "itkLinearInterpolateImageFunction.h"
typedef itk::Image< char, 2 > ImageType;
ImageType::Pointer inputImage = GetImageSomeHow();
typedef itk::ResampleImageFilter< ImageType > FilterType;
FilterType::Pointer resampler = FilterType::New();
ImageType::SizeType size;size[0] = 200;size[1] = 300;
ImageType::IndexType start; start[0] = 0;start[1] = 0;
![Page 21: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/21.jpg)
Resample Image FilterImageType::PointType origin;origin[0] = 10.0; // millimetersorigin[1] = 25.5; // millimeters
ImageType::SpacingType spacing; spacing[0] = 2.0; // millimetersspacing[1] = 1.5; // millimeters
resampler->SetOutputSpacing( spacing );resampler->SetOutputOrigin( origin );
resampler->SetSize( size );resampler->SetOutputStartIndex( start );
resampler->SetDefaultPixelValue( 100 );
resampler->SetInput( inputImage );
![Page 22: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/22.jpg)
Resample Image Filtertypedef itk::LinearInterpolateImageFunction<
ImageType, double > InterpolatorType;
InterpolatorType::Pointer interpolator = InterpolatorType::New();
typedef itk::TranslationTransform< double, 2 > TransformType;
TransformType::Pointer transform = TransformType::New();
transform->SetIdentity();
resampler->SetInterpolator( interpolator );resampler->SetTransform( transform );
resampler->Update();
const ImageType * outputImage = resampler->GetOutput();
![Page 23: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/23.jpg)
Basic Registration
![Page 24: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/24.jpg)
Coordinate System Conversions
Image Grid
j
i
y
x
Physical Coordinates
y’
x’
Physical Coordinates
Image Grid
j
i
Space Transform
x
y
![Page 25: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/25.jpg)
Things I will not do…I will not register images in pixel space
I will not register images in pixel space
I will not register images in pixel space
I will not register images in pixel space
I will not register images in pixel space
I will not register images in pix
![Page 26: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/26.jpg)
Fixed Image & Moving Image
Fixed Image Grid
j
i
y
x
Fixed ImagePhysical Coordinates
y’
x’
Moving ImagePhysical Coordinates
Moving Image Grid
j
i
Space Transform
![Page 27: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/27.jpg)
Selecting Moving & Fixed Images
In principle the denomination of
Fixed Image & Moving Image
is arbitrary
In practice the moving image
is the one that will be resampled
into the fixed image
coordinate system
![Page 28: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/28.jpg)
Quiz #1
Images provided as part of the project: “Retrospective Image Registration Evaluation”, NIH, Project No. 8R01EB002124-03, Principal Investigator, J. Michael Fitzpatrick, Vanderbilt University, Nashville,
TN.
Images from the same patient
256 x 256 pixels
MRI-T2
128 x 128 pixels
PET
Moving Image ?
Fixed Image ?
![Page 29: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/29.jpg)
Quiz #2
Images provided as part of the project: “Retrospective Image Registration Evaluation”, NIH, Project No. 8R01EB002124-03, Principal Investigator, J. Michael Fitzpatrick, Vanderbilt University, Nashville,
TN.
Images from the same patient
256 x 256 pixels
MRI-T2
Scaling Transform
What scale factor ?
a) 2.0
b) 1.0
c) 0.5 128 x 128 pixels
PET
![Page 30: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/30.jpg)
Things I will not do…I will not register images in pixel space
I will not register images in pixel space
I will not register images in pixel space
I will not register images in pixel space
I will not register images in pixel space
I will not register images in pix
![Page 31: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/31.jpg)
Registration in ITK
ImageRegistrationFramework
MultiResolution
RegistrationFramework
PDEBased
Registration
FEMBased
Registration
Components
![Page 32: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/32.jpg)
Registration Framework
![Page 33: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/33.jpg)
Components
FixedImage
MovingImage
Metric
Transform
Interpolator
Optimizer
Registration Method
![Page 34: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/34.jpg)
Image Metrics
Mean Squares Normalized Correlation Mean Reciprocal Square Difference Mutual Information
- Viola-Wells- Mattes- Histogram based- Histogram normalized
![Page 35: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/35.jpg)
Transforms
Translation Scaling Rotation Rigid3D Rigid2D Affine BSplines Splines: TPS, EBS, VS
![Page 36: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/36.jpg)
Optimizers
Gradient Descent Regular Step Gradient Descent Conjugate Gradient Levenberg-Marquardt One plus One Evolutionary Algorithm
![Page 37: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/37.jpg)
Interpolators
Nearest Neighbor Linear BSpline
![Page 38: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/38.jpg)
Exercise 20
![Page 39: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/39.jpg)
Image Registration
Fixed Image Moving Image Registered Moving Image
![Page 40: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/40.jpg)
Image Registration
#include ”itkImageRegistrationMethod.h”#include ”itkTranslationTransform.h”#include ”itkMeanSquaresImageToImageMetric.h”#include ”itkLinearInterpolateImageFunction.h”#include ”itkRegularStepGradientDescentOptimizer.h”#include ”itkImage.h”#include ”itkImageFileReader.h”#include ”itkImageFileWriter.h”#include ”itkResampleImageFilter.h”
![Page 41: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/41.jpg)
Image Registration
const unsigned int Dimension = 2;
typedef unsigned char PixelType;
typedef itk::Image< PixelType , Dimension > FixedImageType;
typedef itk::Image< PixelType , Dimension > MovingImageType;
typedef itk::TranslationTransform< double, Dimension > TransformType;
typedef itk::RegularStepGradientDescentOptimizer OptimizerType;
typedef itk::LinearInterpolateImageFunction< MovingImageType , double > InterpolatorType;
typedef itk::MeanSquaresImageToImageMetric< FixedImageType , MovingImageType > MetricType;
typedef itk::ImageRegistrationMethod< FixedImageType , MovingImageType > RegistrationType;
![Page 42: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/42.jpg)
Image RegistrationTransformType::Pointer transform = TransformType::New();
OptimizerType::Pointer optimizer = OptimizerType::New();
InterpolatorType::Pointer interpolator = InterpolatorType::New();
MetricType::Pointer metric = MetricType::New();
RegistrationType::Pointer registrator = RegistrationType::New();
registrator->SetTransform( transform );
registrator->SetOptimizer( optimizer );
registrator->SetInterpolator( interpolator );
registrator->SetMetric( metric );
registrator->SetFixedImage( fixedImageReader->GetOutput() );
registrator->SetMovingImage( movingImageReader->GetOutput() );
![Page 43: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/43.jpg)
Image Registrationregistrator->SetFixedImageRegion( fixedImageReader->GetOutput()->GetBufferedRegion() );
typedef RegistrationType::ParametersType ParametersType;
transform->SetIdentity();
registrator->SetInitialTransformParameters( transform->GetParameters() );
optimizer->SetMaximumStepLength( 4.00 );
optimizer->SetMinimumStepLength( 0.01 );
optimizer->SetNumberOfIterations( 100 );
optimizer->MaximizeOff();
![Page 44: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/44.jpg)
Image Registration
try { registrator->StartRegistration (); }catch( itk::ExceptionObject & excp ) { std::cerr << “Error in registration” << std::endl; std::cerr << excp << std::endl; }
transform->SetParameters( registrator->GetLastTransformParameters() );
![Page 45: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/45.jpg)
Image Registrationtypedef itk::ResampleImageFilter< FixedImageType , MovingImageType > ResamplerType;
ResamplerType ::Pointer resampler = ResamplerType::New();
resampler->SetTransform ( transform );
resampler->SetInput( movingImageReader->GetOutput() );
FixedImageType ::Pointer fixedImage = fixedImageReader->GetOutput();
resampler->SetOrigin( fixedImage->GetOrigin() );
resampler->SetSpacing( fixedImage->GetSpacing() );
resampler->SetSize( fixedImage->GetLargestPossibleRegion()->GetSize() );
resampler->Update();
![Page 46: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/46.jpg)
Tracking theRegistration Process
![Page 47: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/47.jpg)
Observing Registration#include ”itkCommand.h”
class CommandIteration : public itk::Command {
public: typedef CommandIteration Self;
typedef itk::Command SuperClass;
typedef itk::SmartPointer< Self > Pointer;
itkNewMacro( Self );
protected:
CommandIteration() {};
public:
typedef itk::RegularStepGradientDescentOptimizer OptimizerType;
typedef const OptimizerType * OptimizerPointer;
![Page 48: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/48.jpg)
Observing Registrationvoid Execute( itk::Object * caller, const itk::EventObject & event ) { this-> Execute( (const itk::Object *) caller, event ); }
void Execute( const itk::Object * caller, const itk::EventObject & event ) { OptimizerPointer optimizer = dynamic_cast< OptimizerPointer >( caller );
if( typeid( event ) == typeid( itk::IterationEvent ) ) { std::cout << optimizer->GetCurrentIteration() << “ : “; std::cout << optimizer->GetValue() << “ : “; std::cout << optimizer->GetCurrentPosition() << std::endl; } }
![Page 49: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/49.jpg)
Image Registration
CommandIteration::Pointer observer = CommandIteration::New();
optimizer->AddObserver( itk::IterationEvent(), observer )
try { registrator->StartRegistration (); }catch( itk::ExceptionObject & excp ) { std::cerr << “Error in registration” << std::endl; std::cerr << excp << std::endl; }
![Page 50: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/50.jpg)
Image Similarity Metrics
![Page 51: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/51.jpg)
Image Metrics
How similar is
image A to image B ?
![Page 52: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/52.jpg)
Image Metrics
Does Image B
matches Image A better
than Image C ?
![Page 53: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/53.jpg)
Image Metrics
Image A Image CImage B
Match( A , B ) Match( A , C )><
![Page 54: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/54.jpg)
Image Metrics
Match( A , B )
Simplest Metric
Mean Squared Differences
![Page 55: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/55.jpg)
Mean Squared Differences
Image A Image B
For each pixel in A
Difference( index ) = A( index ) – B( index )
Sum += Difference( index ) 2
Match( A , B ) = Sum / numberOfPixels
![Page 56: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/56.jpg)
For each pixel in the Fixed Image
Fixed Image Grid
j
i
y
x
Fixed ImagePhysical Coordinates
y’
x’
Moving ImagePhysical Coordinates
Moving Image Grid
j
i
Space Transform
![Page 57: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/57.jpg)
Image Metrics
FixedImage
MovingImage
Metric
Transform
Interpolator
Value
Parameters
![Page 58: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/58.jpg)
Mean Squared Differences#include "itkImage.h"#include "itkMeanSquaresImageToImageMetric.h"#include "itkLinearInterpolateImageFunction.h"#include "itkTranslationTransform.h"
typedef itk::Image< char, 2 > ImageType;
ImageType::ConstPointer fixedImage = GetFixedImage(); ImageType::ConstPointer movingImage = GetMovingImage();
typedef itk::LinearInterpolateImageFunction< ImageType, double > InterpolatorType;
InterpolatorType::Pointer interpolator = InterpolatorType::New();
typedef itk::TranslationTransform< double, 2 > TransformType;
TransformType::Pointer transform = TransformType::New();
![Page 59: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/59.jpg)
Mean Squared Differencestypedef itk::MeanSquaresImageToImageMetric<
ImageType, ImageType > MetricType;
MetricType::Pointer metric = MetricType::New();
metric->SetInterpolator( interpolator );metric->SetTransform( transform );
metric->SetFixedImage( fixedImage );metric->SetMovingImage( movingImage );
MetricType::TransformParametersType translation( Dimension );
translation[0] = 12;translation[1] = 27;
double value = metric->GetValue( translation );
![Page 60: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/60.jpg)
Mean Squared Differences
MetricType::TransformParametersType translation( Dimension );
double value[21][21];
for( int dx = 0; dx <= 20; dx++) {
for( int dy = 0; dy <= 20; dy++) {
translation[0] = dx;translation[1] = dy;
value[dx][dy] = metric->GetValue( translation );
}}
![Page 61: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/61.jpg)
Evaluating many matches
y
Fixed Image
Transform
x
y
Moving Image
x
![Page 62: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/62.jpg)
Plotting the MetricMean Squared Differences
Transform Parametric Space
![Page 63: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/63.jpg)
Plotting the MetricMean Squared Differences
Transform Parametric Space
![Page 64: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/64.jpg)
Evaluating many matches
y
Fixed Image
Transform
x
y
Moving Image
x
(-15,-25) mm
![Page 65: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/65.jpg)
Plotting the MetricMean Squared Differences
Transform Parametric Space
![Page 66: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/66.jpg)
Plotting the MetricMean Squared Differences
Transform Parametric Space
![Page 67: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/67.jpg)
The Best Transform Parameters
Evaluation of thefull parameter space
is equivalent to performingoptimization by
exhaustive search
![Page 68: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/68.jpg)
The Best Transform Parameters
Very Safe
but
Very Slow
![Page 69: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/69.jpg)
The Best Transform Parameters
Better Optimization Methods
for example
Gradient Descent
![Page 70: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/70.jpg)
Image Registration Framework
FixedImage
MovingImage
Metric
Transform
Interpolator Optimizer
Parameters
![Page 71: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/71.jpg)
Gradient Descent Optimizerf( x , y )
S = L ∙ G( x , y )f( x , y )
∆
G( x , y ) =
S = Step
L = LearningRate
![Page 72: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/72.jpg)
Gradient Descent Optimizerf( x , y )
S = L ∙ G( x , y )f( x , y )
∆
G( x , y ) =
![Page 73: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/73.jpg)
Gradient Descent Optimizerf( x , y )
S = L ∙ G( x , y )f( x , y )
∆
G( x , y ) =
L too large
![Page 74: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/74.jpg)
Gradient Descent Optimizerf( x , y )
S = L ∙ G( x , y )f( x , y )
∆
G( x , y ) =
L too small
![Page 75: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/75.jpg)
Gradient Descent Optimizer
What’s wrong with this algorithm ?
![Page 76: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/76.jpg)
Gradient Descent Optimizer
S Units ? = millimeters
f(x,y) Units ? = intensity
G(x,y) Units ? = intensity / millimeters
L Units ? = millimeters2 / intensity
S = L ∙ G( x , y )
![Page 77: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/77.jpg)
Gradient Descent Optimizerf( x )S = L ∙ G( x )
1
1
![Page 78: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/78.jpg)
Gradient Descent Optimizerf( x )
1 1
S = L ∙ G( x )
S = Large in high gradients
S = Small in low gradients
![Page 79: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/79.jpg)
Gradient Descent Optimizerf( x )S = L ∙ G( x )
Works great with this function
Works badly with this function
![Page 80: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/80.jpg)
Gradient Descent Variant
Driving Safe !
![Page 81: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/81.jpg)
Regular Step Gradient Descent f( x )
S = D ∙ G( x )^
Di = Di-1 / 2.0
D1
If G changes direction
D1
D1
D2
![Page 82: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/82.jpg)
Regular Step Gradient Descent f( x )
S = D ∙ G( x )^
D1
User Selects D1
D1
D1
D2
User Selects Dstop
User Selects Gstop
![Page 83: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/83.jpg)
Optimizers are like a car
Watch while you are driving !
![Page 84: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/84.jpg)
Watch over your optimizer
Example:
Optimizer registering an image with itself starting at (-15mm, -25mm)
![Page 85: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/85.jpg)
Plotting the Optimizer’s PathMean Squared Differences
Step Length = 1.0 mm
![Page 86: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/86.jpg)
Plotting the Optimizer’s PathMean Squared Differences
Step Length = 2.0 mm
![Page 87: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/87.jpg)
Plotting the Optimizer’s PathMean Squared Differences
Step Length = 5.0 mm
![Page 88: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/88.jpg)
Plotting the Optimizer’s PathMean Squared Differences
Step Length = 10.0 mm
![Page 89: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/89.jpg)
Plotting the Optimizer’s PathMean Squared Differences
Step Length = 20.0 mm
![Page 90: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/90.jpg)
Plotting the Optimizer’s PathMean Squared Differences
Step Length = 40.0 mm
![Page 91: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/91.jpg)
Watch over your optimizer
Example:
Optimizer registering an image shifted by (-15mm, -25mm)
The optimizer starts at (0mm,0mm)
![Page 92: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/92.jpg)
Plotting the Optimizer’s PathMean Squared Differences
Step Length = 1.0 mm
![Page 93: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/93.jpg)
Plotting the Optimizer’s PathMean Squared Differences
Step Length = 2.0 mm
![Page 94: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/94.jpg)
Plotting the Optimizer’s PathMean Squared Differences
Step Length = 5.0 mm
![Page 95: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/95.jpg)
Plotting the Optimizer’s PathMean Squared Differences
Step Length = 10.0 mm
![Page 96: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/96.jpg)
Plotting the Optimizer’s PathMean Squared Differences
Step Length = 20.0 mm
![Page 97: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/97.jpg)
Plotting the Optimizer’s PathMean Squared Differences
Step Length = 40.0 mm
![Page 98: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/98.jpg)
Multi - Modality
![Page 99: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/99.jpg)
Multi-Modality Registration
Fixed Image Moving Image Registered Moving Image
![Page 100: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/100.jpg)
Multiple Image Modalities
Number of pairs
![Page 101: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/101.jpg)
Multiple Image Modalities
More possible pairs
![Page 102: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/102.jpg)
Mutual Information
![Page 103: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/103.jpg)
Mutual Information
![Page 104: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/104.jpg)
Exercise 21
![Page 105: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/105.jpg)
Image Registration
Fixed Image Moving Image Registered Moving Image
![Page 106: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/106.jpg)
Image Registration
#include ”itkImageRegistrationMethod.h”#include ”itkTranslationTransform.h”#include ”itkMattesMutualInformationImageToImageMetric.h”#include ”itkLinearInterpolateImageFunction.h”#include ”itkRegularStepGradientDescentOptimizer.h”#include ”itkImage.h”#include ”itkImageFileReader.h”#include ”itkImageFileWriter.h”#include ”itkResampleImageFilter.h”
![Page 107: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/107.jpg)
Image Registration
const unsigned int Dimension = 2;
typedef unsigned char PixelType;
typedef itk::Image< PixelType , Dimension > FixedImageType;
typedef itk::Image< PixelType , Dimension > MovingImageType;
typedef itk::TranslationTransform< double, Dimension > TransformType;
typedef itk::RegularStepGradientDescentOptimizer OptimizerType;
typedef itk::LinearInterpolateImageFunction< MovingImageType , double > InterpolatorType;
typedef itk::MattesMutualInformationImageToImageMetric< FixedImageType , MovingImageType > MetricType;
typedef itk::ImageRegistrationMethod< FixedImageType , MovingImageType > RegistrationType;
![Page 108: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/108.jpg)
Image RegistrationTransformType::Pointer transform = TransformType::New();
OptimizerType::Pointer optimizer = OptimizerType::New();
InterpolatorType::Pointer interpolator = InterpolatorType::New();
MetricType::Pointer metric = MetricType::New();
RegistrationType::Pointer registrator = RegistrationType::New();
registrator->SetTransform( transform );
registrator->SetOptimizer( optimizer );
registrator->SetInterpolator( interpolator );
registrator->SetMetric( metric );
registrator->SetFixedImage( fixedImageReader->GetOutput() );
registrator->SetMovingImage( movingImageReader->GetOutput() );
![Page 109: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/109.jpg)
Image Registrationregistrator->SetFixedImageRegion( fixedImageReader->GetOutput()->GetBufferedRegion() );
typedef RegistrationType::ParametersType ParametersType;
transform->SetIdentity();
registrator->SetInitialTransformParameters( transform->GetParameters() );
optimizer->SetMaximumStepLength( 4.00 );
optimizer->SetMinimumStepLength( 0.05 );
optimizer->SetNumberOfIterations( 200 );
optimizer->MaximizeOn();
![Page 110: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/110.jpg)
Image Registration
metric->SetNumberOfHistogramBins( 20 ); // Metric specificmetric->SetNumberOfSpatialSamples( 10000 ); // Metric specific try { registrator->StartRegistration (); }catch( itk::ExceptionObject & excp ) { std::cerr << “Error in registration” << std::endl; std::cerr << excp << std::endl; }
transform->SetParameters( registrator->GetLastTransformParameters() );
![Page 111: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/111.jpg)
Image Registrationtypedef itk::ResampleImageFilter< FixedImageType , MovingImageType > ResamplerType;
ResamplerType ::Pointer resampler = ResamplerType::New();
resampler->SetTransform ( transform );
resampler->SetInput( movingImageReader->GetOutput() );
FixedImageType ::Pointer fixedImage = fixedImageReader->GetOutput();
resampler->SetOrigin( fixedImage->GetOrigin() );
resampler->SetSpacing( fixedImage->GetSpacing() );
resampler->SetSize( fixedImage->GetLargestPossibleRegion()->GetSize() );
resampler->Update();
![Page 112: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/112.jpg)
Rotation – TranslationParameter Scaling
![Page 113: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/113.jpg)
Exercise 22
![Page 114: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/114.jpg)
Image Registration
Fixed Image Moving Image Registered Moving Image
![Page 115: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/115.jpg)
Image Registration
#include ”itkImageRegistrationMethod.h”#include ”itkCenteredRigid2DTransform.h”#include ”itkMeanSquaresImageToImageMetric.h”#include ”itkLinearInterpolateImageFunction.h”#include ”itkRegularStepGradientDescentOptimizer.h”#include ”itkCenteredTransformInitializer.h”#include ”itkImage.h”#include ”itkImageFileReader.h”#include ”itkImageFileWriter.h”#include ”itkResampleImageFilter.h”
![Page 116: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/116.jpg)
Image Registrationconst unsigned int Dimension = 2;typedef unsigned char PixelType;
typedef itk::Image< PixelType , Dimension > FixedImageType;typedef itk::Image< PixelType , Dimension > MovingImageType;
typedef itk::CenteredRigid2DTransform< double > TransformType;
typedef itk:: CenteredTransformInitializer< TransformType , FixedImageType , MovingImageType > InitializerType;
![Page 117: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/117.jpg)
Image RegistrationTransformType::Pointer transform = TransformType::New();
InitializerType::Pointer initializer = InitializerType::New();
OptimizerType::Pointer optimizer = OptimizerType::New();
InterpolatorType::Pointer interpolator = InterpolatorType::New();
MetricType::Pointer metric = MetricType::New();
RegistrationType::Pointer registrator = RegistrationType::New();
registrator->SetTransform( transform );
registrator->SetOptimizer( optimizer );
registrator->SetInterpolator( interpolator );
registrator->SetMetric( metric );
registrator->SetFixedImage( fixedImageReader->GetOutput() );
registrator->SetMovingImage( movingImageReader->GetOutput() );
![Page 118: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/118.jpg)
Image Registration
registrator->SetFixedImageRegion( fixedImageReader->GetOutput()->GetBufferedRegion() );
initializer->SetTransform ( transform );
initializer->SetFixedImage( fixedImageReader->GetOutput() );
initializer->SetMovingImage( movingImageReader->GetOutput() );
initializer->MomentsOn();
initializer->InitializeTransform();
registrator->SetInitialTransformParameters( transform->GetParameters() );
![Page 119: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/119.jpg)
Image Registration
typedef OptimizerType::ScaleType OptimizerScalesType;
OptimizerScalesType optimizerScales( optimizer->SetMaximumStepLength() );
const double translationScale = 1.0 / 1000.0 ;
optimizerScales[ 0 ] = 1.0;
optimizerScales[ 1 ] = translationScale;
optimizerScales[ 2 ] = translationScale;
optimizerScales[ 3 ] = translationScale;
optimizerScales[ 4 ] = translationScale;
optimizer->SetScales( optimizerScales );
![Page 120: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/120.jpg)
Image Registration
try { registrator->StartRegistration (); }catch( itk::ExceptionObject & excp ) { std::cerr << “Error in registration” << std::endl; std::cerr << excp << std::endl; }
transform->SetParameters( registrator->GetLastTransformParameters() );
![Page 121: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/121.jpg)
Image Registrationtypedef itk::ResampleImageFilter< FixedImageType , MovingImageType > ResamplerType;
ResamplerType ::Pointer resampler = ResamplerType::New();
resampler->SetTransform ( transform );
resampler->SetInput( movingImageReader->GetOutput() );
FixedImageType ::Pointer fixedImage = fixedImageReader->GetOutput();
resampler->SetOrigin( fixedImage->GetOrigin() );
resampler->SetSpacing( fixedImage->GetSpacing() );
resampler->SetSize( fixedImage->GetLargestPossibleRegion()->GetSize() );
resampler->Update();
![Page 122: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/122.jpg)
Multi - Resolution
![Page 123: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/123.jpg)
Multi-ResolutionRegistration Framework
Improve speedAccuracyRobustness
![Page 124: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/124.jpg)
Multi-ResolutionRegistration Framework
Registration
Registration
Registration
Fixed Image Moving Image
![Page 125: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/125.jpg)
Multi-ResolutionRegistration Framework
Flexible framework allows change of
Parameters Components
between resolution levels
![Page 126: ITK Registration Methods](https://reader035.vdocuments.net/reader035/viewer/2022081419/56815a83550346895dc7f24b/html5/thumbnails/126.jpg)
Enjoy ITK !