ITK Tutorial Presentation Slides
ITK Tutorial Presentation Slides
http://www.InsightSoftwareConsortium.org
This course introduces attendees to select open-source efforts in the field of medical image
analysis. Opportunities for users and developers are presented.
The course particularly focuses on the open-source Insight Toolkit (ITK) for medical image
segmentation and registration. The course describes the procedure for downloading and installing
the toolkit and covers the use of its data representation and filtering classes. Attendees are shown
how ITK can be used in their research, rapid prototyping, and application development.
LEARNING OUTCOMES
After completing this course, attendees will be able to:
• contribute to and benefit from open-source software for medical image analysis
• download and install the ITK toolkit
• start their own software project based on ITK
• design and construct an image processing pipeline
• combine ITK filters for medical image segmentation
• combine ITK components for medical image registration
INTENDED AUDIENCE
This course is intended for anyone involved in medical image analysis. In particular it targets
graduate students, researchers and professionals in the areas of computer science and medicine.
Attendees should have an intermediate level on object oriented programming with C++ and must
be familiar with the basics of medical image processing and analysis.
COURSE LEVEL
Intermediate
COURSE LENGTH
Full-day (6.5 Hours)
COURSE OUTLINE
1) The Insight Software Consortium: contributing and using open-source
2) The architecture and installation of the Insight Toolkit
3) Segmentation methods of the Insight Toolkit
4) Registration methods of the Insight Toolkit
5) Image IO using the Insight Toolkit
6) The Image-Guided Surgery Toolkit: architecture overview
7) Using the Insight Toolkit with TK/TCL
8) Applications of the Insight Toolkit:
VTK/ITK, The Virtual Soldier, Industrial Research and NA-MIC’s Slicer
CONTRIBUTORS
Many people contributed to the development of these presentations. The ISC is grateful to those
peoples’ support of open source software and education. Major contributors include the following:
Stephen Aylward is Chief Medical Scientist at Kitware, Inc. He joined Kitware in December 2005,
after serving as a tenured Associate Professor of Radiology, Computer Science, and Surgery at the
University of North Carolina at Chapel Hill. At Kitware, Stephen is working with leaders in the
open-source movement on research and development for clinical image analysis software. Dr.
Aylward is also President of the Insight Software Consortium and an associate editor of IEEE
Transactions on Medical Imaging. He has computer science degrees from Purdue (BS), Georgia
Institute of Technology (MS), and UNC (PhD).
Luis Ibanez is a Research Engineer at Kitware, Inc. He received a BSc in Physics in 1989 and a
MSc in Optics in 1994 from the Universidad Industrial de Santander (Bucaramanga, Colombia). He
received a PhD in 2000 from the Universite de Rennes I (Rennes, France). From 1999 to 2001 he
was Research Assistant Professor in the Division of Neurosurgery at the University of North
Carolina at Chapel Hill. His current research interest the application of genomics paradigms to
computation.
Josh Cates is a member of the research staff of the Scientific Computing and Imaging Institute at
the University of Utah's School of Computer Science. He received his BS degree in Biology in 1995
and MS in Computer Science in 1999 from the University of Tennessee. His interests include
software engineering and problems in computer vision, including image processing (differential
geometry and p.d.e.-based methods), image segmentation, and computed tomography.
Lydia Ng is a member of the Informatics group at the Allen Institute for Brain Science. She
received a BE in Electrical Engineering and a BSc in Computer Science in 1994 from The University
of New South Wales (Sydney, Australia). She received a Ph.D. in 2000 from Macquarie University
(Sydney, Australia). Her research interests include: image registration, PDE based image
processing methods, motion estimation and development of software for medical image processing
and analysis.
Julien Jomier is a research member at Kitware, Inc. He joined Kitware in December, 2005 after
being a research faculty member in the Computer-Aided Diagnosis and Display Laboratory at the
University of North Carolina at Chapel Hill. He has extensive C++ programming and software
design experience as well as medical image analysis and data handling expertise. He is currently
continuing his development of ITK’s spatialObject library and his freely available spatial object
viewer library. Julien is also contributing to the development of the Insight Journal, the Image
Guided Surgery Toolkit, and numerous other open-source efforts.
William Lorensen is a Graphics Engineer in the Electronic Systems Laboratory at GE's Corporate
Research and Development Center in Schenectady, NY. He has over 35 years of experience in
computer graphics and software engineering. He is currently working on algorithms for 3D medical
graphics and scientific visualization.
The Insight Software
Consortium
http://www.InsightSoftwareConsortium.org
Outline
• History of the ISC
1
History
• Initiated by the original developers of the
National Library of Medicine’s Insight Toolkit
– Drs. Terry Yoo, Bill Lorensen, Will Schroeder, …
– 2003 Developers’ Meeting
• Motivation
– Near term:
• Hold the copyright of ITK
– Long term:
• Charter of the ISC…
Charter
ISC incorporated in New York State in 2005.
A non-profit, educational consortium.
The purpose of this Consortium is to
2
What the ISC means to you…
• The ISC provides proven, documented, open-source
software environments and data for developers and
users involved in medical image analysis research.
Steps:
1. Use Development Environment
2. Contribute to Insight Software Journal
3. Participate in Community Review
4. Seek Protection
5. Support Distribution and Education
6. Benefit from Community support
3
1. Development Environment
• ISC Certified
– ITK
– IGSTK
• Companion projects
– CMake
– Dart / Dashboards
– Cable / CSwig
– DCMTK
– FLTK
– Slicer
– VTK
– Tested
– Maintained
– Cross-platform
4
I can do “it” better myself…
Segmentation • Mayo Clinic
• Statistical, Fuzzy Logic, Markov • Harvard / Brigham and Women’s
Random Fields, Mixture Modeling, Hospital
Parzen Windows, Nearest Neighbor, • Cognita, Inc.
K-Means, … • Imperial and King’s College London
• Level Set, Finite Element, Region • University of Iowa
Growing, Hybrid, Watershed, • Georgetown University
Connected Components, • Carnegie Mellon University
Parameterized Models, … • GE Research / Harvard
Registration • Kitware, Inc.
• Insightful / UPenn
• Rigid, Similarity, Affine, Vector Field, • UNC / UPitt
Hierarchical, Quaternion, Versor,
• UPenn / Columbia
Parameterized Deformation, Euler,
• University of Utah
3D/2D, …
• + Over 70 machine configurations
• Mutual Information, Normalized
recompile ITK every night
Correlation, Demons, Mean
Squared, Landmark, … • 20,000+ downloads
Insight Software Consortium
2005 Overview • 30+ countries
5
3. Community Review
Insight Journal
– Review by peers
– Review by automated compilation process
Criterion
– Code
– Documentation
– Utility
– Adherence to policy
4. Protection
Once consensus builds for incorporation into an ISC
project…
• Challenges
– Acquiring copyright from developers
– Copyright infringement (known and unknown)
– Patented code (known and unknown)
Insight Software Consortium
2005 Overview
6
5. Distribution and Education
– Integration into ISC development environment
– Books:
6. Community Support
www.InsightSoftwareConsortium.org
• Web portal
• Certification - not sourceforge
• Dedicated to medical image analysis
– Jobs, News, Links
• Needs
– Contributions: Comments, Commented Code, …
– Long term dedication
• Good of the community vs. dissertation / proposal / …
Insight Software Consortium
2005 Overview
7
Community Limitations
• FDA
– FDA does not approve software libraries
– FDA only approves applications
Open-Science
-- Dr. Terry S. Yoo, NLM
– Share data
– Share code
– Understanding methods
• Assumptions, parameters, & outputs
– Comparison of methods
– Extension of methods
8
Board of the ISC
• Stephen Aylward
• Joshua Cates
• Luis Ibanez
• Bill Lorensen
• Dimitris Metaxas
• Jim Miller
• Lydia Ng
• Will Schroeder
• Ross Whitaker
9
ITK-Overview
What is ITK
z Image Processing
z Segmentation
z Registration
z No Visualization
1
ITK Sponsors
ITK Developers
2
ITK Developers
GE CRD Insightful U Penn
Bill Lorensen Lydia Ng Dimitris Metaxas
U Pittsburgh* U Utah*
George Stetten Ross Whitaker
* indicates a subcontractor.
3
ITK by the Numbers
z 400K
– # of lines of code
z 100K
– # of lines of test code
z 35K
– # of lines of examples
z 150K
– # of lines of Applications
z 240
– weekly t-cons
z 50
– unique developers
4
How to Integrate ITK
in you application
C++ Glue Code
ITK GUI
Image {MFC,Qt,
Processing wxWin
FLTK}
Visualization
{OpenGL, VTK}
What do I need ?
C++ Compiler
5
Step 1. Download ITK
http://www.itk.org
/Source/
InsightToolkit-2.4.1.zip
InsightToolkit-2.4.1.tar.gz
6
Step 2. Download CMake
Latest
ITK
CMake
Requires
Release
http://www.cmake.org
/CMake/
cmake-2.2.3.tar.gz
cmake-2.2.3-x86-win.zip
cmake-2.2.3-x86-linux.tar.gz
CMakeSetup223.exe
7
Step 3. Configure ITK
Source Tree Out Binary Tree
Source Build d
!
de
en
ITK ITKb m
m
co
Re
Common Common
Algorithms Algorithms
BasicFilter BasicFilter
Numerics Numerics
In
IO Source IO
Build
z Run CMake
8
Configuring ITK – MS-Windows
z Disable BUILD_SHARED_LIBS
z Disable BUILD_TESTING
9
Configuring ITK – Unix
z Create the BINARY directory (mkdir)
10
Configuring ITK – Unix
z Disable BUILD_EXAMPLES
z Disable BUILD_SHARED_LIBS
z Disable BUILD_TESTING
Building ITK
11
Building ITK
Building ITK
12
Building ITK
Building ITK
13
Step 5. Verify the Built
z ITKCommon z ITKIO
z ITKBasicFilters z ITKStatistics
z ITKAlgorithms z ITKMetaIO
z ITKNumerics z itkpng
z ITKFEM z itkzlib
14
Step 6. Use ITK from an
external Project
Copy
“HelloWorld.cxx”
“CMakeLists.txt”
from the Run • Select Source Dir
Examples/Installation CMake • Select Binary Dir
Directory
into another
directory
15
Using ITK – Hello World
16
Step 7. Build Sample Project
17
Step 8. Run the example
z Build
z Run
18
Step 9. Writing CMakeLists.txt
PROJECT( myProject )
FIND_PACKAGE ( ITK )
IF ( ITK_FOUND )
INCLUDE( ${ITK_USE_FILE} )
ENDIF( ITK_FOUND )
reader->SetFileName( argv[1] );
filter->SetInput( reader->GetOutput() );
filter->Update();
return 0;
}
19
Step 11. Run CMake
http://www.itk.org/ItkSoftwareGuide.pdf
http://www.itk.org/Doxygen/html/index.html
20
21
The ITK Software Guide is
freely available as a PDF
document at
www.itk.org/
ItkSoftwareGuide.pdf
22
Enjoy ITK !
23
ITK
Architecture
Kitware Inc.
ITK Basics
z C++ Generic Programming
z Data Pipeline
z Multi-threading
z Streaming
z Exceptions
z Events / Observers
z Tcl, Python and Java wrapping
1
Generic Programming
Example: STL Standard Template Library
std::vector< T >
itk::Image
2
namespaces
Avoid naming collisions
itk::
itk::Statistics::
itk::fem::
itk::fem::itpack
itk::bio
typedef
otherwise...
3
Smart Pointers
Smart
Pointer
Smart Smart
Object
Pointer Pointer
counter=3
counter=2
counter=1
counter=0
Self - Delete
SmartPointers
typedef itk::Image< char , 2 > ImageType
typedef itk::ImageFilter< ImageType , ImageType > FilterType
Pointer notation
filter->Update();
NO NEED FOR
filter->Delete();
4
Const Correctness
5
Creating an Image
typedef itk::Image< char , 3 > ImageType
ImageType::SizeType size;
size[ 0 ] = 512; // x direction
size[ 1 ] = 512; // y direction
size[ 2 ] = 50; // z direction
ImageType::IndexType start;
start[ 0 ] = 0; // x direction
start[ 1 ] = 0; // y direction
start[ 2 ] = 0; // z direction
Creating an Image
ImageType::RegionType region;
region.SetSize( size );
region.SetIndex( start );
image->SetRegions( region );
image->Allocate();
image->FillBuffer( 0 );
ImageType::SpacingType spacing;
spacing[ 0 ] = 0.83; // x direction
spacing[ 1 ] = 0.83; // y direction
spacing[ 2 ] = 2.15; // z direction
image->SetSpacing( spacing );
6
Exercise 3
Streaming
Processing Large Images
Input Output
Filter
Image Image
7
Image Regions
LargestPossibleRegion
BufferedRegion
RequestedRegion
Data Pipeline
Filter Image
8
Simple Image IO
Image
ImageFileReader Image
File
Filter
Image
ImageFileWriter Image
File
Simple Image IO
Image
ImageFileReader Image
File
9
Simple Image IO
#include “itkImage.h”
#include “itkImageFileReader.h”
#include “itkImageFileWriter.h”
writer->SetInput( reader->GetOutput() );
writer->Update();
Exceptions
Error Management
Application Layer
ITK Layer
10
Exceptions
try
{
filter->Update();
}
catch( itk::ExceptionObject & exp )
{
std::cerr << exp << std::endl;
}
Exercise 4
Image
ImageFileReader Filter
File
Image
Caster ImageFileWriter
File
11
Events and Observers
Itk::Command
Itk::Object
Event
itk::Command
Event
Event
itk::Command
Event
Event
itk::Command
itk::Command
Common Events
AnyEvent()
StartEvent()
EndEvent()
ProgressEvent()
IterationEvent()
12
Events and Observers
Itk::Object Itk::Command
Itk::ProcessObject MyCommand
Execute()
Itk::FilterXY AnyEvent
AddObserver( )
MyEvent
Itk::SimpleMemberCommand
Itk::ProcessObject
AnyEvent
MyEvent MyClass
Itk::FilterXY MethodX()
AddObserver( )
13
Exercise 5
Image File
ImageFileReader
Filter ProgressEvent()
StartEvent()
EndEvent()
ImageFileWriter
CommandObserver
Image File Execute()
GUI Communication
GUI Layer
Widget Widget
Observer
Command
Callback
ITK Layer
FilterX FilterX
14
Enjoy ITK !
15
Introduction to ITK Segmentation
Session Objectives
• Review some important •Brief introduction to image
considerations when using processing “frameworks” in
ITK filters ITK
• Overview of low-level image •See examples
processing filters –simple command line
–denoising / scale space –full applications with user
–feature extraction interaction
• Overview some common
segmentation filters
–connected component
–pixel classification
–watersheds
–level-set methods
1
Important Facts about ITK Filters
1. Most filters are N dimensional
2. Many filters run multi-threaded
3. Filters are implemented within frameworks
4. Most filters are documented
5. Filters are regression tested
6. Data type matters
7. Pixel spacing matters
8. Filters are not full applications
9. Filters require parameter tuning
linear
nonlinear are not complete applications –
Feature components in a pipeline.
Extraction
differential
geom.
edge detection
Segmentation Visualization
region growing binary volume
watersheds meshes
level-sets labeled image
implicit surfaces
2
Big Picture: The Role of ITK Filters
Raw Data
User
Interface
Filtering
Feature
Extraction
Segmentation Visualization
3
What is an ITK Image?
Templated over data type
May be vector-valued LargestPossibleRegion
Templated over dimensionality BufferedRegion
Spacing, origin & orientation
information
Pixels may be addressed directly RequestedRegion
or through an assortment of
iterators
Interpolators may also be used
In general, implemented as a flat,
C++ array
Buffers may be imported &
exported
Thresholding
BinaryThresholdImageFilter
4
Thresholding
ThresholdImageFilter
Intensity Transformations
CastImageFilter
RescaleIntensityImageFilter
ShiftScaleImageFilter
NormalizeImageFilter
SigmoidImageFilter
5
Intensity Transformations
SigmoidImageFilter
Image Morphology
BinaryErodeImageFilter
BinaryDilateImageFilter
6
Image Morphology
GrayscaleErodeImageFilter
GrayscaleDilateImageFilter
7
Edge Detection & Feature Extraction
GradientMagnitudeRecursiveGaussianImageFilter
8
Image Denoising: Linear
MeanImageFilter
9
Image Denoising: Linear
BinomialBlurImageFilter
RecursiveGaussianImageFilter
DiscreteGaussianImageFilter
10
Image Denoising: Nonlinear
VectorGradientAnisotropicDiffusionImageFilter
VectorCurvatureAnisotropicDiffusionImageFilter
Linear Diffusion
Destroys and moves edges
11
Nonlinear Diffusion
Preserves Edges
Geometric Transformations
TransformImageFilter
12
Remember
Filters generalize to N dimensions
Filters “work” on arbitrary data types, but only some
data types make sense
Filters are implemented within extensible frameworks
13
Neighborhood Iterator Framework
Neighborhood Iterators
14
ITK Segmentation Algorithms
Classification / Thresholding
Region Growing
Watersheds
Level-set Methods
“Hybrid” Methods
15
Statistical Pattern Classification Framework
1. Measurement vectors are input to membership functions
2. Membership functions feed scores to decision rule
3. Decision rule compares scores and returns a class label
Decision Rule
*Courtesy of Dr. Lydia Ng, Allen Institute for Brain Science, www.brainatlas.org.
16
Classifier Framework Example
(a) Original ISH stained image; (b) heat map representing the membership
values of each pixel representing expression, and (c) the final threshold
mask generated from the heat map
Region Growing
Idea
Start with set of seed pixels – region
Iteratively include neighboring pixels that satisfy
membership criteria
Membership criteria – similarity based metrics
Intensity interval, Regional statistics
Algorithms
Simple to complex variations
Easy to write using ND neighborhood tools
Several strategies
Connected Threshold, Otsu Threshold, Neighborhood
Connected, (Vector) Confidence Connected, Isolated
Connected
17
Confidence Connected Filter
Threshold based region growing
Mean and standard deviation of region determine
upper and lower thresholds
Recomputes thresholds at intervals
Repeat N times
smoothing iterations 5
smoothing time step 0.125
C.C. multiplier 2.5
C.C. iterations 5
18
Region Growing Segmentation
VectorConfidenceConnectedImageFilter
Watershed Segmentation
Image treated as a topological relief map – intensity
represents height
Gradient descent defines segmented regions
Set of all pixels whose paths of steepest descent terminate
in same local minimum
Bounded by image features
“No parameters”
19
ITK Watershed Transform
Watershed Depth
Image (filtered) Feature Extraction Watershed Transform
“Edge Map”
20
Watersheds Hierarchy
Enforce minimum watershed depths
at successively higher levels.
Watershed Depth
Undersegmented
Watershed Depth Threshold
Watershed Transform
= basin
Boolean Operations
Oversegmented
On Sub-trees
(e.g. user interaction)
Initial Watershed
Transform
Sliders manipulate
watershed depth
and position in the 3D isosurface
hierarchy. rendering
Watershed Depth Threshold
21
Example: Watersheds GUI
22
LevelSet Surface Modeling Theory
kth Level Set: set of all points of value k
Embed N dimensional surface as ZERO level set of
N+1 dim. volume
Model N dim. surface movement as evolving
wavefront – forward differences solution to PDE
23
PDE Solver Framework
Purpose
Nonlinear image processing – e.g. anisotropic diffusion
Moving wave fronts – level set models
Deformable registration
Generic framework
Separate solvers from equations – interchangeable code
objects
Level
Sparse Set
Dense Diffusion
Threaded
Narrow Sparse
Segment
Band .
Aniso. 4th
Diffusion Diff Order
Curv.
Limited
Deformable
Registration
Other Solvers
Other Functions
24
Constructing a PDE Filter
Parameters
“Feature”
Image Level-Set Segmentation Filter
Curvature
Function
Output
Model
Canny Laplacian
Initial Shape Edges Active- Function
Model Detection Function Contours Threshold
Function Function Function
25
LevelSet Segmentation Algorithms in ITK
Fast marching
Geodesic active contours
CURVES (vessel segmentation)
Intensity interval (scalar and vector)
Canny edge distance
Laplacian edges
… and more.
Image Intensity
Low High
Threshold Threshold
•Lefohn, Kniss, Hansen, Whitaker, “GPU-Based, Interactive, Level-Set Models for Volume
Visualization and Analysis”, IEEE Vis 2003
•Lefohn, Whitaker, Cates, “Interactive Level-Set Models for Brain Tumor Segmentation”,
MICCAI 2003
26
Example: LevelSet Segmentation GUI
1/4
1/2
1/1
27
Advanced Features in the PDE Framework
Parallel Solvers – Narrowband,
Sparse field
50
45
40
35
Speedup
processor
30
(vs. 1
25
20 SGI Origin 3000
15 64 600 Mhz Processors
10
5
0
0 20 40 60
Number of processors
Output
Canny LaPlacian Model
Shape Edges Active- Function
Detection Function Contours
Initial Function
Threshold
Function Function
Model
28
Segmentation Using 4th Order Flows
Special 4th order solver plugs into LS segmentation
framework – no change in function objects.
SNAP Tool
Aimed at clinical users – easy to learn and use
Implements various ITK level set algorithms
Implements both edge-based and
region competition
geodesic snake
methodology
InsightApplications/Snap
29
SNAP User Interface
InsightApplications/Snap
30
Hybrid Method: Region Growing + Level Sets
Generate initial model using confidence connected
filter
Fit to data using level-set methods – minimize
distance to Canny edges
Canny LS LS
Confidence Initial Segmentation Image
Connected model Filter (float)
Feature
Image
Anisotropic
Image
Diffusion
Initial confidence-
connected result
LS Speed Term: distance
from Canny edges
Post-processing with
Canny LS segmenter
Data: Warfield, Nabavi, Butz, Tuncali, Silverman, “Intraoperative segmentation and nonrigid
registration for image guided therapy, in: MICCAI'2000, SpringerVerlag, 2000, pp.176-185.
31
enjoy ITK!
http://www.itk.org
32
Overview: ITK
Registration Methods
Lydia Ng
Allen Institute for Brain Science
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 1
Overview
Introduction
ITK Registration Framework
Component Overview
Registration Strategies
GUI Communication
Deformable Registration in ITK
Resources
Application: Allen Brain Atlas
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 2
1
Introduction
Image registration
Process of finding the spatial transform that
maps all points from one image to their
homologous points in another image
Medical applications
Monitoring change in an individual
Fuse information from multiple sources to aid
clinical interpretation
Compare one subject to another
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 3
Intra-subject Registration
Repeated image scans of the same
subject can be used to capture the effect
of disease development, treatment
progress, contrast bolus propagation etc.
Registration can be used to compensate
for differences in patient placement
Subtraction/overlay of registered images
can be used for visualization and
quantification
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 4
2
3D Breast MR Contrast Uptake
Deformable Registration
Image data courtesy of University of Washington.
Unregistered:
Registered:
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 5
Inter-subject Registration
Creation of mean images and atlases
Useful for objective and quantitative
assessment of abnormalities
Computed deformation field used to encode
pattern of anatomic variability within a
population
Atlas based segmentation
Automatic segmentation by mapping to a
labeled atlas
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 6
3
3D Inter-subject MR-PD
Deformable Registration
Image data courtesy of N. C. Andreasen, University of Iowa, Psychiatry Dept.
Moving Volume
Fixed Volume
3D Atlas-based Segmentation
Image data courtesy of N. C. Andreasen, University of Iowa, Psychiatry Dept.
Subject (Fixed) Volume
Atlas (Moving) Volume
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 8
4
Multi-modality Registration
Combine or fuse information from multiple
sources to aid clinical interpretation
Some modalities
MR: soft tissue discrimination; lesion
identification
CT: bone localization; surgical guidance
PET/SPECT: functional information; tumor
localization
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 9
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 10
5
Image Registration Classification
Registration criteria
Quantitative measure of a “good match”
match”
Focus on intensity based measures
Spatial transform type
Allowable mapping from one image to another
Rigid versus non-
non-rigid
Optimization algorithm used
Optimize transform parameters with respect to match
criteria
Image interpolation method
Value of image at non-
non-grid position
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 11
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 12
6
ITK Registration Framework
Generic framework for building intensity based
registration algorithms
Each functionality encapsulated as components
Components are inter-changeable allowing a
combinatorial variety of registration methods
Components are generic
Can be used outside the registration framework
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 13
Registration Framework
Fixed Transform
Image Parameters
Image Similarity
Metric
Moving Resampled
Image Image
Image Cost Function Resample Image
Interpolator Optimizer Filter
Transform
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 14
7
itk::ImageRegistrationMethod
Simple helper driver class that connects
up the components and starts the
optimizer
Examples in Software Guide
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 15
Examples/Registration
Declare types Connect up observers
Instantiate objects via New() StartRegistration()
StartRegistration()
Connect components and Should do this inside try/catch
images to the driver using Set block
methods Get the last transform
Set initial transform parameters
parameters Create registered image using
Don’
Don’t forget! ResampledImageFilter
Setup each component
optimization parameters: step
length, convergence …
MI parameters: number of
samples,
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 16
8
Component Overview
Transforms
Forward versus inverse mapping
Rigid and non-rigid
Interpolators
Image to image similarity metrics
Intra-modality
Inter-modality (information-theoretic methods)
(Optimizers)
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 17
itk::Transfrom
Encapsulates the mapping of points and vectors
from an “input” space to an “output” space
ITK provides a variety of transforms from simple
translation, rotation and scaling to general affine,
kernel and B-spline transfoms
Forward versus inverse mapping
Parameters representation
“Transform Jacobians”
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 18
9
Forward and Inverse Mappings
Relationship between points of two images
can be expressed in two ways:
Forward: pixel of input (moving) image
mapped onto the output (fixed) image
Inverse: output (fixed image) pixels are
mapped back onto the input (moving) image
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 19
Forward Mapping
Input Output
Image Image
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 20
10
Inverse Mapping
Input Output
Image Image
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 21
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 22
11
Transform Parameters
Each transform class is defined by a set of
parameters
Translation, angle of rotation etc
Represented as a flat array of doubles to
facilitate communication with generic ITK
Optimizers
Transform parameters define the search space
for the optimizer
Goal of registration
Find the set of transform parameters that result in the
best value of an image similarity metric
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 23
Transform Jacobian
Some metrics require the knowledge of the
“transform Jacobian” in order to compute metric
derivatives
The “transform Jacobian” is a matrix whose
elements are the partial derivatives of the output
point with respect to the transform parameters
∂xi′
J ij =
∂p j
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 24
12
itk::TranslationTransform
Maps all points by adding a constant vector:
x′ = x + t
Parameters:
i-th parameter represent the translation in the i-th
dimension p=t
Jacobian in 2D:
⎡1 0⎤
J=⎢ ⎥
⎣0 1 ⎦
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 25
itk::Euler2DTranform
Represents a rotation and translation in
2D
⎡ x′ ⎤ ⎡cos θ − sin θ ⎤ ⎡ x ⎤ ⎡t x ⎤
⎢ y′⎥ = ⎢ sin θ +⎢ ⎥
cos θ ⎥⎦ ⎢⎣ y ⎥⎦ ⎣t y ⎦
⎣ ⎦ ⎣
Parameters: p = {θ , t x , t y }
⎡ − (sin θ )x − (cos θ ) y 1 0⎤
Jacobian: J=⎢ ⎥
⎣+ (cos θ )x − (sin θ ) y 0 1⎦
Don’t forget TRANSFORM
CENTERING and PARAMETER SCALING!
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 26
13
Center of
Transformation/Rotation
Transformation/rotation is about the origin {0,0}
Can represent rotation at arbitrary rotation center but
at the expense of optimization performance,
especially for large auxiliary translation
x′ − c m = M (x − c f ) + t
x′ = Mx + (t + c m − Mc f )
144244 3
t′
Alternatives:
center of image
center of mass of an object
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 27
Parameter Scaling
Different type of parameters (translation vs.
angle vs. scaling) have different dynamic ranges
E.g. a unit change in rotation has a much larger
impact than a unit change in translation
Differences in scale appears as long narrow
valleys in the search space making optimization
difficult
Rescaling the parameters can help fix this
problem
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 28
14
itk::Euler3DTranform
x′ = R Z R Y R X x + t
or
x′ = R Z R X R Y x + t
Parameters:
p = {θ x ,θ y , θ z , t x , t y , t z }
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 29
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 30
15
I will not register images in pixel space
I will not register images in pixel space
I will not register images in pixel space
I will not register images in pixel space
I will not register images in pixel space
I will not register images in pix
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 31
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 32
16
itk::AffineTransform
General affine transform can represent
rotation, scaling, shearing and translation
Parameters: matrix coefficient + translation
(6 in 2D, 12 in 3D)
Parallel lines are preserved
Don’t forget TRANSFORM
CENTERING and PARAMETER SCALING!
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 33
itk::BSplineDeformableTransform
Represent a low-dimensional smooth
deformable warp
Deformation field represented by B-splines
coefficient on a regular grid
Parameters: B-spline coefficient for each
dimension at each grid position
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 34
17
B-Spline Grid Placement
SplineOrder = 3
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 35
itk::InterpolateImageFunction
When a point is mapped from one image
space to another image space, it will
generally be mapped to a non-grid position
Interpolation is needed to compute the
intensity value at the mapped position
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 36
18
Choice of Interpolation Method
Interpolation affects smoothness of metric
space
Interpolations computed 1000’s of times in
a single optimization cycle
Trade-off efficiency with ease of
optimization
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 37
Interpolation Schemes
itk::NearestNeighborInterpolateFunction
Assumes image is piecewise constant
itk::LinearInterpolateFunction
Assumes image is piecewise linear
itk::BSplineInterpolateFunction
Underlying image represented using B-
B-spline basis
functions
On connection, image of B-
B-spline coefficients is
computed
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 38
19
itk::ImageToImageMetric
Measures how well a transformed moving
image “matches” the fixed image
The most critical component
Scalar function of the transform
parameters
For given, fixed image, moving image,
transformation type and interpolation type
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 39
mapped position
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 40
20
Metrics and Optimizers
The metric is used by the
optimizer to evaluate the
Registration Framework
quantitative criterion at various Fixed
positions in the transform Image
Image Similarity
Metric
parameter search space
For gradient-
gradient-based optimizer, Moving
the metric must also provide Image Image Cost Function
Interpolator Optimizer
the metric derivatives w.r.t
each transform parameter
Use chain rule with moving Transform
image derivatives and
transform Jacobian
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 41
Choice of Metric
Highly dependent on the registration problem to
be solved
Single-
Single-modality
Multi-
Multi-modality
Large capture range
Requires close initialization
Examples:
Mean squares, normalized correlation and mutual
information
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 42
21
Mean Squares Metric
Interpolate the moving image
S (p F , M , T ) =
N
∑ (F (x ) − M (x′ ))
1 2
i i
N i
Simple to compute
Large capture range
Restricted to mono-modality applications
Linear differences in intensity results in poor
similarity measure
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 43
NearestNeighbor BSpline
Optimal Value at
Zero
Linear
Metric range:
image dependent
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 44
Translations
22
Normalized Correlation Metric
N
∑ F (x )M (x′ )
S (p F , M , T ) = −1×
i i
i
N N
∑ F (x )∑ M (x′ )
i
2
i
i
2
i
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 45
Metric range:
1 to -1
Translations
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 46
23
Mutual Information Metric
Information theoretic entity that
qualitatively measures how much
information is gained about one RV
(intensity in one image) by the knowledge
of another RV (intensity in another image)
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 47
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 48
24
Entropy
Two RVs: A and B
Marginal entropies:
H ( A) = −∫ p A (a ) log p A (a ) da
H (B ) = −∫ pB (b) log pB (b) db
Joint entropy:
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 49
Mutual Information
If A and B independent:
H ( A, B ) = H ( A) + H ( B)
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 50
25
Estimating the Probabilistic Models
Entropy is defined in context of a probabilistic
model of the data source
Typically there is no direct access to these models
Marginal and joint densities has to be estimated
from the image data
Parzen windowing
Kernel density estimate
Histogram binning
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 51
Parzen Windowing
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 52
26
Estimating Entropy
Using the density estimate, approximate
entropy integral by a sum
Evaluate at discrete positions/bins uniformly
spread within dynamic range
Computing a sampled mean using another set
of intensity samples randomly drawn from
image
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 53
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 54
27
Mutual Information Metric
ViolaWells Mattes
Optimal Value at
maximum
Metric range:
Image
dependent
Translations
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 55
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 56
28
Joint Histograms: Multi-modality
Images Aligned Translated by 0 to 20 pixels
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 57
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 58
29
Registration Strategies
Naive application of registration may not
work
Coarse to fine strategy
Improves computational speed and
robustness
Low to high dimensional transform
Translation to rigid to deformable
Sparse to fine grid
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 59
itk::MultiResolutionImageRegistrationMethod
Helper driver class to perform multi-
multi-resolution
registration
Initialize
Initialize
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 60
30
3D CT to MR -T1 Rigid Registration
MR-T1
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 61
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 62
31
Registration To GUI
Communication
Drive progress bar
Observe registration progress
Interrogate metric values
Interrogate current parameters
Display current results
Resample and display ROI
Change component parameters
Terminate registration
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 63
ITK Observers/Commands
itk::Object can invoke events
Start, End, Progress, Iteration
itk::Object maintains a linked list of event
observers
Observers register themselves to an
object and declare the type of events they
are interested in
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 64
32
Observing Registration
ITK Optimizers typically execute an iterative process
Most Optimizers invoke an IterationEvent at the end of
each iteration
Observing IterationEvents provide periodic
communication facilitating progress feedback and
opportunity to control the registration
itk::MultiResolutionImageRegistrationMethod also
invokes an IterationEvent between levels to give the GUI
an opportunity to change components and/or parameters
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 65
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 66
33
Deformable Registration in ITK
Low dimensional transformations can be handled in the basic
registration framework
For high dimensional transformations:
Finite Element Methods (FEM)
Finite Different Methods
Metric optimization
Mean squares, normalized correlation, MI
FEM framework additionally supports regularization and landmark
constraints:
Diffeomorphic constraints
Linear elastic and large deformation (fluid and transient-
transient-quadratic)
models
Simple examples in Software Guide
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 67
Resources
ITK Software Guide
“Insight into Images”
Images”,
Yoo (ed), 2004
“A Survey of Medical Image Registration”
Registration”
Maintz and Viergever,
Viergever, Medical Image Analysis, 1998
“Handbook of Medical Imaging: Medical Image Processing and Analysis
Analysis””
Fitzpatrick et al (eds
(eds),
), SPIE, 2000
“Handbook of Medical Imaging: Processing and Analysis”
Analysis”
Bankman (ed.), Academic Press, 2000
“Medical Image Registration”
Registration”
Hajnal et al (eds
(eds),
), CRC Press, 2001
“Mutual-
Mutual-Information-
Information-Based Registration of Medical Images: A Survey”
Survey”
Pluim et al, IEEE-
IEEE-TMI, 22(8), 2003
IEEE Transaction of Medical Imaging Special Issue
November 2003
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 68
34
Data for Registration Testing
Retrospective Registration Project
http://www.vuse.vanderbilt.edu/~image/registration/
Multi-
Multi-modality images of the brain
Internet Brain Segmentation Repository
http://www.cma.mgh.harvard.edu/ibsr/
MR-
MR-TI images of brain with segmentations
BrainWeb
http://www.bic.mni.mcgill.ca/brainweb/
Simulated brain database
International Consortium For Brain Mapping (ICBM)
http://www.loni.ucla.edu/ICBM/ICBM_Databases.html
http://www.loni.ucla.edu/ICBM/ICBM_Databases.html
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 69
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 70
35
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 71
3D Atlas Reconstruction
Inherently 2D data
Spatial relationship between sections is lost
Artifacts (distortions, tears, smears,
inhomogeneity etc) appear independently on
per section basis
Blind application of section-to-section
registration could result in non-realistic 3D
reconstructions requiring post-processing
or constraints
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 72
36
Initialization
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 73
Rigid Registration
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 74
37
Unbending Rigid Registration
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 75
Affine Registration
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 76
38
De-warping Affine Registration
De-
De-warp the volume by applying the inverse of the
smoothed transform series
Result is then used as initialization for the next step:
deformable registration
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 77
Deformable Registration
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 78
39
Hippocampus (Azimuth)
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 79
Hippocampus (Elevation)
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 80
40
Cerebellum (Elevation)
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 81
Ventricles (Elevation)
SPIE 2006: Medical Image Analysis with ITK and Related Open-
Open-Source Software, February 11, 2006 82
41
ITK Input/Output
Kitware Inc.
Overview
z IO Factory Mechanism
z Image File IO
z Transform File IO
z SpatialObject File IO
z Logger
1
IO Factory Mechanism
2
Supported file formats
2D Only
- JPEG (.jpg/.jpeg)
- Bitmap (.bmp)
- PNG (.png)
2D/3D
- Analyze 3.5 - Siemens
- GIPL (.gipl) - Stimulate
- RAW (.raw) - TIFF
- DICOM - VTKImage
- GE 4x,5x - NRRD
- IPLCommon - LSM
- MetaImage (.mha/.mhd) - NIFTI
TIFFImageIO AnalyzeImageIO
3
How does the Factory work?
writing
…
JPEGImageIO DICOMImageIO
TIFFImageIO AnalyzeImageIO
Image File IO
4
Reading my first image
#include <itkImageFileReader.h>
itk::ImageFileReader<ImageType>::Pointer reader
= itk::ImageFileReader<ImageType>::New();
reader->SetFileName(“lena.jpg”);
try
{
reader->Update();
}
catch (itk::ExceptionObject & e)
{
std::cerr << e.GetDescription() << std::endl;
return EXIT_FAILURE;
}
itk::ImageFileWriter<ImageType>::Pointer writer
= itk::ImageFileWriter<ImageType>::New();
writer->SetFileName(“lena.jpg”);
writer->SetInput(image);
try
{
writer- >Update();
}
catch (itk::ExceptionObject & e)
{
std::cerr << e.GetDescription() << std::endl;
return EXIT_FAILURE;
}
5
My file format converter
itk::ImageFileReader<ImageType>::Pointer reader
= itk::ImageFileReader<ImageType>::New();
itk::ImageFileWriter<ImageType>::Pointer writer
= itk::ImageFileWriter<ImageType>::New();
reader->SetFileName(“myImage.jpg”)
writer->SetFileName(“myImage.tiff”);
writer->SetInput(reader->GetOutput());
try
{
writer- >Update();
}
catch (itk::ExceptionObject & e)
{
std::cerr << e.GetDescription() << std::endl;
return EXIT_FAILURE;
}
#include <itkTIFFImageIO.h>
reader->SetFilename(“myimage.tiff”);
reader->SetImageIO(tiffImageIO);
reader->Update();
6
Reading RAW images
#include <itkRawImageIO.h>
io->SetFileName(“myimage.raw”);
unsigned int dim[2] = {800,60};
double spacing[2] = {0.8, 0.8};
double origin[2] = {0.0,0.0};
for(unsigned int i=0; i<2; i++)
{
io->SetDimensions(i,dim[i]);
io->SetSpacing(i,spacing[i]);
io->SetOrigin(i,origin[i]);
}
io->SetHeaderSize(0);
io->SetByteOrderToLittleEndian();
io->SetPixelType(itk::ImageIOBase::SCALAR);
io->SetNumberOfComponents(1);
itk::ImageFileReader<ImageType>::Pointer reader
= itk::ImageFileReader<ImageType>::New();
reader->SetFileName(“myImage.raw”);
reader->SetImageIO(io);
try
{
reader->Update();
}
catch (itk::ExceptionObject & e)
{
std::cerr << e.GetDescription() << std::endl;
return EXIT_FAILURE;
}
7
Creating a MetaImage Header
z Create a simple text file with the .mhd
extension
z Example:
NDims = 3
DimSize = 100 200 300
ElementSpacing = 1.2 1.2 1.0
ElementType = MET_UCHAR
ElementByteOrderMSB = False
ElementDataFile = HeadMRVolume.raw
OR
ElementDataFile = HeadMRVolume%04d.raw 0 10 1
8
Reading DICOM images
// Select the correct files from the directory
typedef itk::ImageSeriesReader< ImageType > ReaderType;
ReaderType::Pointer reader = ReaderType::New();
nameGenerator->SetDirectory( “./MyDirectory/” );
typedef std::vector< std::string > FileNamesContainer;
FileNamesContainer fileNames;
fileNames = nameGenerator->GetFileNames( seriesIdentifier );
reader->SetFileNames( fileNames );
z RegularExpressionSeriesFilenames
- ordered sequence that matches RegEx
- ordered by submatch or numerically
9
Metadata
MetaData
z itk::Image defines:
- Spacing (size of the voxels in mm)
- Origin (physical location of (0,0,0))
- Size (size of the largest region of the image)
- Orientation (direction cosines)
10
MetaData Dictionary
z itkMetaDataDictionary
Transform File IO
11
Transform IO
z Special ITK File format
z Uses IO Factory
writer->AddTransform(affine);
writer->SetFileName( “AffineTransform.txt" );
try
{
writer->Update();
}
catch( itk::ExceptionObject & excp )
{
std::cerr << excp << std::endl;
return EXIT_FAILURE;
}
12
Read Transform Example
#include "itkTransformFileReader.h”
itk::TransformFileReader::Pointer reader;
reader = itk::TransformFileReader::New();
reader->SetFileName( “AffineTransform.txt" );
reader->Update();
Object File IO
13
Spatial Objects
z Represents Physical Objects (not only
images)
Liver
Kidneys
Blood Vessels
Tumor
14
Spatial Objects IO
z Uses the IO Factory
z Easy to extend
15
Reading Spatial Objects
#include "itkSpatialObjectReader.h”
Writing an itkMesh
#include "itkSpatialObjectWriter.h”
#include "itkMeshSpatialObject.h”
16
Logging Capabilities
Logger
z Record output information and send the
output to a stream (or multiple streams)
17
Logger in use
#include <itkLogger.h>
#include <itkStdStreamLogOutput.h>
logger->SetName(“MyLogger”);
logger->SetPriorityLevel(itk::LoggerBase::INFO);
logger->SetLevelForFlushing(itk::LoggerBase::CRITICAL);
logger->AddLogOutput(output);
Logger Manager
z AddLogger()
z CreateLogger() / CreateThreadLogger
z Write()
z Flush()
18
References
z Culp, Timothy R. "Industrial Strength Pluggable Object Factories". C++
Report Online.
http://www.creport.com/html/from_pages/view_recent_articles_c.cfm?
ArticleID=1520
Enjoy ITK !
19
IGSTK
The Image-Guided
Surgery Toolkit
Kitware, Inc
Overview
z History
z Infrastructure
z Components
z Quality Control
z Software Process
z Applications
1
The Toolkit in a Nutshell
z Open Source Toolkit
z BSD-like License
z Written in C++
z Cross Platform
z Based on ITK and VTK
z GUI based on FLTK
z Designed for a Critical Application
History
z STTR Funded by NIBIB/NIH (Georgetown-
Kitware)
z Phase I from May to Sept 2003. Used in
example applications.
z Phase II started on October 2004
z CADDLab UNC Joined the project and
contributed Spatial Objects & RF ablation
Application.
z Atamai joined on 2005 and contributed
Tracker code.
z Releases done about every 6 months
2
Layer Architecture
IGS - APPLICATION
IGSTK
ITK VTK
Geometry &
Infrastructure
Representation
Images &
Trackers Viewers
Readers
3
Infrastructure
z State Machine
z Time Stamp
z Pulse Generator
z Events
z Transforms
z Logger
Trackers
z Tracker (base class)
– PolarisTracker
– AuroraTracker
– Flock Of Birds
z Support
– SerialCommunication
z SerialCommunicationForWindows
z SerialCommunicationForPosix
– NDICommandInterpreter
4
Object Representation
z SpatialObject z SpatialObjectRepresentation
– Ellipsoid – Ellipsoid
– Cylinder – Cylinder
– Images – Images
– Mesh – Mesh
– Tube – Tube
– TubeGroup – Box
– Group – Cone
– Box – VascularNetwork
– Cone – AirwaysNetwork
– Surgical Tools
Viewers
z View
– View2D
– View3D
z VTK Based
z GUI / VTK hybrid class
5
Images and Readers
z Image
– CTImage
– MRImage
– FluoroscopicImage
z Readers (DICOM)
– CTImageReader
– MRImageReader
– Fluoroscopy (video input)
Dynamics
Architecture
6
General Interactions
Tracker
GUI
TrackerTool 1
View1
TrackerTool 2
Object
View2 Representation TrackerTool 3
View3 Object
Representation Spatial
Object
View4 Object
Representation
Tracking Interactions
T Tracker
Tick
T TrackerTool 3
Object T
Representation
Spatial
Object
Object
T
Representation
Transform
T = Event
7
Event Class
ITK Event
IGSTK Event
TransformEvent
TimeStampEvent
StringEvent
Event Class
8
Transform Class
Transform
Vector
Versor
TimeStamp
Error
Transform Class
9
Transform Event Class
Pulse Generator
Action
Action
10
Tick
Timing Control
Tick Tracker
GUI
TrackerTool 1
View1 TrackerTool 2
Object
Representation TrackerTool 3
View2
Object
View3 Representation Spatial
Object
View4 Object
Representation
Quality Control
11
Testing Platforms
z Windows
– Visual Studio 6.0 / 7.1 / 8.0
z Linux
– gcc 3.2 / 3.3 / 3.4 / 4.0
– icc 7.1 / 8.0
z Cygwin – Windows
– gcc 3.4
– gcc 3.3
Testing
z Goal
– 100 % Code Coverage
– 100 % State Machine Transitions Testing
12
Dynamic Testing Platforms
z Valgrind on Linux
– gcc 3.3
– gcc 3.4
z Valgrind on Cygwin
z Purify (too expensive)
Software Process
13
Software Process
z Sandbox
z Extreme programming
z Release early, release often
z Code reviews
z Requirements
z Bug tracking
14
Applications
Applications
z Ultrasound-guided percutaneous
liver lesion RFA
z Needle Biopsy
z Guidewire Tracking
15
Ultrasound-Guided Liver RFA
GuideWire Tracking
16
Needle Biopsy
z http://www.igstk.org
z Last stable release “Iteration 7”
z Demo: Sunday Feb 12 from 8:30 to 10:30 pm
17
Enjoy IGSTK!
18
Applications:
Using Insight(itk) and
The Visualization Toolkit(vtk)
Bill Lorensen
Jim Miller
GE Research
Niskayuna, NY
Agenda
z CT/MR
– Segmentation
z Watershed
1
Motivation
vtk/itk Interfaces
2
Connect pipelines - vtk to itk
ConnectPipelines(movingExporter, movingImporter);
InsightApplications/
InsightApplications/vtkITK/Common/
vtkITK/Common/vtkITKUtility
vtkITKUtility.h
.h
Connect Pipelines
PropagateRequestedRegion()
UpdateOutputInformation()
GenerateOutputInformation()
GenerateData()
3
vtkITK Class Hierarchies
Class Hierarchy
z vtkImageToImageFilter
– vtkITKImageToImageFilter
z vtkITKImageToImageFilterFF
z vtkITKImageToImageFilterUSUS
z…
–vtkITKDiscreteGaussianImageFilter
vtkITKImageToImageFilter
4
vtkITKImageToImageFilterFF
vtkITKDiscreteGaussianImageFilter
z Instantiates filter
z Delegates filter’s member data
set’s/get’s
5
vtk Filters Implemented
with itk algorithms
z vtkITKMutualInformationTransform
z Implement InternalUpdate()
– vtkImageExport
– itk::VTKImageImport
– ConnectPipelines()
– Convert vtk transform to quaternion
– itk::RegistrationMethod
– Convert itk quaternion to vtk transform
Illustrative Examples
Registration
6
Motivation for Registration
z Intra-modality
– Alzheimer’s
z Longitudinal analysis
– CT Lung
z Side-by-side slice reading
z Inter-modality
– PET/MR/CT/US/XRAY Tomo
z Fusion and analysis
Mutual Information
Registration
z Computes “mutual information” between
two datasets, a reference and target
– MI(X,Y) = H(X) + H(Y) – H(X,Y)
z Small parameter set
z Developed by Sandy Wells (BWH) and
Paul Viola (MIT) in 1995
z Defacto standard for automatic,
intensity based registration
7
Longitudinal MRI Study
Approach
8
The MI Algorithm Parameter
Space
z Learning Rate
z Standard Deviation of Parzen Window
estimate
z Number of Samples for density estimate
z Number of Iterations
z Image variance
z Translation scale factors
9
10
Division of Labor
Read data
vtk
Export data
Import Data
Normalize data MIRegistration.cxx
itk Shrink
Register
Report transform
Read data
The Pipeline
z vtkImageReader
z vtkImageExport
z itk::vtkImporter
z itk::NormalizeImageFilter
z itk::ShrinkImageFilter
z itk::ImageRegistrationMethod
z vtkTransform
11
Oregon Data
z 25 Registrations
z 13 Subjects, some with AD
z Qualitative comparison
z One set of parameters for all studies
Difference
Checkerboard
Source Target
Original Original
image image
Longitudinal MRI
No Registration
12
Difference
Checkerboard
Target
Original
Source
image
Original
image
Longitudinal MRI
Registration
13
Difference
Checkerboard
Target
Original
Source Image
Original
Image
1.5T vs 4T MRI
No Registration
Difference
Checkerboard
Target
Source Original
Original Image
Image
1.5T vs 4T MRI
Registration
14
3D Visualization of the same subject
Scanned with different MR field Strengths
3T 1.5T
4T
All Registered
To 4T
CT Lung Longitudinal
Study
z Register two CT exams of the
same patient taken at two different
times
z Side-by-side synchronized view for
visual comparison
15
Difference
Checkerboard
Target
Original
Image
Source
Original
Image
Lung CT No Registration
Difference
Checkerboard
Target
Original
Image
Source
Original
Image
Lung CT Registration
16
microPet/Volume CT
17
microPet/Volume CT
18
Implementing a vtk
Transform with itk
z vtkITKMutualInformationTransform
DemoMutual.tcl
19
Agenda
z Problem Statement
z Methods
z Results
z Discussion
Problem Statement
20
Methods
z NormalizeImageFilter (itk)
z Mutual Information Registration (itk)
– Implemented as a vtk Transform
z MarchingCubes (vtk)
z Checkerboard Display (vtk)
Methods
21
CT Results
z Initialvertical translation of 20 mm
z Checkerboard display of two modalities
after each resolution run
22
23
24
25
26
CT Results
27
28
29
30
CT Results
31
Distances Between Corresponding Key Points
14
12
[234,280]
[264,506]
10 [282,131]
[291,107]
[270,104]
Distance (mm)
8 [239,608]
[118,334]
[431,347]
6 [41,376]
[365,362]
[265,377]
4 [260,485]
[402,265]
[144,252]
0
1 2 3 4 5 6 7 8 9 10
Iteration
MR Results
z Initial
transform computed using experts
anatomical landmarks as
correspondences
z Same parameter schedule as CT/RGB
32
33
34
35
36
37
MRI Results
16
14
[283,129]
12 [242,584]
[185,118]
[378,128]
Distance (mm)
10 [277,303]
[185,131]
[378,135]
8 [241,144]
[318,146]
[70,352]
6 [143,254]
[402,261]
0
1 2 3 4 5 6 7 8
Iteration
38
CT Discussion
z CT to RGB rigid
body
registration is a
good first step
for subsequent
deformable
registration
MRI Discussion
z MRI to RGB
registration was not
effective
– Too much
anatomical distortion
occurred between
the MR and RGB
acquisitions
39
Examples
Segmentation
Watershed Segmentation
40
Demo Watershed
Applications:
Using Insight(itk) and
The Visualization Toolkit(vtk)
Bill Lorensen
Jim Miller
GE Research
Niskayuna, NY
41
ITK Meets the Virtual Soldier
GE Global Research
Bill Lorensen, Jim Miller
Dirk Padfield, James Ross
Wes Turner
[email protected]
Outline
1
Activities
Slice
Resolution:
2048 x 1350
2
Atlas Quality Control
Overlay.tcl
3
Atlas Quality Control
Model Generation
z Generated
four types of
models from
segmentation Discrete Smoothed
labels
4
Model Generation
Model Generation
5
VHM Thorax Models
Implicit Anatomical
Modeling
z Label = f(X,Y,Z)
6
Implicit Anatomical
Modeling
0 mm: right_ventricle
2 mm: pericardium
3 mm: left_ventricle
52 mm: mediastinum
53 mm: left_upper_lobe_of_lung
66 mm: superior_lingular_branch_left_pulmonary
68 mm: left_upper_lobe_of_lung
107 mm: unknown
112 mm: left_fourth_rib
117 mm: serratus_anterior_muscle
123 mm: unknown
186 mm: pectoralis_minor_muscle
191 mm: deltoid_muscle
259 mm: unknown
261 mm: subcutaneous_tissue_of_trunk
271 mm: skin_of_trunk
Implicit Anatomical
Modeling
7
RGB to CT Registration
RGB to CT Registration
8
Deformable Registration
Model Refinement
Using LevelSets
9
February 2005 SPIE Tutorial
10
LevelSet Model Refinement
11
LSF Toolkit
Advection
Threshold
12
Curvature
Advection
Threshold
13
ThresholdLevelSet
3D IsolatedConnected LS Model
vs. Initial Model
Pulmonary Trunk
14
ITK Meets the Virtual Soldier
GE Global Research
Bill Lorensen, Jim Miller
Dirk Padfield, James Ross
Wes Turner
[email protected]
15
GE Research ITK in an Industrial Research Lab
ITK in an
Industrial Research Lab
GE Research
Jim Miller
Bill Lorensen
Dan Blezek
Majeid Alyassin
John Schenck
Zhu Li
Matt Turek
Paulo Mendonça
Dirk Padfield
James Ross
ITK at GE Research
• Alzheimer’s Research
– Exploratory Research
– Molecular Imaging
– Diagnostic Pharmaceuticals
• Chronic Obstructive Pulmonary Disease
– Research Tool Development/Product Development
– Image Guided Clinical Trials
• Both projects are quantitative imaging projects
– Reduce images to numbers
• Volumes, Areas, Percent change
• Both projects are studying a disease from an imaging perspective
• Both projects use ITK along with other toolkits and applications
1
GE Research ITK in an Industrial Research Lab
Alzheimer’s Research
• Hypotheses:
– Alzheimer’s patients have elevated brain iron concentrations
• B Drayer, et al., Am. J. Neuroradiol. 7, 373-380, 1986.
• JF Schenck, J. Neurol. Sci 134 (Suppl.), 10-18, 1995.
– Alzheimer’s patients have volumetric differences in key brain
structures
• “A discriminant function analysis demonstrated that a linear
combination of the volumes of the hippocampus and the temporal horn
of the lateral ventricles differentiated 100% of the patients and controls
from one another.”
• Killiany, et al., “Temporal Lobe Regions on Magnetic Resonance
Imaging Identify Patients with Early Alzheimer's Disease”. Archives of
Neurology. 50:949-954, 1993
48.0
Brain Iron as AD
Mean T2
42.0
Marker
40.0
38.0
36.0
0 5 10 15 20 25 30 35 40 45
% Iron
2
GE Research ITK in an Industrial Research Lab
Longitudinal
MRI with no
registration
Checkerboard Difference
Source Target
Original Original
image image
3
GE Research ITK in an Industrial Research Lab
Longitudinal
MRI with mutual
information
registration
Checkerboard Difference
Source Target
Original Original
image image
Design of Experiments
4
GE Research ITK in an Industrial Research Lab
5
GE Research ITK in an Industrial Research Lab
• Emphysema
– Parenchyma disease
– Loss of lung tissue
• Reduced capability to exchange gases
– Loss of elastic recoil
• Reduce capability to exhale
• Chronic Bronchitis
– Airway disease
– Thickening of airway wall
• Restriction of airflow
• Quantitative analysis from CT images
6
GE Research ITK in an Industrial Research Lab
Emphysema
0.3
0.25
percentage
0.2
0.15
0.1
0.05
15
40
10
80
120
region region average
5
area
160
attenuation
0
• Partition lung field into homogeneous regions Class. rate (%) - Müller
• Calculate features for each region Chi-Square 63.16 92.11
– Intensity mean, intensity variance, region area, Jeffrey 57.89 94.74
number of adjacent regions Match 50.00 92.11
• Compare multi-dimensional histograms to EMD 52.63 94.74
canonical cases 5 class and 3 class performance
• Score severity on a 1-5 scale
• Legacy computer vision system
Chronic Bronchitis
TPS
Inlier model
7
GE Research ITK in an Industrial Research Lab
120-3
Lumen Error: 38.3%
Wall Error: 54.1%
177-3
120-2 Lumen Error: 57.7%
Lumen Error: 4.2% Wall Error: 410.9%
Wall Error: 38.3%
103-1
Lumen Error: 2.9%
12-2 Wall Error: 6.2%
Lumen Error: 24.6%
Wall Error: 25.7%
8
GE Research ITK in an Industrial Research Lab
Lumen Area: 1.36 mm2 Lumen Area: 2.14 mm2 (57.7 % Error)
Wall Area: 2.54 mm2 Wall Area: 12.96 mm2 (410.9 % Error)
9
GE Research ITK in an Industrial Research Lab
• PET Segmentation
– Otsu, Expectation-Maximization, Markov Random Field
• Small Animal Research
– CT + PET Mutual Information Registration
• Surgical Navigation
– CT + MR Mutual Information Registration
• Computer Aided Detection
– Watersheds, Level Sets, Connected Confidence, Bayesian Decisions
• Image Quality
– Edge preserving smoothing, Histogram matching
• Facial Reconstruction
– Geodesic morphology
• Virtual Soldier
– Atlas-based segmentation
• Product Teams
– Looking at reference implementations for registration, level sets, etc.
Histogram
Background
Tumor
10
GE Research ITK in an Industrial Research Lab
Publish Product
Publish Evaluate Product
Publish Accelerate Product
Harden
11
NA-MIC
National Alliance for Medical Image Computing
http://na-mic.org
Slicer Overview
Outline
• Slicer
– Overview and History
– Architecture /
Implementation
– Image I/O and
Management
– Segmentation Tools
(EM, Editor)
– DTMRI Tools
– fMRI Tools
– Applications (IGT,
Clinical Research)
1
What is 3D Slicer?
• 3D Slicer is…
– An end-user application for 3D
medical image computing research
and Image Guided Therapy
– A platform for research where new
techniques can be plugged into a
useful framework
– A freely-downloadable program with
source and binaries for Windows,
Linux, Solaris and (sort-of) Mac OSX
– NOT an FDA approved medical
device and CANNOT be used
clinically without proper research
controls (IRB etc.)
– NOT finished – some parts will work
better than others
2
Virtual Endoscopy Example
Delphine Nain, MIT AI
Lab, now at Georgia
Tech
• Automatic or Manual
Path Planning
• Animated Camera
and Controls
http://www.ai.mit.edu/projects/medical-vision/virtual-endoscopy/
National Alliance for Medical Image Computing
http://na-mic.org
Slicer Background
• SPL Image Guided Surgery and Visualization (Kikinis, Westin,
Hata, Halle, others)
• Slicer Application Pulled Together by Dave Gering 1997-1999
with VTK and Tcl
• Further Development and Architecture by Lauren O’Donnell
1999-2001
• Ongoing Development of Slicer’s Base Primarily by Steve
Pieper and Nicole Aucoin
• Many Modules and Contributions by Various Authors
– BWH, MIT, MGH, Georgia Tech, UCSD, JHU…
3
Why Develop with Slicer?
• Start with a Powerful Platform
• Remove Obstacles to Problem Solving
– Access to Every Layer of Source Code:
Numeric, Graphic, Network, etc.
• Commit to an Environment that will Always
be Available
– Not Tied Up in IP of Old Institution
– Not Tied to Proprietary Platform with License
Fees
• Keep Your Own Work Available to You
National Alliance for Medical Image Computing
http://na-mic.org
Slicer Today
• 300K Lines of Code
– Cross-Platform Tcl/Tk
GUI
– VTK/ITK Based C++
Computing
• www.slicer.org
– 166 on slicer-users
– 117 on slicer-devel
– 4000 Registered
Downloads
4
Architecture
• Plug-in Modules consist of Tcl and C++ code with cross-
platform file layout for building and loading
• Standard naming convention and hooks to add GUI and
processing components
• Personally, I find the speed of C++ and the interactive
development of Tcl to be a near-perfect environment
3D Slicer Application
Slicer Base Module 1 … Module N
VTK Tcl
OpenGL Window System
Computer Hardware
Features
• Load Medical Image Data: MR, CT in DICOM, GE, Analyze…
• XML-based File Format: MRML (Medical Reality Markup
Language)
• Interactive Editor: Draw, Threshold, Math Morphology…
• Automated Segmenters: EM Segmentation, Fast Marching,
Level Sets…
• Visualization: Model Building, Stereo Rendering, Animation…
• Registration: Manual, ITK, CNI
• Measurement: Fiducial-Based, Volumetric, Polyhedral
Intersection, Vessel Cross-Section, Osteotomy Planning
• IGT: Tracked Probes, Real-Time Images, Robot Control
• Additional Application-Specific Features in Modules…
5
Administration
• Project Housed at Surgical Planning Lab, Brigham and
Women’s Hospital / Harvard Medical School, Many MIT
CSAIL (formerly AI Lab) Students and Faculty Involved
• CVS, Mailing Lists, etc at the SPL
• Funded Projects Supporting Slicer Base Development
– Neuroimage Analysis Center (NAC): NIH Center at SPL
– Biomedical Informatics Research Network (BIRN): NIH
Supported Neuroimaging Collaboration
– Computer Integrated Surgical Systems and Technology
(CISST): NSF Supported Robotics Collaboration Headed by
JHU
– Virtual Soldier: DARPA Organ Simulation Collaboration
– National Alliance for Medical Image Processing
• Module Development Supported by Application-Oriented
Grants
Image/Scene Management
• XML-Based MRML File
Stores Scene Description
– Volumes (Images, Label
Maps)
– Models
– Hierarchical Affine
Transforms
– Scene Data (Cameras,
Colors, Fiducials, etc).
• Manipulated in World
Coordinates based on
Patient RAS
– Automatically Extracted
from DICOM or GE Files
6
Image Formats
• DICOM, GE, Headerless, Analyze
– Best Support for MR
– CT and RGB Support limited
– Real-Time from OpenMR and US
• Time Series
– Analyze Sequence
– DICOM Sequence
– BXH Files
• BIAC XML Header (Brian Image Analysis Center, Duke)
• Like MRML for fMRI; Integration Work Ongoing
7
EM Segmenter
Segmentation tool designed for
fully automatic, high-quality
parcellation of the brain*:
• Segmentation of cortical
and ventricle substructures
• Multi channel input
• Hierarchical segmentation
based on anatomy
• Multi threaded
• User friendly interface
* For further information see Pohl et al. “Incorporating Non-Rigid Registration into
Expectation Maximization Algorithm to Segment MR Images”, MICCAI 2002, pp. 564-572
National Alliance for Medical Image Computing
http://na-mic.org
Models
• Triangle Meshes
from Label Maps
– Marching Cubes,
Decimation,
Smoothing
• Model Hierarchies
• Clipping By Slice
Planes
8
Registration
• Interactive Manual
Transform Editing
• Landmark Based
Alignment
• Rigid Intensity Registration
– Mutual Information Metric
– ITK Implementation
• Non-Rigid Registration
– Demon’s Method
– Available by Request to CNI
• Multiple MR Gradient
Acquisitions
– Sensitive to Brownian Diffusion of
Water
– Cell Membranes Restrict Diffusion
• Post Processing to Extract
Probable White Matter Tracts
– Actual Tracts are Far Below the
Resolution of the Scan
9
DTMRI Tools
• Convert Gradient
Images to Tensors
• Generate Scalars
– ADC, FA, etc
• Visualize Glyphs
• Tractography
– User Guided
– From ROI
10
DTMRI Examples
• White Matter Atlas
– Under Development in Slicer
by James Fallon, UCI
11
Application: Pre-Operative Map
• Structural
– MRI Tumor Segmentation
• DTI
– Diffusion Tensor Imaging
• fMRI
– Functional MRI
• MEG
– Magneto Encephlogram
• Anatomy Atlas
– “Textbook” Information
National Alliance for Medical Image Computing
http://na-mic.org
12
Medical Image Analysis with ITK and Related Open-Source
Software
This course introduces attendees to select open-source efforts in the field of medical image
analysis. Opportunities for users and developers are presented.
The course particularly focuses on the open-source Insight Toolkit (ITK) for medical image
segmentation and registration. The course describes the procedure for downloading and installing
the toolkit and covers the use of its data representation and filtering classes. Attendees are shown
how ITK can be used in their research, rapid prototyping, and application development.
LEARNING OUTCOMES
After completing this course, attendees will be able to:
• contribute to and benefit from open-source software for medical image analysis
• download and install the ITK toolkit
• start their own software project based on ITK
• design and construct an image processing pipeline
• combine ITK filters for medical image segmentation
• combine ITK components for medical image registration
INTENDED AUDIENCE
This course is intended for anyone involved in medical image analysis. In particular it targets
graduate students, researchers and professionals in the areas of computer science and medicine.
Attendees should have an intermediate level on object oriented programming with C++ and must
be familiar with the basics of medical image processing and analysis.
COURSE LEVEL
Intermediate
COURSE LENGTH
Full-day (6.5 hours)
COURSE SCHEDULE
Luis Ibanez, Kitware Inc.
1) The Insight Software Consortium: contributing and using open-source
2) The architecture and installation of the Insight Toolkit
INSTRUCTORS
Luis Ibanez is a Research Engineer at Kitware, Inc. He received a BSc in Physics in 1989 and a
MSc in Optics in 1994 from the Universidad Industrial de Santander (Bucaramanga, Colombia). He
received a PhD in 2000 from the Universite de Rennes I (Rennes, France). From 1999 to 2001 he
was Research Assistant Professor in the Division of Neurosurgery at the University of North
Carolina at Chapel Hill. His current research interest the application of genomics paradigms to
computation.
Josh Cates is a member of the research staff of the Scientific Computing and Imaging Institute at
the University of Utah's School of Computer Science. He received his BS degree in Biology in 1995
and MS in Computer Science in 1999 from the University of Tennessee. His interests include
software engineering and problems in computer vision, including image processing (differential
geometry and p.d.e.-based methods), image segmentation, and computed tomography.
Lydia Ng is a member of the Informatics group at the Allen Institute for Brain Science. She
received a BE in Electrical Engineering and a BSc in Computer Science in 1994 from The University
of New South Wales (Sydney, Australia). She received a Ph.D. in 2000 from Macquarie University
(Sydney, Australia). Her research interests include: image registration, PDE based image
processing methods, motion estimation and development of software for medical image processing
and analysis.
Julien Jomier is a research faculty member in the Computer-Aided Diagnosis and Display
Laboratory at the University of North Carolina at Chapel Hill. He has extensive C++ programming
and software design experience as well as medical image analysis and data handling expertise. He
is currently continuing his development of ITK’s spatialObject library and his freely available spatial
object viewer library. Julien is also contributing to the development of the Insight Journal, the
Image Guided Surgery Toolkit, and numerous other open-source efforts.
William Lorensen is a Graphics Engineer in the Electronic Systems Laboratory at GE's Corporate
Research and Development Center in Schenectady, NY. He has over 35 years of experience in
computer graphics and software engineering. He is currently working on algorithms for 3D medical
graphics and scientific visualization.
Stephen Aylward is the director of the Computer-Aided Diagnosis and Display Laboratory and an
Associate Professor of Radiology, Computer Science, and Surgery at the University of North
Carolina at Chapel Hill. The CADDLab's research spans medical image analysis research for
disease detection, diagnosis, and treatment guidance. Dr. Aylward's research focuses on
segmenting and registering medical images using model-to-image registration strategies.