CSci 6971: Image Registration Lecture 10: Registration Components February 13, 2004 - PowerPoint PPT Presentation

About This Presentation
Title:

CSci 6971: Image Registration Lecture 10: Registration Components February 13, 2004

Description:

InitializerType::Pointer initializer = InitializerType::New ... initializer- InitializeTransform(); registrator- SetInitialTransformParameters ... – PowerPoint PPT presentation

Number of Views:22
Avg rating:3.0/5.0
Slides: 64
Provided by: sysa155
Learn more at: http://www.cs.rpi.edu
Category:

less

Transcript and Presenter's Notes

Title: CSci 6971: Image Registration Lecture 10: Registration Components February 13, 2004


1
CSci 6971 Image Registration Lecture 10
Registration ComponentsFebruary 13, 2004
Prof. Chuck Stewart, RPI Dr. Luis Ibanez, Kitware
2
Registration Components
Basic Registration Framework
3
Image Registration Framework
FixedImage
Metric
MovingImage
Interpolator
Optimizer
Transform
Parameters
4
Image Registration
include itkImageRegistrationMethod.h include
itkTranslationTransform.h include
itkMeanSquaresImageToImageMetric.h include
itkLinearInterpolateImageFunction.h include
itkRegularStepGradientDescentOptimizer.h includ
e itkImage.h include itkImageFileReader.h in
clude itkImageFileWriter.h include
itkResampleImageFilter.h
5
Image Registration
const unsigned int Dimension 2 typedef
unsigned char PixelType typedef itkImagelt
PixelType , Dimension gt
FixedImageType typedef itkImagelt PixelType ,
Dimension gt
MovingImageType typedef itkTranslationTransf
ormlt double, Dimension gt TransformType type
def itkRegularStepGradientDescentOptimizer
OptimizerType typedef
itkLinearInterpolateImageFunctionlt
MovingImageType ,
double gt InterpolatorType typedef
itkMeanSquaresImageToImageMetriclt
FixedImageType , MovingImageType gt
MetricType typedef itkImageRegistratio
nMethodlt FixedImageType
, MovingImageType gt RegistrationType
6
Image Registration
TransformTypePointer transform
TransformTypeNew() OptimizerTypePointer
optimizer OptimizerTypeNew() Interpolato
rTypePointer interpolator
InterpolatorTypeNew() MetricTypePointer
metric MetricTypeNew() Regist
rationTypePointer registrator
RegistrationTypeNew() registrator-gtSetTransfor
m( transform ) registrator-gtSetOptimizer(
optimizer ) registrator-gtSetInterpolator(
interpolator ) registrator-gtSetMetric(
metric ) registrator-gtSetFixedImage(
fixedImageReader-gtGetOutput()
) registrator-gtSetMovingImage(
movingImageReader-gtGetOutput() )
7
Image Registration
registrator-gtSetFixedImageRegion(
fixedImageReader-gtGetOutput()-gtGetBufferedR
egion() ) typedef RegistrationTypeParameters
Type ParametersType transform-gtSetIdentity()
registrator-gtSetInitialTransformParameters(

transform-gtGetParameters()
) optimizer-gtSetMaximumStepLength( 4.00 )
optimizer-gtSetMinimumStepLength( 0.01
) optimizer-gtSetNumberOfIterations( 100
) optimizer-gtMaximizeOff()
8
Image Registration
try registrator-gtStartRegistrati
on () catch( itkExceptionObject excp
) stdcerr ltlt Error in
registration ltlt stdendl stdcerr
ltlt excp ltlt stdendl transform-gtSetParam
eters(
registrator-gtGetLastTransformParameters() )
9
Image Registration Framework
FixedImage
Metric
MovingImage
Optimizer
Interpolator
Parameters
Transform
Resampler
MovingRegistered
10
Image Registration
typedef itkResampleImageFilterlt
FixedImageType , MovingImageType gt
ResamplerType ResamplerType Pointer
resampler ResamplerTypeNew() resampler-gtSet
Transform ( transform ) resampler-gtSetInput(
movingImageReader-gtGetOutput() ) FixedImageType
Pointer fixedImage fixedImageReader-gtGetOut
put() resampler-gtSetOrigin( fixedImage-gtGetOrigin
() ) resampler-gtSetSpacing( fixedImage-gtGetSpacin
g() ) resampler-gtSetSize(
fixedImage-gtGetLargestPossibleRegion()-gtGetSize
() ) resampler-gtUpdate()
11
Image Registration
Tracking the Registration Process
12
Observing Registration
include itkCommand.h class CommandIteration
public itkCommand public typedef
CommandIteration Self typedef itkCommand
SuperClass typedef itkSmartPointerlt
Self gt Pointer itkNewMacro( Self
) protected CommandIteration()
public typedef itkRegularStepGradientD
escentOptimizer OptimizerType typedef
const OptimizerType
OptimizerPointer
13
Observing Registration
  • void Execute( itkObject caller, const
    itkEventObject event ) this-gt
    Execute( (const itkObject ) caller, event
    )
  • void Execute( const itkObject caller, const
    itkEventObject event )
    OptimizerPointer optimizer
    dynamic_castlt
    OptimizerPointer gt( caller )
  • if( typeid( event ) typeid(
    itkIterationEvent ) )
  • stdcout ltlt optimizer-gtGetCurrentIterat
    ion() ltlt
  • stdcout ltlt optimizer-gtGetValue() ltlt
  • stdcout ltlt optimizer-gtGetCurrentPositi
    on() ltlt stdendl

