National Alliance for Medical Image Computing ITK The Image Segmentation and Registration Toolkit...

20
National Alliance for Medical Image Computing http://na-mic.org ITK The Image Segmentation and Registration Toolkit Julien Jomier Kitware Inc.

Transcript of National Alliance for Medical Image Computing ITK The Image Segmentation and Registration Toolkit...

Page 1: National Alliance for Medical Image Computing  ITK The Image Segmentation and Registration Toolkit Julien Jomier Kitware Inc.

National Alliance for Medical Image Computing http://na-mic.org

ITKThe Image Segmentation and

Registration Toolkit

Julien JomierKitware Inc.

Page 2: National Alliance for Medical Image Computing  ITK The Image Segmentation and Registration Toolkit Julien Jomier Kitware Inc.

National Alliance for Medical Image Computing http://na-mic.org

What is ITK?

• Open Source (BSD-Like)• Written in C++• Wrapping for Java, Python, Tcl• Cross-Plaform• Image Processing• Segmentation• Registration• No Graphical User Interface (GUI)• No Visualization

Page 3: National Alliance for Medical Image Computing  ITK The Image Segmentation and Registration Toolkit Julien Jomier Kitware Inc.

National Alliance for Medical Image Computing http://na-mic.org

C++ Glue Code

How to Integrate ITK in your application

ITK

ImageProcessing

GUI

{MFC,Qt,wxWinFLTK}

Visualization

{OpenGL, VTK}

Page 4: National Alliance for Medical Image Computing  ITK The Image Segmentation and Registration Toolkit Julien Jomier Kitware Inc.

National Alliance for Medical Image Computing http://na-mic.org

ITK Developers

Page 5: National Alliance for Medical Image Computing  ITK The Image Segmentation and Registration Toolkit Julien Jomier Kitware Inc.

National Alliance for Medical Image Computing http://na-mic.org

Generic Programming

• Example: Standard Template Library• Abstraction of types and behaviors• Templates- itkImage<PixelType,Dimension>- itkImage<unsigned short,3>

Images are N-Dimensional, arbitrary pixel types and dimension and pixel type must be defined at compile time.

Page 6: National Alliance for Medical Image Computing  ITK The Image Segmentation and Registration Toolkit Julien Jomier Kitware Inc.

National Alliance for Medical Image Computing http://na-mic.org

ReaderImage

FileGaussian

ImageWriter File

The Data Pipeline

• ITK has a Data Pipeline architecture

• Filters are connected together

• The output image is own by each filter

• Computation is performed on demand

Page 7: National Alliance for Medical Image Computing  ITK The Image Segmentation and Registration Toolkit Julien Jomier Kitware Inc.

National Alliance for Medical Image Computing http://na-mic.org

The Simplest, yet useful ITK program

#include “itkImage.h”

#include “itkImageFileReader.h”

#include “itkMedianImageFilter.h”

#include “itkImageFileWriter.h”

typedef itk::Image< unsigned char , 2 > ImageType;

typedef itk::ImageFileReader< ImageType > ReaderType;

typedef itk::MedianImageFilter< ImageType, ImageType > FilterType;

typedef itk::ImageFileWriter< ImageType > WriterType;

Page 8: National Alliance for Medical Image Computing  ITK The Image Segmentation and Registration Toolkit Julien Jomier Kitware Inc.

National Alliance for Medical Image Computing http://na-mic.org

The Simplest, yet useful ITK program

ReaderType::Pointer reader = ReaderType::New();

FilterType::Pointer filter = FilterType::New();

WriterType::Pointer writer = WriterType::New();

reader->SetFileName(“InputImage.png”);

filter->SetInput( reader->GetOutput() );

writer->SetInput( filter->GetOutput() );

writer->SetFileName(“OutputImage.png”);

writer->Update();

Page 9: National Alliance for Medical Image Computing  ITK The Image Segmentation and Registration Toolkit Julien Jomier Kitware Inc.

National Alliance for Medical Image Computing http://na-mic.org

Basic Filters

• Pixel-wiseArithmetic, Casting, Thresholding

• Mathematical morphology

• Noise reductionGaussian, Anisotropic diffusion

• Derivatives

Page 10: National Alliance for Medical Image Computing  ITK The Image Segmentation and Registration Toolkit Julien Jomier Kitware Inc.

National Alliance for Medical Image Computing http://na-mic.org

• Region Growing– ConfidenceConnected

– ConnectedThreshold

– IsolatedConnected

