Image Registration Lecture 7: Getting Started with ITK March 15, 2005
description
Transcript of Image Registration Lecture 7: Getting Started with ITK March 15, 2005
![Page 1: Image Registration Lecture 7: Getting Started with ITK March 15, 2005](https://reader035.fdocuments.in/reader035/viewer/2022062500/5681581e550346895dc583e6/html5/thumbnails/1.jpg)
Image Registration Lecture 7: Getting Started with ITK
March 15, 2005
Image Registration Lecture 7: Getting Started with ITK
March 15, 2005
Prof. Charlene TsaiProf. Charlene Tsai
![Page 2: Image Registration Lecture 7: Getting Started with ITK March 15, 2005](https://reader035.fdocuments.in/reader035/viewer/2022062500/5681581e550346895dc583e6/html5/thumbnails/2.jpg)
Image Registration Lecture 6 2
The Insight ToolkitThe Insight Toolkit
The Segmentation andRegistration Toolkit
![Page 3: Image Registration Lecture 7: Getting Started with ITK March 15, 2005](https://reader035.fdocuments.in/reader035/viewer/2022062500/5681581e550346895dc583e6/html5/thumbnails/3.jpg)
Image Registration Lecture 6 3
What is ITK ?What is ITK ?
Image Processing
Segmentation
Registration
No Graphical User Interface (GUI)
No Visualization
![Page 4: Image Registration Lecture 7: Getting Started with ITK March 15, 2005](https://reader035.fdocuments.in/reader035/viewer/2022062500/5681581e550346895dc583e6/html5/thumbnails/4.jpg)
Image Registration Lecture 6 4
ITK SponsorsITK Sponsors
The NationalScienceFoundation
The NationalInstitute for Dental and Craniofacial Research
The National Institute of Neurological Disorders and Stroke
![Page 5: Image Registration Lecture 7: Getting Started with ITK March 15, 2005](https://reader035.fdocuments.in/reader035/viewer/2022062500/5681581e550346895dc583e6/html5/thumbnails/5.jpg)
Image Registration Lecture 6 5
ITK DevelopersITK Developers
![Page 6: Image Registration Lecture 7: Getting Started with ITK March 15, 2005](https://reader035.fdocuments.in/reader035/viewer/2022062500/5681581e550346895dc583e6/html5/thumbnails/6.jpg)
Image Registration Lecture 6 6
ITK DevelopersITK Developers
GE CRDBill Lorensen
InsightfulLydia Ng
U PennDimitris Metaxas
Harvard BWH*Ron Kikinis
U Penn*Jim Gee
Columbia U.*Celina Imielinska
KitwareWill Schroeder
UNC-CHStephen Aylward
U TennesseeRoss Whitaker
U Pittsburgh*George Stetten
U Utah*Ross Whitaker
* indicates a subcontractor.
![Page 7: Image Registration Lecture 7: Getting Started with ITK March 15, 2005](https://reader035.fdocuments.in/reader035/viewer/2022062500/5681581e550346895dc583e6/html5/thumbnails/7.jpg)
Image Registration Lecture 6 7
The Insight ToolkitThe Insight Toolkit
Starting with ITK
![Page 8: Image Registration Lecture 7: Getting Started with ITK March 15, 2005](https://reader035.fdocuments.in/reader035/viewer/2022062500/5681581e550346895dc583e6/html5/thumbnails/8.jpg)
Image Registration Lecture 6 8
Integrating ITK in your applicationIntegrating ITK in your application
C++ Glue Code
ITK
ImageProcessing
GUI
{MFC,Qt,wxWinFLTK}
Visualization
{OpenGL, VTK}
![Page 9: Image Registration Lecture 7: Getting Started with ITK March 15, 2005](https://reader035.fdocuments.in/reader035/viewer/2022062500/5681581e550346895dc583e6/html5/thumbnails/9.jpg)
Image Registration Lecture 6 9
What do I need ?What do I need ?
C++ Compiler
gcc 2.95 – 3.3Visual C++ 6.0Visual C++ 7.0VC++ 7 2003
Intel 5.0IRIX CC
Borland 5.0Mac - gcc
CMake
www.cmake.org
![Page 10: Image Registration Lecture 7: Getting Started with ITK March 15, 2005](https://reader035.fdocuments.in/reader035/viewer/2022062500/5681581e550346895dc583e6/html5/thumbnails/10.jpg)
Image Registration Lecture 6 10
Downloading ITKDownloading ITK
Live on the Edge
CVS
Stability
Release tar files
Insight.tgz CVS anonymous
http://www.itk.org
Or download the not-very-recent copy from the course website
![Page 11: Image Registration Lecture 7: Getting Started with ITK March 15, 2005](https://reader035.fdocuments.in/reader035/viewer/2022062500/5681581e550346895dc583e6/html5/thumbnails/11.jpg)
Image Registration Lecture 6 11
Configuring ITKConfiguring ITK
Source Tree
ITK
Common
Algorithms
BasicFilter
Numerics
IO
ITKb
Common
Algorithms
BasicFilter
Numerics
IO
Binary Tree
Recommended !
Out Source Build
InSourceBuild
![Page 12: Image Registration Lecture 7: Getting Started with ITK March 15, 2005](https://reader035.fdocuments.in/reader035/viewer/2022062500/5681581e550346895dc583e6/html5/thumbnails/12.jpg)
Image Registration Lecture 6 12
Configuring ITK – MS-WindowsConfiguring ITK – MS-Windows
Run CMake
Select the SOURCE directory
Select the BINARY directory
Select your Compiler
![Page 13: Image Registration Lecture 7: Getting Started with ITK March 15, 2005](https://reader035.fdocuments.in/reader035/viewer/2022062500/5681581e550346895dc583e6/html5/thumbnails/13.jpg)
Image Registration Lecture 6 13
Configuring ITK – MS-WindowsConfiguring ITK – MS-Windows
![Page 14: Image Registration Lecture 7: Getting Started with ITK March 15, 2005](https://reader035.fdocuments.in/reader035/viewer/2022062500/5681581e550346895dc583e6/html5/thumbnails/14.jpg)
Image Registration Lecture 6 14
Configuring ITK – MS-WindowsConfiguring ITK – MS-Windows
Disable BUILD_EXAMPLES
Disable BUILD_SHARED_LIBS
Disable BUILD_TESTING
Click “Configure” to configure
Click “OK” to generate project files
![Page 15: Image Registration Lecture 7: Getting Started with ITK March 15, 2005](https://reader035.fdocuments.in/reader035/viewer/2022062500/5681581e550346895dc583e6/html5/thumbnails/15.jpg)
Image Registration Lecture 6 15
Configuring ITK – UnixConfiguring ITK – Unix
Create the BINARY directory (mkdir)
Change directory to the BINARY directory (cd)
Set the environment variables CC and CXX
setenv CC /usr/bin/gcc; setenv CXX /usr/bin/g++ OR
export CC=/usr/bin/gcc; export CXX=/usr/bin/g++
Type ccmake with argument the SOURCE directory
![Page 16: Image Registration Lecture 7: Getting Started with ITK March 15, 2005](https://reader035.fdocuments.in/reader035/viewer/2022062500/5681581e550346895dc583e6/html5/thumbnails/16.jpg)
Image Registration Lecture 6 16
Configuring ITK – UnixConfiguring ITK – Unix
![Page 17: Image Registration Lecture 7: Getting Started with ITK March 15, 2005](https://reader035.fdocuments.in/reader035/viewer/2022062500/5681581e550346895dc583e6/html5/thumbnails/17.jpg)
Image Registration Lecture 6 17
Configuring ITK – UnixConfiguring ITK – Unix
Disable BUILD_EXAMPLES
Disable BUILD_SHARED_LIBS
Disable BUILD_TESTING
Type “c” to configure
Type “g” to generate the Makefiles
Type “make” to start building
![Page 18: Image Registration Lecture 7: Getting Started with ITK March 15, 2005](https://reader035.fdocuments.in/reader035/viewer/2022062500/5681581e550346895dc583e6/html5/thumbnails/18.jpg)
Image Registration Lecture 6 18
Building ITKBuilding ITK
![Page 19: Image Registration Lecture 7: Getting Started with ITK March 15, 2005](https://reader035.fdocuments.in/reader035/viewer/2022062500/5681581e550346895dc583e6/html5/thumbnails/19.jpg)
Image Registration Lecture 6 19
Building ITKBuilding ITK
Open ITK.dsw in the Binary Directory
Select ALL_BUILD project
Build it …It will take about 15 minutes …
![Page 20: Image Registration Lecture 7: Getting Started with ITK March 15, 2005](https://reader035.fdocuments.in/reader035/viewer/2022062500/5681581e550346895dc583e6/html5/thumbnails/20.jpg)
Image Registration Lecture 6 20
Building ITKBuilding ITK
![Page 21: Image Registration Lecture 7: Getting Started with ITK March 15, 2005](https://reader035.fdocuments.in/reader035/viewer/2022062500/5681581e550346895dc583e6/html5/thumbnails/21.jpg)
Image Registration Lecture 6 21
Building ITKBuilding ITK
Open ITK.sln in the Binary Directory
Select ALL_BUILD project
Build it …It will take about 15 minutes …
![Page 22: Image Registration Lecture 7: Getting Started with ITK March 15, 2005](https://reader035.fdocuments.in/reader035/viewer/2022062500/5681581e550346895dc583e6/html5/thumbnails/22.jpg)
Image Registration Lecture 6 22
Building ITKBuilding ITK
Most of ITK classes are C++ Templates
Basic libraries are small
they only contain non-templated classes
Basic libraries are built in about 15 min
![Page 23: Image Registration Lecture 7: Getting Started with ITK March 15, 2005](https://reader035.fdocuments.in/reader035/viewer/2022062500/5681581e550346895dc583e6/html5/thumbnails/23.jpg)
Image Registration Lecture 6 23
Verifying the BuiltVerifying the Built
Libraries will be found in
In MS-Windows
ITK_BINARY / bin / { Debug, Release }
In UNIX
ITK_BINARY / bin /
![Page 24: Image Registration Lecture 7: Getting Started with ITK March 15, 2005](https://reader035.fdocuments.in/reader035/viewer/2022062500/5681581e550346895dc583e6/html5/thumbnails/24.jpg)
Image Registration Lecture 6 24
Verifying the BuiltVerifying the Built
ITKCommon
ITKBasicFilters
ITKAlgorithms
ITKNumerics
ITKFEM
The following libraries should be there
ITKIO
ITKStatistics
ITKMetaIO
itkpng
itkzlib
![Page 25: Image Registration Lecture 7: Getting Started with ITK March 15, 2005](https://reader035.fdocuments.in/reader035/viewer/2022062500/5681581e550346895dc583e6/html5/thumbnails/25.jpg)
Image Registration Lecture 6 25
Using ITK – Hello World (Review)Using ITK – Hello World (Review)
Create“CMakeLists.txt”
& cxx filesIn the source
directory
RunCMake
• Select Source Dir• Select Binary Dir
![Page 26: Image Registration Lecture 7: Getting Started with ITK March 15, 2005](https://reader035.fdocuments.in/reader035/viewer/2022062500/5681581e550346895dc583e6/html5/thumbnails/26.jpg)
Image Registration Lecture 6 26
Using ITK – Hello WorldUsing ITK – Hello World
Accept the default in
CMAKE_BACKBARD_COMPATIBILITY
Leave empty EXECUTABLE_OUTPUT_PATH
Leave empty LIBRARY_OUTPUT_PATH
Set ITK_DIR to the binary directory
where ITK was built
![Page 27: Image Registration Lecture 7: Getting Started with ITK March 15, 2005](https://reader035.fdocuments.in/reader035/viewer/2022062500/5681581e550346895dc583e6/html5/thumbnails/27.jpg)
Image Registration Lecture 6 27
Building the HelloWorld ProjectBuilding the HelloWorld Project
Open HelloWorld.dsw (or .sln)
generated by CMake
Select ALL_BUILD project
Build it …It will take about 3 seconds …
Locate the file HelloWorld.exe
Run it…
It should produce the message:
ITK Hello World !
![Page 28: Image Registration Lecture 7: Getting Started with ITK March 15, 2005](https://reader035.fdocuments.in/reader035/viewer/2022062500/5681581e550346895dc583e6/html5/thumbnails/28.jpg)
Image Registration Lecture 6 28
How to Find What Your NeedHow to Find What Your Need
http://www.itk.org/Doxygen/html/index.html
Follow the link Alphabetical List
Follow the link Groups
Post to the insight-users mailing list
http://www.itk.org
![Page 29: Image Registration Lecture 7: Getting Started with ITK March 15, 2005](https://reader035.fdocuments.in/reader035/viewer/2022062500/5681581e550346895dc583e6/html5/thumbnails/29.jpg)
Image Registration Lecture 6 29
Doxygen DocumentationDoxygen Documentation
![Page 30: Image Registration Lecture 7: Getting Started with ITK March 15, 2005](https://reader035.fdocuments.in/reader035/viewer/2022062500/5681581e550346895dc583e6/html5/thumbnails/30.jpg)
Image Registration Lecture 6 30
Doxygen GroupsDoxygen Groups
![Page 31: Image Registration Lecture 7: Getting Started with ITK March 15, 2005](https://reader035.fdocuments.in/reader035/viewer/2022062500/5681581e550346895dc583e6/html5/thumbnails/31.jpg)
Image Registration Lecture 6 31
Doxygen Alphabetical ListDoxygen Alphabetical List
![Page 32: Image Registration Lecture 7: Getting Started with ITK March 15, 2005](https://reader035.fdocuments.in/reader035/viewer/2022062500/5681581e550346895dc583e6/html5/thumbnails/32.jpg)
Image Registration Lecture 6 32
ITK ArchitectureITK Architecture
ITK Architecture
![Page 33: Image Registration Lecture 7: Getting Started with ITK March 15, 2005](https://reader035.fdocuments.in/reader035/viewer/2022062500/5681581e550346895dc583e6/html5/thumbnails/33.jpg)
Image Registration Lecture 6 33
ITK BasicsITK Basics
C++ Generic Programming Data Pipeline
Multi-threading
Streaming
Exceptions
Events / Observers
Tcl and Python wrapping
![Page 34: Image Registration Lecture 7: Getting Started with ITK March 15, 2005](https://reader035.fdocuments.in/reader035/viewer/2022062500/5681581e550346895dc583e6/html5/thumbnails/34.jpg)
Image Registration Lecture 6 34
Generic ProgrammingGeneric Programming
Example: STL Standard Template Library
Abstraction of Types and Behaviors
std::vector< T >
std::vector< int > std::vector< double >
std::vector< char * >
std::vector< Point >
std::vector< Image >
![Page 35: Image Registration Lecture 7: Getting Started with ITK March 15, 2005](https://reader035.fdocuments.in/reader035/viewer/2022062500/5681581e550346895dc583e6/html5/thumbnails/35.jpg)
Image Registration Lecture 6 35
ITK Image ClassITK Image Class
itk::Image< PixelType , Dimension >
itk::Image< char , 2 > itk::Image< char , 3 >
itk::Image< char , 4 >
itk::Image< float , 2 >
itk::Image< RGB , 3 >
itk::Image< unsigned short , 2 >
itk::Image< itk::Vector<float,2> , 2 >
![Page 36: Image Registration Lecture 7: Getting Started with ITK March 15, 2005](https://reader035.fdocuments.in/reader035/viewer/2022062500/5681581e550346895dc583e6/html5/thumbnails/36.jpg)
Image Registration Lecture 6 36
C++ NamespacesC++ Namespaces
Avoid naming collisions
itk::
itk::Statistics::
itk::fem::
itk::fem::itpack
itk::bio
NEVER DO:
using namespace itk;using namespace std;
![Page 37: Image Registration Lecture 7: Getting Started with ITK March 15, 2005](https://reader035.fdocuments.in/reader035/viewer/2022062500/5681581e550346895dc583e6/html5/thumbnails/37.jpg)
Image Registration Lecture 6 37
ITK Most Common KeywordITK Most Common Keyword
typedef
typedef itk::Image< char , 2 > ImageTypetypedef itk::ImageFilter< ImageType , ImageType > FilterType
otherwise...
itk::ImageFilter< Image< char , 2 > , Image< char , 2 > > FilterType
![Page 38: Image Registration Lecture 7: Getting Started with ITK March 15, 2005](https://reader035.fdocuments.in/reader035/viewer/2022062500/5681581e550346895dc583e6/html5/thumbnails/38.jpg)
Image Registration Lecture 6 38
Smart PointersSmart Pointers
ObjectSmartPointer
SmartPointer
SmartPointer
counter=0counter=1counter=2counter=3
Self - Delete
![Page 39: Image Registration Lecture 7: Getting Started with ITK March 15, 2005](https://reader035.fdocuments.in/reader035/viewer/2022062500/5681581e550346895dc583e6/html5/thumbnails/39.jpg)
Image Registration Lecture 6 39
Smart PointersSmart Pointers
typedef itk::Image< char , 2 > ImageTypetypedef itk::ImageFilter< ImageType , ImageType > FilterType
FilterType::Pointer filter = FilterType::New();
ImageType::Pointer image = filter->GetOutput();
NO NEED FOR
filter->Delete();
![Page 40: Image Registration Lecture 7: Getting Started with ITK March 15, 2005](https://reader035.fdocuments.in/reader035/viewer/2022062500/5681581e550346895dc583e6/html5/thumbnails/40.jpg)
Image Registration Lecture 6 40
Const CorrectnessConst Correctness
Knowing constancy is Insight.
Not knowing constancy leads to disaster.
Tao Te Ching, XVI. Lao Tsu
![Page 41: Image Registration Lecture 7: Getting Started with ITK March 15, 2005](https://reader035.fdocuments.in/reader035/viewer/2022062500/5681581e550346895dc583e6/html5/thumbnails/41.jpg)
Image Registration Lecture 6 41
Const Smart PointersConst Smart Pointers
typedef itk::Image< char , 2 > ImageTypetypedef itk::ImageFilter< ImageType , ImageType > FilterType
FilterType::Pointer filter = FilterType::New();
ImageType::ConstPointer image = filter->GetOutput();
Can only invoke “const” methods
image->GetSpacing ();
Compiler error for “non-const” methods
image->SetSpacing ( spacing );
![Page 42: Image Registration Lecture 7: Getting Started with ITK March 15, 2005](https://reader035.fdocuments.in/reader035/viewer/2022062500/5681581e550346895dc583e6/html5/thumbnails/42.jpg)
Image Registration Lecture 6 42
Data PipelineData Pipeline
Image Filter Image
FilterImage Image
ImageFilter
![Page 43: Image Registration Lecture 7: Getting Started with ITK March 15, 2005](https://reader035.fdocuments.in/reader035/viewer/2022062500/5681581e550346895dc583e6/html5/thumbnails/43.jpg)
Image Registration Lecture 6 43
Image RegionsImage Regions
LargestPossibleRegion
BufferedRegion
RequestedRegion
![Page 44: Image Registration Lecture 7: Getting Started with ITK March 15, 2005](https://reader035.fdocuments.in/reader035/viewer/2022062500/5681581e550346895dc583e6/html5/thumbnails/44.jpg)
Image Registration Lecture 6 44
StreamingStreaming
OutputImage
Filter
Processing Large Images
InputImage
![Page 45: Image Registration Lecture 7: Getting Started with ITK March 15, 2005](https://reader035.fdocuments.in/reader035/viewer/2022062500/5681581e550346895dc583e6/html5/thumbnails/45.jpg)
Image Registration Lecture 6 45
Simple Image IOSimple Image IO
ImageFile
ImageFileReader Image
Filter
ImageImage
FileImageFileWriter
![Page 46: Image Registration Lecture 7: Getting Started with ITK March 15, 2005](https://reader035.fdocuments.in/reader035/viewer/2022062500/5681581e550346895dc583e6/html5/thumbnails/46.jpg)
Image Registration Lecture 6 46
Simple Image IOSimple Image IO
CustomImageIO
ImageFile
ImageFileReader Image
PNGImageIO
VTKImageIO DICOMImageIOGIPLImageIO
MetaImageIO AnalyzeImageIO
Loadable Factories
![Page 47: Image Registration Lecture 7: Getting Started with ITK March 15, 2005](https://reader035.fdocuments.in/reader035/viewer/2022062500/5681581e550346895dc583e6/html5/thumbnails/47.jpg)
Image Registration Lecture 6 47
Simple Image IOSimple Image IO
#include “itkImage.h”#include “itkImageFileReader.h”#include “itkImageFileWriter.h”
typedef itk::Image< char , 2 > ImageType;typedef itk::ImageFileReader< ImageType > ReaderType;typedef itk::ImageFileWriter< ImageType > WriterType;
ReaderType::Pointer reader = ReaderType::New();WriterType::Pointer writer = WriterType::New();
reader->SetFileName( “inputImage.dcm” ); // DICOMwriter->SetFileName( “outputImage.hdr” ); // Analyze
writer->SetInput( reader->GetOutput() ); writer->Update();
![Page 48: Image Registration Lecture 7: Getting Started with ITK March 15, 2005](https://reader035.fdocuments.in/reader035/viewer/2022062500/5681581e550346895dc583e6/html5/thumbnails/48.jpg)
Image Registration Lecture 6 48
ExceptionsExceptions
Error Management
ITK Layer
Application Layer
![Page 49: Image Registration Lecture 7: Getting Started with ITK March 15, 2005](https://reader035.fdocuments.in/reader035/viewer/2022062500/5681581e550346895dc583e6/html5/thumbnails/49.jpg)
Image Registration Lecture 6 49
ExceptionsExceptions
try {
filter->Update();
}
catch( itk::ExceptionObject & exp )
{
std::cerr << exp << std::endl;
}
![Page 50: Image Registration Lecture 7: Getting Started with ITK March 15, 2005](https://reader035.fdocuments.in/reader035/viewer/2022062500/5681581e550346895dc583e6/html5/thumbnails/50.jpg)
Image Registration Lecture 6 50
Events and Commands/ObserversEvents and Commands/Observers
Itk::ObjectItk::Command
itk::Command
itk::Command
itk::Command
itk::Command
Event
Event
Event
Event
Event
![Page 51: Image Registration Lecture 7: Getting Started with ITK March 15, 2005](https://reader035.fdocuments.in/reader035/viewer/2022062500/5681581e550346895dc583e6/html5/thumbnails/51.jpg)
Image Registration Lecture 6 51
EventsEvents
Common Events
AnyEvent()
StartEvent()
EndEvent()
ProgressEvent()
IterationEvent()
![Page 52: Image Registration Lecture 7: Getting Started with ITK March 15, 2005](https://reader035.fdocuments.in/reader035/viewer/2022062500/5681581e550346895dc583e6/html5/thumbnails/52.jpg)
Image Registration Lecture 6 52
Events and Commands/ObserversEvents and Commands/Observers
Itk::Object
Itk::ProcessObject
Itk::FilterXY
Itk::Command
MyCommand
Execute()
AddObserver( )AnyEvent
MyEvent
![Page 53: Image Registration Lecture 7: Getting Started with ITK March 15, 2005](https://reader035.fdocuments.in/reader035/viewer/2022062500/5681581e550346895dc583e6/html5/thumbnails/53.jpg)
Image Registration Lecture 6 53
GUI CommunicationGUI Communication
ITK Layer
GUI LayerWidget
FilterX
CallbackCommand
FilterX
Widget
Observer
![Page 54: Image Registration Lecture 7: Getting Started with ITK March 15, 2005](https://reader035.fdocuments.in/reader035/viewer/2022062500/5681581e550346895dc583e6/html5/thumbnails/54.jpg)
Image Registration Lecture 6 54
EndEnd
Enjoy ITK !