14
Observing Registration
  • CommandIterationPointer observer
    CommandIterationNew()
  • optimizer-gtAddObserver( itkIterationEvent(),
    observer )
  • try registrator-gtStartRegistrati
    on ()
  • catch( itkExceptionObject excp )
  • stdcerr ltlt Error in registration
    ltlt stdendl stdcerr ltlt excp ltlt
    stdendl

15
Registration dirty little secrets
Rotation TranslationParameter Scaling
16
Registration dirty little secrets
17
Gradient Descent Optimizer
f( x , y )
S L G( x , y )
18
Gradient Descent Optimizer
f( x , y )
S L G( x , y )
19
Gradient Descent Optimizer
f( x , y )
S L G( x , y )
20
Gradient Descent Optimizer
f( x , y )
S L G( x , y )
21
Gradient Descent Optimizer
f( x , y )
S L G( x , y )
22
Gradient Descent Optimizer
f( x , y )
How about a factor 1100 ?
S L G( x , y )
23
Radians Millimeters
y
x
1.57 rad
0.0 rad
180 mm
24
Radians Millimeters
y
1.57 rad
1100
180 mm
x
1.57 rad
0.0 rad
180 mm
25
Other Transforms
Centered Rigid 2D
26
Rotation around the Center
y
y
Transform
10o
x
x
Fixed
Moving
27
Centered Rigid 2D Transform
include itkImageRegistrationMethod.h include
itkCenteredRigid2DTransform.h include
itkMeanSquaresImageToImageMetric.h include
itkLinearInterpolateImageFunction.h include
itkRegularStepGradientDescentOptimizer.h includ
e itkCenteredTransformInitializer.h include
itkImage.h include itkImageFileReader.h incl
ude itkImageFileWriter.h include
itkResampleImageFilter.h
28
Centered Rigid 2D Transform
const unsigned int Dimension 2 typedef
unsigned char PixelType typedef itkImagelt
PixelType , Dimension gt
FixedImageType typedef itkImagelt PixelType ,
Dimension gt MovingImageType typedef
itkCenteredRigid2DTransformlt double gt
TransformType typedef itk
CenteredTransformInitializerlt

TransformType ,
FixedImageType ,

MovingImageType

