Download presentation
1
ITK Deformable Registration
Demons Methods
2
Deformable Registration
3
Deformable Transforms
4
Deformable Transformation
y y Transform x x Fixed Image Moving Image
5
Deformable Transformation
y y Transform x x Fixed Image Moving Image
6
Deformable Transformation
y y Transform x x Fixed Image Moving Image
7
Image Resampling Interpolator Fixed Image Resample Image Moving Image
Filter Moving Image Deformed Image Transform
8
Image Resampling Fixed Image Interpolator Resample Image Filter
Moving Image Orthogonal Basis Explicit Vector Field Splines High Order Polynomials Deformed Image Transform
9
Kernel Splines Transforms
Target Landmarks Source Landmarks Interpolated Values Displacement Vectors
10
Kernel Spline Transforms
Thin Plates Thin Plates R2 log R Elastic Body Elastic Body Reciprocal Volume
11
Kernel Spline Transforms
InsightApplications / ThinPlateSplines
12
Resampling: Kernel Spline Transform
#include "itkImage.h" #include "itkResampleImageFilter.h" #include "itkLinearInterpolateImageFunction.h" #include "itkElasticBodySplineKernelTransform.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::ResampleImageFilter< ImageType, ImageType > FilterType; FilterType::Pointer resampler = FilterType::New();
13
Resampling: Kernel Spline Transform
typedef itk::ElasticBodySplineKernelTransform< double, 2 > TransformType; TransformType::Pointer transform = TransformType::New(); resampler->SetInterpolator( interpolator ); resampler->SetInput( movingImage ); ImageType::RegionType region = fixedImage->GetBufferedRegion(); resampler->SetSize( region->GetSize() ); resampler->SetOutputStartIndex( region->GetIndex() ); resampler->SetOutputSpacing( fixedImage->GetSpacing() ); resampler->SetOutputOrigin( fixedImage->GetOrigin() );
14
Resampling: Kernel Spline Transform
resampler->SetTransform( transform ); typedef TransformType::PointSetType PointSetType; PointSetType::Pointer sourceLandmarks = PointSetType::New(); PointSetType::Pointer targetLandmarks = PointSetType::New(); transform->SetSourceLandmarks( sourceLandmarks ); transform->SetTargetLandmarks( targetLandmarks ); typedef PointSetType::PointsContainer PointsContainer; PointsContainer::Pointer sources = sourceLandmarks->GetPoints(); PointsContainer::Pointer targets = targetLandmarks->GetPoints();
15
Resampling: Kernel Spline Transform
sources->Reserve( numberOfLandmarks ); targets->Reserve( numberOfLandmarks ); typedef PointSetType::PointType PointType; PointType source; PointType target; for( int i = 0; i < numberOfLandmarks; i++ ) { inputFile >> source; inputFile >> target; sources->InsertElement( i, source ); targets->InsertElement( i, target ); } transform->ComputeWMatrix(); resampler->Update(); // Finally !! ImageType::ConstPointer deformedImage = resampler->GetOutput();
16
Kernel Spline Transforms
VolView : ITK Plugin
17
Kernel Spline Transforms
VolView : ITK Plugin
18
Deformable Transforms
Deformation Fields
19
Deformation Vector Field
ParaView:
20
Warp Image Filter #include "itkImage.h"
#include "itkWarpImageFilter.h" #include "itkLinearInterpolateImageFunction.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::Vector< float, 2 > VectorType; typedef itk::Image< VectorType , 2 > VectorFieldType; VectorFieldType::Pointer vectorField = GetVectorField();
21
Warp Image Filter typedef itk::WarpImageFilter< ImageType,
VectorFieldType > WarpFilterType; WarpFilterType::Pointer warpFilter = WarpFilterType::New(); warpFilter->SetInterpolator( interpolator ); warpFilter->SetInput( movingImage ); warpFilter->SetOutputSpacing( fixedImage->GetSpacing() ); warpFilter->SetOutputOrigin( fixedImage->GetOrigin() ); warpFilter->SetDeformationField( vectorField ); warpFilter->Update(); ImageType::ConstPointer deformedImage = warpFilter->GetOutput();
22
Demons Registration Demons Registration
23
Demons is a Family of Algorithms
Demons Registration Demons is a Family of Algorithms
24
Demons Registration Demons Type 0
25
Demons Registration: Type 0
Transform Scene Model
26
Demons Registration: Type 0
Transform Scene Gradients Model
27
Demons Registration: Type 0
Transform Scene Forces Model
28
Demons Registration Demons Type 1
29
Demons Registration: Type 1
Transform Scene Vector Field Model
30
Demons Registration: Type 1
Transform Scene Vector Field Model
31
Demons Registration: Type 1
Transform Scene Vector Field Model
32
Demons Registration: Type 1
Transform Scene Vector Field Model
33
Demons Registration: Type 1
Gradient Scene
34
Demons Registration: Type 1
Current Estimation Intensity Space Gradient Desired Displacement Scene
35
Demons Registration: Type 1
Transform Scene Vector Field Model
36
Demons Registration: Type 1
Scene
37
Demons Registration: Type 1
Iterations Incremental Field Next Field Previous Field Gaussian Smoothing
38
Demons Registration: Type 1
( s – m ) . Grad(s) V = Grad(s)2 ( s – m ) . Grad(s) V = Grad(s)2 + (s-m)2 K
39
Image Registration Framework
Fixed Image Increment Computation PDE Solver Moving Image Interpolator Deformation Field Transform
40
Demons Registration: Type 1
#include "itkImage.h" #include "itkDemonsRegistrationFilter.h" typedef itk::Image< char, 2 > ImageType; ImageType::ConstPointer fixedImage = GetFixedImage(); ImageType::ConstPointer movingImage = GetMovingImage(); typedef itk::Vector< float, 2 > VectorType; typedef itk::Image< VectorType , 2 > VectorFieldType; typedef itk::DemonsRegistrationFilter< ImageType, VectorFieldType > DemonsType; DemonsType::Pointer demons = DemonsType::New();
41
Demons Registration: Type 1
demons->SetFixedImage( fixedImage ); demons->SetMovingImage( movingImage ); demons->SetNumberOfIterations( 200 ); demons->SetStandardDeviations( 1.0 ); demons->Update(); ImageType::ConstPointer vectorField = demons->GetOutput();
42
Demons Registration: Type 1
Scene
43
Demons Registration: Type 1
Model
44
Demons Registration: Type 1
After Registration
45
Demons Registration: Type 1
Scene
46
Demons Registration: Type 1
Scene
47
Fixed and Moving images should have the same intensity distribution !
Requirements Fixed and Moving images should have the same intensity distribution !
48
Eventual Preprocessing
- Histogram Matching Filter - Anisotropic Diffusion Filtering
49
Image Registration Framework
Fixed Image Increment Computation PDE Solver Moving Image Interpolator Deformation Field Transform Resampler Moving Registered
50
Enjoy ITK !
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.