1 / 50

ITK Deformable Registration

ITK Deformable Registration. Demons Methods. Deformable Registration. Deformable Registration. Deformable Transforms. Deformable Transforms. Deformable Transformation. y. y. Transform. x. x. Fixed Image. Moving Image. Deformable Transformation. y. y. Transform. x. x.

bela
Télécharger la présentation

ITK Deformable Registration

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ITK Deformable Registration Demons Methods

  2. Deformable Registration Deformable Registration

  3. Deformable Transforms 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 FixedImage Resample Image Filter MovingImage DeformedImage Transform

  8. Image Resampling Interpolator FixedImage Resample Image Filter MovingImage High Order Polynomials Splines Explicit Vector Field Orthogonal Basis DeformedImage 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::RegionTyperegion = 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::PointersourceLandmarks = PointSetType::New(); PointSetType::PointertargetLandmarks = 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; PointTypesource; PointTypetarget; 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: http://www.paraview.org

  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::PointervectorField = 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 Demons Registration

  23. 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. Incremental Field Next Field Demons Registration: Type 1 Iterations 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 FixedImage Increment Computation PDE Solver MovingImage Interpolator DeformationField 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, 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 FixedImage Increment Computation PDE Solver MovingImage Interpolator DeformationField Transform Resampler MovingRegistered

  50. Enjoy ITK !

More Related