gt InitializerType
29
Centered Rigid 2D Transform
TransformTypePointer transform
TransformTypeNew() InitializerTypePointer
initializer InitializerTypeNew() Opt
imizerTypePointer optimizer
OptimizerTypeNew() InterpolatorTypePointer
interpolator InterpolatorTypeNew() MetricTy
pePointer metric
MetricTypeNew() RegistrationTypePointer
registrator RegistrationTypeNew() regist
rator-gtSetTransform( transform )
registrator-gtSetOptimizer( optimizer )
registrator-gtSetInterpolator( interpolator )
registrator-gtSetMetric( metric
) registrator-gtSetFixedImage(
fixedImageReader-gtGetOutput() ) registrator-gtSetM
ovingImage( movingImageReader-gtGetOutput() )
30
Centered Transform Initializer
Geometry On
y
y
Transform
x
x
Fixed Image
Moving Image
31
Centered Transform Initializer
Moments On
y
y
Transform
x
x
Fixed Image
Moving Image
Xm Sum( x I ) / Sum( I )
Ym Sum( y I ) / Sum( I )
32
Centered Rigid 2D Transform
registrator-gtSetFixedImageRegion(
fixedImageReader-gtGetOutput()-gtGetBuffe
redRegion() ) initializer-gtSetTransform (
transform ) initializer-gtSetFixedImage(
fixedImageReader-gtGetOutput()
) initializer-gtSetMovingImage(
movingImageReader-gtGetOutput() ) initializer-gtMo
mentsOn() initializer-gtInitializeTransform() r
egistrator-gtSetInitialTransformParameters(

transform-gtGetParameters() )
33
Centered Rigid 2D Transform
Array of Parameters
y
Angle Center X Center Y Trans X Trans Y
P 0 P 1 P 2 P 3 P 4
x
34
Centered Rigid 2D Transform
typedef OptimizerTypeScaleType
OptimizerScalesType OptimizerScalesType
optimizerScales(
optimizer-gtSetMaximumStepLength(
) ) const double translationScale 1.0 /
1000.0 optimizerScales 0 1.0
optimizerScales 1 translationScale
optimizerScales 2 translationScale
optimizerScales 3 translationScale
optimizerScales 4 translationScale
optimizer-gtSetScales( optimizerScales )
35
Centered Rigid 2D Transform
try registrator-gtStartRegistrati
on () catch( itkExceptionObject excp
) stdcerr ltlt Error in
registration ltlt stdendl stdcerr
ltlt excp ltlt stdendl transform-gtSetParam
eters(
registrator-gtGetLastTransformParameters() )
36
Image Registration Framework
FixedImage
Metric
MovingImage
Optimizer
Interpolator
Parameters
Transform
Resampler
MovingRegistered
37
Centered Rigid 2D Transform
typedef itkResampleImageFilterlt
FixedImageType , MovingImageType gt
ResamplerType ResamplerType Pointer
resampler ResamplerTypeNew() resampler-gtSet
Transform ( transform ) resampler-gtSetInput(
movingImageReader-gtGetOutput() ) FixedImageType
Pointer fixedImage fixedImageReader-gtGetOut
put() resampler-gtSetOrigin( fixedImage-gtGetOrigi
n() ) resampler-gtSetSpacing( fixedImage-gtGetSpaci
ng() ) resampler-gtSetSize(
fixedImage-gtGetLargestPossibleRegion()-gtGetSiz
e() ) resampler-gtUpdate()
38
Other Transforms
Affine 2D
39
Affine Transforms
M11 M12 T1 M21
M22 T2
40
Affine Transforms
Qx M11 M12 Px
T1 Qy M21 M22
Py T2



41
Affine Transform Shearing
Qx 1 a Px
T1 Qy 0
1 Py T2



42
Shearing Component
y
a
( x ay , y )
1
x
(x,y)
43
Shearing Component
y
y
x
x
44
Affine Transform Shearing
Qx 1 0 Px
T1 Qy b
1 Py T2



45
Shearing Component
y
( x , y bx )
b
(x,y)
1
x
46
Shearing Component
y
y
x
x
47
Coefficients - Orders of Magnitude
Qx 1.0 0.1 Px
100 Qy 0.1
1.0 Py 100



48
Affine Transform Rotation
Qx cos? -sin? Px
T1 Qy sin? cos?
Py T2



49
Affine Transform Scaling
Qx Sx 0 Px
T1 Qy 0
Sy Py T2



