Presentation is loading. Please wait.

Presentation is loading. Please wait.

ITK Deformable Registration Demons Methods. Deformable Registration.

Similar presentations


Presentation on theme: "ITK Deformable Registration Demons Methods. Deformable Registration."— Presentation transcript:

1 ITK Deformable Registration Demons Methods

2 Deformable Registration

3 Deformable Transforms

4 Deformable Transformation y Fixed Image Transform x y Moving Image x

5 Deformable Transformation y Fixed Image Transform x y Moving Image x

6 Deformable Transformation y Fixed Image Transform x y Moving Image x

7 Image Resampling Fixed Image Moving Image Transform Interpolator Resample Image Filter Deformed Image

8 Image Resampling Fixed Image Moving Image Transform Interpolator Resample Image Filter Deformed Image High Order Polynomials Orthogonal Basis Splines Explicit Vector Field

9 Kernel Splines Transforms Source Landmarks Target Landmarks Displacement Vectors Interpolated Values

10 Kernel Spline Transforms Thin Plates Thin Plates R 2 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 ImageType; ImageType::ConstPointer fixedImage = GetFixedImage(); ImageType::ConstPointer movingImage = GetMovingImage(); typedef itk::LinearInterpolateImageFunction 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 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 ImageType; ImageType::ConstPointer fixedImage = GetFixedImage(); ImageType::ConstPointer movingImage = GetMovingImage(); typedef itk::LinearInterpolateImageFunction InterpolatorType; InterpolatorType::Pointer interpolator = InterpolatorType::New(); typedef itk::Vector VectorType; typedef itk::Image VectorFieldType; VectorFieldType::Pointer vectorField = GetVectorField();

21 Warp Image Filter typedef itk::WarpImageFilter< ImageType, 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

23 Demons is a Family of Algorithms

24 Demons Registration Demons Type 0

25 Demons Registration: Type 0 Scene Model Transform

26 Demons Registration: Type 0 Scene Model Transform Gradients

27 Demons Registration: Type 0 Scene Model Transform Forces

28 Demons Registration Demons Type 1

29 Demons Registration: Type 1 SceneModel Transform Vector Field

30 Demons Registration: Type 1 SceneModel Transform Vector Field

31 Demons Registration: Type 1 SceneModel Transform Vector Field

32 Demons Registration: Type 1 SceneModel Transform Vector Field

33 Demons Registration: Type 1 Scene Gradient

34 Demons Registration: Type 1 Scene Gradient Intensity Space Desired Displacement Current Estimation

35 Demons Registration: Type 1 SceneModel Transform Vector Field

36 Demons Registration: Type 1 Scene

37 Demons Registration: Type 1 Previous Field Incremental Field Next Field Iterations Gaussian Smoothin g

38 Demons Registration: Type 1 V = ( s – m ). Grad(s) Grad(s) 2 V = ( s – m ). Grad(s) Grad(s) 2 + (s-m) 2 K

39 Image Registration Framework Fixed Image Moving Image Increment Computation Transform Interpolator PDE Solver Deformation Field

40 Demons Registration: Type 1 #include "itkImage.h" #include "itkDemonsRegistrationFilter.h" typedef itk::Image ImageType; ImageType::ConstPointer fixedImage = GetFixedImage(); ImageType::ConstPointer movingImage = GetMovingImage(); typedef itk::Vector VectorType; typedef itk::Image 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 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 Moving Image Increment Computation Transform Interpolator PDE Solver Resampler Moving Registered Deformation Field

50 Enjoy ITK !


Download ppt "ITK Deformable Registration Demons Methods. Deformable Registration."

Similar presentations


Ads by Google