• Watersheds

• Level Sets– FastMarching

– ShapeDetection

– GeodesicActiveContours

– ThresholdSegmentation

– CannySegmentationLevelSet

Segmentation Methods

Page 11: National Alliance for Medical Image Computing  ITK The Image Segmentation and Registration Toolkit Julien Jomier Kitware Inc.

National Alliance for Medical Image Computing http://na-mic.org

Speed Curvature

Zero set, time = t

Zero set, time = t+1

Shape Detection

PDE Includes a curvature term Prevents leaking

Page 12: National Alliance for Medical Image Computing  ITK The Image Segmentation and Registration Toolkit Julien Jomier Kitware Inc.

National Alliance for Medical Image Computing http://na-mic.org

FeatureImage

Sigmoid

GradientMagnitude

Gradient

InputImage

BinaryMask

Smooth

PositiveLevelSet

Rescale

Balanced[-0.5,0.5]

InputLevelSet

ShapeDetection

InputFeature

Threshold

outputLevelSet

Shape Detection

Page 13: National Alliance for Medical Image Computing  ITK The Image Segmentation and Registration Toolkit Julien Jomier Kitware Inc.

National Alliance for Medical Image Computing http://na-mic.org

typedef itk::Image< float , 2 > ImageType;typedef itk::ShapeDetectionLevelSetImageFilter< ImageType,

ImageType > FilterType;

FilterType::Pointer shapeDetection = FilterType::New();

shapeDetection->SetInput( inputLevelSet ); shapeDetection->SetFeatureImage( speedImage );

shapeDetection->SetPropagationScaling( 1.0 ); shapeDetection->SetCurvatureScaling( 0.05 );

Shape Detection

Page 14: National Alliance for Medical Image Computing  ITK The Image Segmentation and Registration Toolkit Julien Jomier Kitware Inc.

National Alliance for Medical Image Computing http://na-mic.org

shapeDetection->SetMaximumRMSError( 0.001 ); shapeDetection->SetMaximumIterations( 400 );

shapeDetection->Update();

std::cout << shapeDetection->GetRMSChange() << std::endl; std::cout << shapeDetection->GetElapsedIterations() << std::endl;

thresholder->SetInput( shapeDetection->GetOutput() ); thresholder->SetLowerThreshold( -1e7 ); thresholder->SetUpperThreshold( 0.0 );

Shape Detection

Page 15: National Alliance for Medical Image Computing  ITK The Image Segmentation and Registration Toolkit Julien Jomier Kitware Inc.

National Alliance for Medical Image Computing http://na-mic.org

FixedImage

MovingImage

Metric

Transform

Interpolator

Optimizer

Registration Method

Registration Framework

Page 16: National Alliance for Medical Image Computing  ITK The Image Segmentation and Registration Toolkit Julien Jomier Kitware Inc.

National Alliance for Medical Image Computing http://na-mic.org

ITK Transforms

• Rigid (Quaternion), Similarity, Affine

• Centered transforms

• ThinPlateSpline, ElasticBodySpline, B-Spline

• TransformIO: Matlab, XML, Text

Page 17: National Alliance for Medical Image Computing  ITK The Image Segmentation and Registration Toolkit Julien Jomier Kitware Inc.

National Alliance for Medical Image Computing http://na-mic.org

ITK Metrics

• MeanSquares, NormalizedCorrellation, GradientDifference

• MutualInformation (Viola-Mattes)

• KullbackLeiblerCompareHistogram

• Model-to-Image metrics:- ICP

Page 18: National Alliance for Medical Image Computing  ITK The Image Segmentation and Registration Toolkit Julien Jomier Kitware Inc.

National Alliance for Medical Image Computing http://na-mic.org

ITK Optimizers

• Derived from VNL

• GradientDescent, ConjugateGradient, Powel

• Amoeba, One-plus-One, LBFGS(B), LevenbergMarquart

• Use metric value or metric derivative or both.

Page 19: National Alliance for Medical Image Computing  ITK The Image Segmentation and Registration Toolkit Julien Jomier Kitware Inc.

National Alliance for Medical Image Computing http://na-mic.org

ITK Interpolators

• NearestNeighbor, Linear, BSpline

• WindowedSync

Page 20: National Alliance for Medical Image Computing  ITK The Image Segmentation and Registration Toolkit Julien Jomier Kitware Inc.

National Alliance for Medical Image Computing http://na-mic.org

Enjoy ITK!

www.itk.org