CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004
description
Transcript of CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004
![Page 1: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/1.jpg)
CSci 6971: Image Registration Lecture 6: Getting Started with ITK
January 30, 2004
Prof. Chuck Stewart, RPIDr. Luis Ibanez, Kitware
![Page 2: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/2.jpg)
Image Registration Lecture 6 2
Overview of Course Software
Insight Toolkit (ITK) NLM funded project to develop open-source
medical image processing, segmentation and registration libraries
Consortium of 3 companies and 3 universities with 6 more universities as subcontractors
VXL (Vision X Libraries), where X is a place-holder for names such as “image”, “numerics” Developed as volunteer effort by computer vision
researchers at GE and several universities
![Page 3: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/3.jpg)
Image Registration Lecture 6 3
CenSSIS Registration Tool Suite Exploit ITK
3D representations, processing algorithms, etc. Intensity-based registration Extensive examples and documentation
CenSSIS development currently using VXL Significant, novel feature-based algorithms developed using
VXL Base library for robust estimation and other feature-based
representations Working together
Some shared libraries already exist (numerics) Code can be compiled and linked, so that objects and functions
from ITK and VXL can work together. BUT, do need to learn parts of two libraries
![Page 4: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/4.jpg)
Image Registration Lecture 6 4
Moving Forward In This Course CD distributed
ITK, Cmake, VXL Does not yet contain the feature-based registration
library Lectures 6-10
ITK and intensity-based registration Lectures 11-15
Rensselaer registration library will be delivered and used for feature-based registration
HW exercises will explore both toolkits Either can be used for large programming project
Choice should be individual and depend on the chosen project.
![Page 5: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/5.jpg)
Image Registration Lecture 6 5
The Insight Toolkit
The Segmentation andRegistration Toolkit
![Page 6: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/6.jpg)
Image Registration Lecture 6 6
What is ITK ?
Image Processing
Segmentation
Registration
No Graphical User Interface (GUI)
No Visualization
![Page 7: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/7.jpg)
Image Registration Lecture 6 7
ITK Sponsors
The NationalScienceFoundation
The NationalInstitute for Dental and Craniofacial Research
The National Institute of Neurological Disorders and Stroke
![Page 8: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/8.jpg)
Image Registration Lecture 6 8
ITK Developers
![Page 9: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/9.jpg)
Image Registration Lecture 6 9
ITK 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 10: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/10.jpg)
Image Registration Lecture 6 10
ITK by the Numbers
March 2000 First code check-in
1000 # of nightly builds
718 tests run nightly
21 # of platforms ( software + hardware )
700 # of classes
1600 # of files with code
![Page 11: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/11.jpg)
Image Registration Lecture 6 11
ITK by the Numbers
400K # of lines of code
100K # of lines of test code
35K # of lines of examples
150K # of lines of Applications
160 weekly t-cons
50 unique developers
![Page 12: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/12.jpg)
Image Registration Lecture 6 12
ITK by the Numbers
500 # of users subscribed to the mailing-list
300 # of emails posted monthly to the users-list
565 # of pages in the Software Guide PDF document
1800 # of monthly hits to the URL of the Software Guide PDF
1900 # of monthly hits to the URL of the Tutorial PDF
2400 # of monthly hits to the source code files (.zip + .tar.gz)
![Page 13: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/13.jpg)
Image Registration Lecture 6 13
The Insight Toolkit
Starting with ITK
![Page 14: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/14.jpg)
Image Registration Lecture 6 14
Integrating ITK in your application
C++ Glue Code
ITK
ImageProcessing
GUI
{MFC,Qt,wxWinFLTK}
Visualization
{OpenGL, VTK}
![Page 15: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/15.jpg)
Image Registration Lecture 6 15
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 16: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/16.jpg)
Image Registration Lecture 6 16
Downloading ITK
Live on the Edge
CVS
Stability
Release tar files
Insight.tgz CVS anonymous
http://www.itk.org
![Page 17: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/17.jpg)
Image Registration Lecture 6 17
Copying ITK from the CD
/Source/ InsightToolkit-1.6.0.zip InsightToolkit-1.6.0.tar.gz
![Page 18: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/18.jpg)
Image Registration Lecture 6 18
Downloading CMake
ITKRequires
1.8.3
http://www.cmake.org
Latest CMake Release
Get the Binaries
InstallBinaries
![Page 19: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/19.jpg)
Image Registration Lecture 6 19
Installing CMake from the CD
/CMake/ cmake-1.8.3.tar.gz cmake-1.8.3-x86-win.zip cmake-1.8.3-x86-linux.tar.gz
CMakeSetup183.exe
![Page 20: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/20.jpg)
Image Registration Lecture 6 20
Configuring ITK
Source Tree
ITK
Common
Algorithms
BasicFilter
Numerics
IO
ITKb
Common
Algorithms
BasicFilter
Numerics
IO
Binary Tree
Recommended !
Out Source Build
InSourceBuild
![Page 21: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/21.jpg)
Image Registration Lecture 6 21
Configuring ITK – MS-Windows
Run CMake
Select the SOURCE directory
Select the BINARY directory
Select your Compiler
![Page 22: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/22.jpg)
Image Registration Lecture 6 22
Configuring ITK – MS-Windows
![Page 23: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/23.jpg)
Image Registration Lecture 6 23
Configuring ITK – MS-Windows
Disable BUILD_EXAMPLES
Disable BUILD_SHARED_LIBS
Disable BUILD_TESTING
Click “Configure” to configure
Click “OK” to generate project files
![Page 24: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/24.jpg)
Image Registration Lecture 6 24
Configuring 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 25: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/25.jpg)
Image Registration Lecture 6 25
Configuring ITK – Unix
![Page 26: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/26.jpg)
Image Registration Lecture 6 26
Configuring 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 27: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/27.jpg)
Image Registration Lecture 6 27
Building ITK
![Page 28: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/28.jpg)
Image Registration Lecture 6 28
Building ITK
Open ITK.dsw in the Binary Directory
Select ALL_BUILD project
Build it …It will take about 15 minutes …
![Page 29: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/29.jpg)
Image Registration Lecture 6 29
Building ITK
![Page 30: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/30.jpg)
Image Registration Lecture 6 30
Building ITK
Open ITK.sln in the Binary Directory
Select ALL_BUILD project
Build it …It will take about 15 minutes …
![Page 31: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/31.jpg)
Image Registration Lecture 6 31
Building 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 32: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/32.jpg)
Image Registration Lecture 6 32
Verifying the Built
Libraries will be found in
In MS-Windows
ITK_BINARY / bin / { Debug, Release }
In UNIX
ITK_BINARY / bin /
![Page 33: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/33.jpg)
Image Registration Lecture 6 33
Verifying the Built
ITKCommon
ITKBasicFilters
ITKAlgorithms
ITKNumerics
ITKFEM
The following libraries should be there
ITKIO
ITKStatistics
ITKMetaIO
itkpng
itkzlib
![Page 34: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/34.jpg)
Image Registration Lecture 6 34
Using ITK – Hello World
Copy “HelloWorld.cxx”“CMakeLists.txt”
from the Examples/Installation
Directoryinto another
directory
RunCMake
• Select Source Dir• Select Binary Dir
![Page 35: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/35.jpg)
Image Registration Lecture 6 35
Using ITK – Hello World
![Page 36: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/36.jpg)
Image Registration Lecture 6 36
Using ITK – Hello World
![Page 37: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/37.jpg)
Image Registration Lecture 6 37
Using 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 38: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/38.jpg)
Image Registration Lecture 6 38
Building the HelloWorld Project
Open HelloWorld.dsw (or .sln) generated by CMake
Select ALL_BUILD project
Build it …It will take about 3 seconds …
![Page 39: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/39.jpg)
Image Registration Lecture 6 39
Using ITK – Hello World
![Page 40: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/40.jpg)
Image Registration Lecture 6 40
Using ITK – Hello World
Locate the file HelloWorld.exe
Run it…
It should produce the message:
ITK Hello World !
![Page 41: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/41.jpg)
Image Registration Lecture 6 41
Starting Your Own Project
Create a clean new directory
Write a CMakeLists.txt file
Write a simple .cxx file
Configure with CMake
Build
Run
![Page 42: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/42.jpg)
Image Registration Lecture 6 42
Writing CMakeLists.txt
PROJECT( myProject )
FIND_PACKAGE ( ITK )IF ( ITK_FOUND ) INCLUDE( ${USE_ITK_FILE} )ENDIF( ITK_FOUND )
ADD_EXECUTABLE( myProject myProject.cxx )
TARGET_LINK_LIBRARIES ( myProject ITKCommon ITKIO)
![Page 43: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/43.jpg)
Image Registration Lecture 6 43
Writing myProject.cxx
#include "itkImage.h"#include "itkImageFileReader.h"#include "itkGradientMagnitudeImageFilter.h"
int main( int argc, char **argv ) { typedef itk::Image<unsigned short,2> ImageType; typedef itk::ImageFileReader<ImageType> ReaderType; typedef itk::GradientMagnitudeImageFilter< ImageType,ImageType> FilterType;
ReaderType::Pointer reader = ReaderType::New(); FilterType::Pointer filter = FilterType::New();
reader->SetFileName( argv[1] ); filter->SetInput( reader->GetOutput() ); filter->Update(); return 0;}
![Page 44: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/44.jpg)
Image Registration Lecture 6 44
How 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 45: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/45.jpg)
Image Registration Lecture 6 45
Doxygen Documentation
![Page 46: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/46.jpg)
Image Registration Lecture 6 46
Doxygen Groups
![Page 47: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/47.jpg)
Image Registration Lecture 6 47
Doxygen Alphabetical List
![Page 48: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/48.jpg)
Image Registration Lecture 6 48
ITK Architecture
ITK Architecture
![Page 49: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/49.jpg)
Image Registration Lecture 6 49
ITK Basics
C++ Generic Programming Data Pipeline
Multi-threading
Streaming
Exceptions
Events / Observers
Tcl and Python wrapping
![Page 50: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/50.jpg)
Image Registration Lecture 6 50
Generic 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 51: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/51.jpg)
Image Registration Lecture 6 51
ITK 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 52: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/52.jpg)
Image Registration Lecture 6 52
C++ Namespaces
Avoid naming collisions
itk::
itk::Statistics::
itk::fem::
itk::fem::itpack
itk::bio
NEVER DO:
using namespace itk;using namespace std;
![Page 53: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/53.jpg)
Image Registration Lecture 6 53
ITK 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 54: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/54.jpg)
Image Registration Lecture 6 54
Smart Pointers
ObjectSmartPointer
SmartPointer
SmartPointer
counter=0counter=1counter=2counter=3
Self - Delete
![Page 55: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/55.jpg)
Image Registration Lecture 6 55
Smart 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 56: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/56.jpg)
Image Registration Lecture 6 56
Const Correctness
Knowing constancy is Insight.
Not knowing constancy leads to disaster.
Tao Te Ching, XVI. Lao Tsu
![Page 57: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/57.jpg)
Image Registration Lecture 6 57
Const 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 58: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/58.jpg)
Image Registration Lecture 6 58
Data Pipeline
Image Filter Image
FilterImage Image
ImageFilter
![Page 59: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/59.jpg)
Image Registration Lecture 6 59
Image Regions
LargestPossibleRegion
BufferedRegion
RequestedRegion
![Page 60: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/60.jpg)
Image Registration Lecture 6 60
Streaming
OutputImageFilter
Processing Large Images
InputImage
![Page 61: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/61.jpg)
Image Registration Lecture 6 61
Simple Image IO
ImageFile ImageFileReader Image
Filter
ImageImageFile ImageFileWriter
![Page 62: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/62.jpg)
Image Registration Lecture 6 62
Simple Image IO
CustomImageIO
ImageFile ImageFileReader Image
PNGImageIO
VTKImageIO DICOMImageIOGIPLImageIO
MetaImageIO AnalyzeImageIO
Loadable Factories
![Page 63: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/63.jpg)
Image Registration Lecture 6 63
Simple 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 64: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/64.jpg)
Image Registration Lecture 6 64
Exceptions
Error Management
ITK Layer
Application Layer
![Page 65: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/65.jpg)
Image Registration Lecture 6 65
Exceptions
try { filter->Update(); }catch( itk::ExceptionObject & exp ) { std::cerr << exp << std::endl; }
![Page 66: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/66.jpg)
Image Registration Lecture 6 66
Events and Commands/Observers
Itk::ObjectItk::Command
itk::Command
itk::Command
itk::Command
itk::Command
Event
Event
Event
Event
Event
![Page 67: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/67.jpg)
Image Registration Lecture 6 67
Events
Common Events
AnyEvent()StartEvent()EndEvent()ProgressEvent()IterationEvent()
![Page 68: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/68.jpg)
Image Registration Lecture 6 68
Events and Commands/Observers
Itk::Object
Itk::ProcessObject
Itk::FilterXY
Itk::Command
MyCommandExecute()
AddObserver( )AnyEvent
MyEvent
![Page 69: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/69.jpg)
Image Registration Lecture 6 69
Events and Commands/Observers
Itk::Object
Itk::ProcessObject
Itk::FilterXY
Itk::Command
Itk::SimpleMemberCommand
AddObserver( )
MyClassMethodX()
AnyEvent
MyEvent
![Page 70: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/70.jpg)
Image Registration Lecture 6 70
GUI Communication
ITK Layer
GUI LayerWidget
FilterX
CallbackCommand
FilterX
Widget
Observer
![Page 71: CSci 6971: Image Registration Lecture 6: Getting Started with ITK January 30, 2004](https://reader036.fdocuments.in/reader036/viewer/2022062521/568156e3550346895dc489d6/html5/thumbnails/71.jpg)
Image Registration Lecture 6 71
End
Enjoy ITK !