50
Affine Transform - Parameterization
M11 M12 T1 M21
M22 T2
P0 P1 P2 P3 P4 P5
51
Parameter Scaling
M11 M12 T1 M21
M22 T2
P0 P1 P2 P3 P4 P5
range 1.0 0.1 0.1 1.0 100 100
scale 1.0 10 10 1.0 0.01 0.01
52
Centered Affine Transform
include itkImageRegistrationMethod.h include
itkCenteredAffineTransform.h include
itkMeanSquaresImageToImageMetric.h include
itkLinearInterpolateImageFunction.h include
itkRegularStepGradientDescentOptimizer.h includ
e itkCenteredTransformInitializer.h include
itkImage.h include itkImageFileReader.h incl
ude itkImageFileWriter.h include
itkResampleImageFilter.h
53
Centered Affine Transform
const unsigned int Dimension 2 typedef
unsigned char PixelType typedef itkImagelt
PixelType , Dimension gt
FixedImageType typedef itkImagelt PixelType ,
Dimension gt MovingImageType typedef
itkCenteredAffineTransformlt double gt
TransformType typedef itk
CenteredTransformInitializerlt

TransformType ,
FixedImageType ,

MovingImageType

gt InitializerType
54
Centered Affine Transform
TransformTypePointer transform
TransformTypeNew() InitializerTypePointer
initializer InitializerTypeNew() Opt
imizerTypePointer optimizer
OptimizerTypeNew() InterpolatorTypePointer
interpolator InterpolatorTypeNew() MetricTy
pePointer metric
MetricTypeNew() RegistrationTypePointer
registrator RegistrationTypeNew() regist
rator-gtSetTransform( transform )
registrator-gtSetOptimizer( optimizer )
registrator-gtSetInterpolator( interpolator )
registrator-gtSetMetric( metric
) registrator-gtSetFixedImage(
fixedImageReader-gtGetOutput() ) registrator-gtSetM
ovingImage( movingImageReader-gtGetOutput() )
55
Centered Transform Initializer
Geometry On
y
y
Transform
x
x
Fixed Image
Moving Image
56
Centered Transform Initializer
Moments On
y
y
Transform
x
x
Fixed Image
Moving Image
Xm Sum( x I ) / Sum( I )
Ym Sum( y I ) / Sum( I )
57
Centered Affine Transform
registrator-gtSetFixedImageRegion(
fixedImageReader-gtGetOutput()-gtGetBuffe
redRegion() ) initializer-gtSetTransform (
transform ) initializer-gtSetFixedImage(
fixedImageReader-gtGetOutput()
) initializer-gtSetMovingImage(
movingImageReader-gtGetOutput() ) initializer-gtMo
mentsOn() initializer-gtInitializeTransform() r
egistrator-gtSetInitialTransformParameters(

transform-gtGetParameters() )
58
Affine Transform - Parameterization
M11 M12 T1 M21
M22 T2
P0 P1 P2 P3 P4 P5
59
Centered Affine Transform
typedef OptimizerTypeScaleType
OptimizerScalesType OptimizerScalesType
optimizerScales(
optimizer-gtGetNumberOfParameters
() ) optimizerScales 0 1.0
optimizerScales 1 10.0 optimizerScales
2 10.0 optimizerScales 3 1.0
optimizerScales 4 0.01 optimizerScales 5
0.01 optimizer-gtSetScales(
optimizerScales )
60
Centered Rigid 2D Transform
try registrator-gtStartRegistrati
on () catch( itkExceptionObject excp
) stdcerr ltlt Error in
registration ltlt stdendl stdcerr
ltlt excp ltlt stdendl transform-gtSetParam
eters(
registrator-gtGetLastTransformParameters() )
61
Image Registration Framework
FixedImage
Metric
MovingImage
Optimizer
Interpolator
Parameters
Transform
Resampler
MovingRegistered
62
Final Resampling
typedef itkResampleImageFilterlt
FixedImageType , MovingImageType gt
ResamplerType ResamplerType Pointer
resampler ResamplerTypeNew() resampler-gtSet
Transform ( transform ) resampler-gtSetInput(
movingImageReader-gtGetOutput() ) FixedImageType
Pointer fixedImage fixedImageReader-gtGetOut
put() resampler-gtSetOrigin( fixedImage-gtGetOrigin
() ) resampler-gtSetSpacing( fixedImage-gtGetSpacin
g() ) resampler-gtSetSize(
fixedImage-gtGetLargestPossibleRegion()-gtGetSize
() ) resampler-gtUpdate()
63
End
Enjoy ITK !
Write a Comment
User Comments (0)
About PowerShow.com