image registration lecture 6: software tools march 10, 2005
DESCRIPTION
Image Registration Lecture 6: Software Tools March 10, 2005. Prof. Charlene Tsai. Overview of Course Software. Insight Toolkit (ITK) NLM funded project to develop open-source medical image processing, segmentation and registration libraries - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Image Registration Lecture 6: Software Tools March 10, 2005](https://reader035.vdocuments.us/reader035/viewer/2022062314/568149f6550346895db72729/html5/thumbnails/1.jpg)
Image Registration Lecture 6: Software Tools
March 10, 2005
Image Registration Lecture 6: Software Tools
March 10, 2005
Prof. Charlene TsaiProf. Charlene Tsai
![Page 2: Image Registration Lecture 6: Software Tools March 10, 2005](https://reader035.vdocuments.us/reader035/viewer/2022062314/568149f6550346895db72729/html5/thumbnails/2.jpg)
Image Registration Lecture 1 2
Overview of Course SoftwareOverview 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
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: Image Registration Lecture 6: Software Tools March 10, 2005](https://reader035.vdocuments.us/reader035/viewer/2022062314/568149f6550346895db72729/html5/thumbnails/3.jpg)
Image Registration Lecture 1 3
Combining the ToolkitsCombining the Toolkits
Exploiting ITK 3D representations, processing algorithms, etc. Intensity-based registration Extensive examples and documentation
Subsets of VXL Significant, novel feature-based algorithms 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
Exploiting ITK 3D representations, processing algorithms, etc. Intensity-based registration Extensive examples and documentation
Subsets of VXL Significant, novel feature-based algorithms 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: Image Registration Lecture 6: Software Tools March 10, 2005](https://reader035.vdocuments.us/reader035/viewer/2022062314/568149f6550346895db72729/html5/thumbnails/4.jpg)
Image Registration Lecture 1 4
Moving Forward In This CourseMoving Forward In This Course
Lectures 7-10 ITK and intensity-based registration
Lectures 11-15 Rensselaer registration library for feature-
based registration Homework exercises will explore both toolkits Either can be used for large programming
project Choice should be individual and depend on
the chosen project.
Lectures 7-10 ITK and intensity-based registration
Lectures 11-15 Rensselaer registration library for feature-
based registration Homework 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: Image Registration Lecture 6: Software Tools March 10, 2005](https://reader035.vdocuments.us/reader035/viewer/2022062314/568149f6550346895db72729/html5/thumbnails/5.jpg)
Image Registration Lecture 1 5
ITK by the NumbersITK by the Numbers
March 2000 First code check-in
1000 # of nightly builds
21 # of platforms ( software + hardware )
700 # of classes
1600 # of files with code
400K # of lines of code
![Page 6: Image Registration Lecture 6: Software Tools March 10, 2005](https://reader035.vdocuments.us/reader035/viewer/2022062314/568149f6550346895db72729/html5/thumbnails/6.jpg)
Image Registration Lecture 1 6
ITK by the NumbersITK by the Numbers
35K # of lines of examples
150K # of lines of Applications
50 unique developers
500 # of users subscribed to the mailing-list
300 # of emails posted monthly to the users-list
![Page 7: Image Registration Lecture 6: Software Tools March 10, 2005](https://reader035.vdocuments.us/reader035/viewer/2022062314/568149f6550346895db72729/html5/thumbnails/7.jpg)
Image Registration Lecture 1 7
What takes to maintain a Project like ITK?What takes to maintain a Project like ITK?
What can go wrong with a project of this size? What is needed?
Synchronization of code Testing of modules Continuous multi-platform maintenance Development of user guide
What can go wrong with a project of this size? What is needed?
Synchronization of code Testing of modules Continuous multi-platform maintenance Development of user guide
![Page 8: Image Registration Lecture 6: Software Tools March 10, 2005](https://reader035.vdocuments.us/reader035/viewer/2022062314/568149f6550346895db72729/html5/thumbnails/8.jpg)
Image Registration Lecture 1 8
Development Tools and ProceduresDevelopment Tools and Procedures
CVS Concurrent Versions System. Keeping changes to software. Vital for multiple developers.
Doxygen documentation system.
DART (Dashboard) Regression Testing System. Providing feedback to developers who broke the compilation
and testing. CMake
Cross-platform make system. Generating appropriate makefiles (Unix) or workspaces
(Windows).
CVS Concurrent Versions System. Keeping changes to software. Vital for multiple developers.
Doxygen documentation system.
DART (Dashboard) Regression Testing System. Providing feedback to developers who broke the compilation
and testing. CMake
Cross-platform make system. Generating appropriate makefiles (Unix) or workspaces
(Windows).
![Page 9: Image Registration Lecture 6: Software Tools March 10, 2005](https://reader035.vdocuments.us/reader035/viewer/2022062314/568149f6550346895db72729/html5/thumbnails/9.jpg)
Image Registration Lecture 1 9
What is CVS?What is CVS?
Server (repository)
Client (local copy)
Client (local copy)Client (local copy)
Client (local copy)
commitcheckout/update
![Page 10: Image Registration Lecture 6: Software Tools March 10, 2005](https://reader035.vdocuments.us/reader035/viewer/2022062314/568149f6550346895db72729/html5/thumbnails/10.jpg)
Image Registration Lecture 1 10
What is good about CVS?What is good about CVS?
Its client-server access method lets developers access the latest code from anywhere there's an Internet connection.
Its unreserved check-out model to version control avoids artificial conflicts common with the exclusive check-out model. CVS is cautious and will merge automatically only
as long as the changes aren't made to the same lines of code. If CVS can't safely resolve the changes, the developer will have to merge them manually.
Its client tools are available on most platforms.
Its client-server access method lets developers access the latest code from anywhere there's an Internet connection.
Its unreserved check-out model to version control avoids artificial conflicts common with the exclusive check-out model. CVS is cautious and will merge automatically only
as long as the changes aren't made to the same lines of code. If CVS can't safely resolve the changes, the developer will have to merge them manually.
Its client tools are available on most platforms.
![Page 11: Image Registration Lecture 6: Software Tools March 10, 2005](https://reader035.vdocuments.us/reader035/viewer/2022062314/568149f6550346895db72729/html5/thumbnails/11.jpg)
Image Registration Lecture 1 11
CVS for the first timeCVS for the first time
Checking out vxl from sourceforgecvs -d:pserver:[email protected]:/cvsroot/vxl login
(press “enter”)
cvs -d:pserver:[email protected]:/cvsroot/vxl co -d vxl_src vxl
(everything in one line)
%% vxl_src is the local dir
%% vxl is the name of the module on the remote server
Checking out itk from Insightcvs -d :pserver:[email protected]:/cvsroot/Insight login
(press “enter”)
cvs -d :pserver:[email protected]:/cvsroot/Insight co -d itk_src Insight
(everything in one line)
Checking out vxl from sourceforgecvs -d:pserver:[email protected]:/cvsroot/vxl login
(press “enter”)
cvs -d:pserver:[email protected]:/cvsroot/vxl co -d vxl_src vxl
(everything in one line)
%% vxl_src is the local dir
%% vxl is the name of the module on the remote server
Checking out itk from Insightcvs -d :pserver:[email protected]:/cvsroot/Insight login
(press “enter”)
cvs -d :pserver:[email protected]:/cvsroot/Insight co -d itk_src Insight
(everything in one line)
![Page 12: Image Registration Lecture 6: Software Tools March 10, 2005](https://reader035.vdocuments.us/reader035/viewer/2022062314/568149f6550346895db72729/html5/thumbnails/12.jpg)
Image Registration Lecture 1 12
Other Commonly Used CommandsOther Commonly Used Commands
cvs update –Pd To get the most up-to-date code from the
repository Everyone can do it
cvs commit –m msg To merge your changes with the copy in the
repository only for developers
cvs log [files …] Show repository access history.
See https://www.cvshome.org/docs/ref.html for full reference.
cvs update –Pd To get the most up-to-date code from the
repository Everyone can do it
cvs commit –m msg To merge your changes with the copy in the
repository only for developers
cvs log [files …] Show repository access history.
See https://www.cvshome.org/docs/ref.html for full reference.
![Page 13: Image Registration Lecture 6: Software Tools March 10, 2005](https://reader035.vdocuments.us/reader035/viewer/2022062314/568149f6550346895db72729/html5/thumbnails/13.jpg)
Image Registration Lecture 1 13
DoxygenDoxygen
Doxygen is a documentation system for C++, C, Java, etc..
It can generate an on-line documentation browser Configurable: extracting the code structure from undocumented
source files. visualizing the relations between the various
elements by means of include dependency graphs, inheritance diagrams, and collaboration diagrams,
This is very useful to quickly find your way in large source distributions.
(see demo)
Doxygen is a documentation system for C++, C, Java, etc..
It can generate an on-line documentation browser Configurable: extracting the code structure from undocumented
source files. visualizing the relations between the various
elements by means of include dependency graphs, inheritance diagrams, and collaboration diagrams,
This is very useful to quickly find your way in large source distributions.
(see demo)
![Page 14: Image Registration Lecture 6: Software Tools March 10, 2005](https://reader035.vdocuments.us/reader035/viewer/2022062314/568149f6550346895db72729/html5/thumbnails/14.jpg)
Image Registration Lecture 1 14
DART (Dashboard)DART (Dashboard)
![Page 15: Image Registration Lecture 6: Software Tools March 10, 2005](https://reader035.vdocuments.us/reader035/viewer/2022062314/568149f6550346895db72729/html5/thumbnails/15.jpg)
Image Registration Lecture 1 15
CMakeCMake
Most slides by courtesy of Brad King from Kitware. The rest of the lecture is on CMake Build-System Generator
Provides single-sourcing for build systems Knowledge of many platforms and tools Users configure builds through a GUI
Most slides by courtesy of Brad King from Kitware. The rest of the lecture is on CMake Build-System Generator
Provides single-sourcing for build systems Knowledge of many platforms and tools Users configure builds through a GUI
CMakeLists.txt CMake Native Build System
Native Build ToolsExecutables
Libraries
![Page 16: Image Registration Lecture 6: Software Tools March 10, 2005](https://reader035.vdocuments.us/reader035/viewer/2022062314/568149f6550346895db72729/html5/thumbnails/16.jpg)
Image Registration Lecture 1 16
Downloading CMakeDownloading CMake
ITKRequires
2.0.5
http://www.cmake.org
Latest CMake Release
Get the Binaries
InstallBinaries
![Page 17: Image Registration Lecture 6: Software Tools March 10, 2005](https://reader035.vdocuments.us/reader035/viewer/2022062314/568149f6550346895db72729/html5/thumbnails/17.jpg)
Image Registration Lecture 1 17
Source and Build Trees Source and Build Trees
The Source Tree contains: CMake input files (CMakeLists.txt) Program source files (hello.cxx)
The Binary Tree (build tree) contains: Native build system files (hello.dsp) Program libraries and executables (hello.exe)
Source and Binary trees may be: In the same directory (in-source build) In different directories (out-of-source build)
Many binary trees (of different compilers, maybe) can share the same source tree
The Source Tree contains: CMake input files (CMakeLists.txt) Program source files (hello.cxx)
The Binary Tree (build tree) contains: Native build system files (hello.dsp) Program libraries and executables (hello.exe)
Source and Binary trees may be: In the same directory (in-source build) In different directories (out-of-source build)
Many binary trees (of different compilers, maybe) can share the same source tree
![Page 18: Image Registration Lecture 6: Software Tools March 10, 2005](https://reader035.vdocuments.us/reader035/viewer/2022062314/568149f6550346895db72729/html5/thumbnails/18.jpg)
Image Registration Lecture 1 18
Example: Configuring ITKExample: Configuring ITK
Source Tree
ITK
Common
Algorithms
BasicFilter
Numerics
IO
ITKb
Common
Algorithms
BasicFilter
Numerics
IO
Binary Tree
Recommended !
Out Source Build
InSourceBuild
![Page 19: Image Registration Lecture 6: Software Tools March 10, 2005](https://reader035.vdocuments.us/reader035/viewer/2022062314/568149f6550346895db72729/html5/thumbnails/19.jpg)
Image Registration Lecture 1 19
The CMake CacheThe CMake Cache
Represents build configuration Populated by CMake code Stored in CMakeCache.txt at top of build Entries have a type to help the GUI Holds global information for CMake code Updated by CMake configuration phase
Represents build configuration Populated by CMake code Stored in CMakeCache.txt at top of build Entries have a type to help the GUI Holds global information for CMake code Updated by CMake configuration phase
![Page 20: Image Registration Lecture 6: Software Tools March 10, 2005](https://reader035.vdocuments.us/reader035/viewer/2022062314/568149f6550346895db72729/html5/thumbnails/20.jpg)
Image Registration Lecture 1 20
Command Line UsageCommand Line Usage
Can be used from scripts Set current-working-directory to binary tree Pass path to source tree as first argument Use -G to select build system generator Use -D to set cache variables
Can be used from scripts Set current-working-directory to binary tree Pass path to source tree as first argument Use -G to select build system generator Use -D to set cache variables
$ cd Foo-msvc-6
$ cmake ../Foo –G“Visual Studio 6” –DBAR:BOOL=1
![Page 21: Image Registration Lecture 6: Software Tools March 10, 2005](https://reader035.vdocuments.us/reader035/viewer/2022062314/568149f6550346895db72729/html5/thumbnails/21.jpg)
Image Registration Lecture 1 21
GUI UsageGUI Usage
Edit cache entries to configure the build Use configure button after a change Use OK (generate) button when finished
Edit cache entries to configure the build Use configure button after a change Use OK (generate) button when finished
CMakeSetupCMakeSetup ccmakeccmake
![Page 22: Image Registration Lecture 6: Software Tools March 10, 2005](https://reader035.vdocuments.us/reader035/viewer/2022062314/568149f6550346895db72729/html5/thumbnails/22.jpg)
Image Registration Lecture 1 22
Source Tree StructureSource Tree Structure
Every directory has a CMakeLists.txt file Subdirectories specified by SUBDIRS Directories depend only on parents A subset of commands are inherited
Every directory has a CMakeLists.txt file Subdirectories specified by SUBDIRS Directories depend only on parents A subset of commands are inherited
CMakeLists.txtSUBDIRS(Dir1 Dir2)
Dir1/CMakeLists.txt
Dir2/CMakeLists.txt
![Page 23: Image Registration Lecture 6: Software Tools March 10, 2005](https://reader035.vdocuments.us/reader035/viewer/2022062314/568149f6550346895db72729/html5/thumbnails/23.jpg)
Image Registration Lecture 1 23
Writing CMakeLists.txt FilesWriting CMakeLists.txt Files
CMake language evolved while in use Scripting language with simple syntax
Comments Commands Lists Variables Control structures
Processed during CMake configure phase
CMake language evolved while in use Scripting language with simple syntax
Comments Commands Lists Variables Control structures
Processed during CMake configure phase
# Comment ends at a newline
COMMAND(arg1 arg2 ...)
A;B;C # Semicolon-separated
IF(CONDITION)
${VAR}
![Page 24: Image Registration Lecture 6: Software Tools March 10, 2005](https://reader035.vdocuments.us/reader035/viewer/2022062314/568149f6550346895db72729/html5/thumbnails/24.jpg)
Image Registration Lecture 1 24
CommandsCommands
Simple syntax: Each command must start on its own line Variable references are replaced by values Lists in unquoted arguments are expanded Argument meanings defined by command
Simple syntax: Each command must start on its own line Variable references are replaced by values Lists in unquoted arguments are expanded Argument meanings defined by command
COMMAND(ARG “ARG WITH SPACES”
${A_LIST} “${A_STRING}”)
TARGET_LINK_LIBRARIES(myTarget lib1 lib2)
FIND_LIBRARY(MY_LIB NAMES my1 my2
PATHS /foo /bar)
![Page 25: Image Registration Lecture 6: Software Tools March 10, 2005](https://reader035.vdocuments.us/reader035/viewer/2022062314/568149f6550346895db72729/html5/thumbnails/25.jpg)
Image Registration Lecture 1 25
VariablesVariables
Named by C-style identifier Value is always a string No associated type Initialized by CMake cache entries Assigned through commands like SET Referenced by ${VAR} (only one level)
Named by C-style identifier Value is always a string No associated type Initialized by CMake cache entries Assigned through commands like SET Referenced by ${VAR} (only one level)
SET(A_LIST ${A_LIST} foo)
SET(A_STRING “${A_STRING} bar”)
![Page 26: Image Registration Lecture 6: Software Tools March 10, 2005](https://reader035.vdocuments.us/reader035/viewer/2022062314/568149f6550346895db72729/html5/thumbnails/26.jpg)
Image Registration Lecture 1 26
Control StructuresControl Structures
IF
FOREACH
MACRO
IF
FOREACH
MACRO
IF(CONDITION) MESSAGE(“Yes”)ELSE(CONDITION) MESSAGE(“No”)ENDIF(CONDITION)
FOREACH(c A B C) MESSAGE(“${c}: ${${c}}”)ENDFOREACH(c)
MACRO(MY_MACRO arg1 arg2) SET(${arg1} “${${arg2}}”)ENDMACRO(MY_MACRO)MY_MACRO(A B)
![Page 27: Image Registration Lecture 6: Software Tools March 10, 2005](https://reader035.vdocuments.us/reader035/viewer/2022062314/568149f6550346895db72729/html5/thumbnails/27.jpg)
Image Registration Lecture 1 27
A Typical ProjectA Typical Project
PROJECT(FOO)
SUBDIRS(Foo Bar Executable)
CMakeLists.txtCMakeLists.txt
ADD_LIBRARY(foo foo1.cxx foo2.cxx)
Foo/CMakeLists.txtFoo/CMakeLists.txt
ADD_EXECUTABLE(zot zot1.cxx zot2.cxx)
TARGET_LINK_LIBRARIES(zot bar)
Executable/CMakeLists.txtExecutable/CMakeLists.txt
ADD_LIBRARY(bar bar1.cxx bar2.cxx)
TARGET_LINK_LIBRARIES(bar foo)
Bar/CMakeLists.txtBar/CMakeLists.txt
![Page 28: Image Registration Lecture 6: Software Tools March 10, 2005](https://reader035.vdocuments.us/reader035/viewer/2022062314/568149f6550346895db72729/html5/thumbnails/28.jpg)
Image Registration Lecture 1 28
Developer DocumentationDeveloper Documentation
Command-line documentation: Run “cmake --help” for summary Run “cmake --help COMMAND” for detailed help
with a specific listfile command Try “cmake --help IF”
Online documentation: http://www.cmake.org/HTML/Documentation.html
Mastering CMake Published by Kitware, Inc. ISBN 1-930934-09-2
Command-line documentation: Run “cmake --help” for summary Run “cmake --help COMMAND” for detailed help
with a specific listfile command Try “cmake --help IF”
Online documentation: http://www.cmake.org/HTML/Documentation.html
Mastering CMake Published by Kitware, Inc. ISBN 1-930934-09-2
![Page 29: Image Registration Lecture 6: Software Tools March 10, 2005](https://reader035.vdocuments.us/reader035/viewer/2022062314/568149f6550346895db72729/html5/thumbnails/29.jpg)
Image Registration Lecture 1 29
Editing CMake CodeEditing CMake Code
EMACS mode for CMake cmake-mode.el located in CMake/Docs directory Provides highlighting and indentation Use this code in your .emacs file:
VIM mode is also available
EMACS mode for CMake cmake-mode.el located in CMake/Docs directory Provides highlighting and indentation Use this code in your .emacs file:
VIM mode is also available
(setq load-path (cons “/path/to/cmake-mode” load-path))(require 'cmake-mode)(setq auto-mode-alist (append '(("CMakeLists.txt" . cmake-mode) ("\\.cmake$" . cmake-mode)) auto-mode-alist))
![Page 30: Image Registration Lecture 6: Software Tools March 10, 2005](https://reader035.vdocuments.us/reader035/viewer/2022062314/568149f6550346895db72729/html5/thumbnails/30.jpg)
Image Registration Lecture 1 30
Building ITK & VXL TogetherBuilding ITK & VXL Together
Build VXL using any configuration Run CMakeSetup to build ITK
Click “Configure” Turn on “Show Advanced Values” Set ITK_USE_SYSTEM_VXL to ON Click “Configure” Set VXL_DIR to point at VXL build tree
Build VXL using any configuration Run CMakeSetup to build ITK
Click “Configure” Turn on “Show Advanced Values” Set ITK_USE_SYSTEM_VXL to ON Click “Configure” Set VXL_DIR to point at VXL build tree
![Page 31: Image Registration Lecture 6: Software Tools March 10, 2005](https://reader035.vdocuments.us/reader035/viewer/2022062314/568149f6550346895db72729/html5/thumbnails/31.jpg)
Image Registration Lecture 1 31
Using ITK & VXL TogetherUsing ITK & VXL Together
Import ITK using code like this: Import ITK using code like this:
FIND_PACKAGE(ITK)
IF(ITK_FOUND)
INCLUDE(${ITK_USE_FILE})
IF(NOT ITK_USE_SYSTEM_VXL)
MESSAGE(“Need an ITK with ITK_USE_SYSTEM_VXL ON.”)
ENDIF(NOT ITK_USE_SYSTEM_VXL)
ELSE(ITK_FOUND)
MESSAGE(FATAL_ERROR “Set ITK_DIR”)
ENDIF(ITK_FOUND)
![Page 32: Image Registration Lecture 6: Software Tools March 10, 2005](https://reader035.vdocuments.us/reader035/viewer/2022062314/568149f6550346895db72729/html5/thumbnails/32.jpg)
Image Registration Lecture 1 32
Starting Your Own ProjectStarting Your Own Project
Create a clean new directory
Write a CMakeLists.txt file
Write a simple .cxx file
Configure with CMake
Build
Run
![Page 33: Image Registration Lecture 6: Software Tools March 10, 2005](https://reader035.vdocuments.us/reader035/viewer/2022062314/568149f6550346895db72729/html5/thumbnails/33.jpg)
Image Registration Lecture 1 33
Example on Using ITK – Hello WorldExample on Using ITK – Hello World
Create “HelloWorld.cxx” &
“CMakeLists.txt”and store them
in any source directory
RunCMake
• Select Source Dir• Select Binary Dir
![Page 34: Image Registration Lecture 6: Software Tools March 10, 2005](https://reader035.vdocuments.us/reader035/viewer/2022062314/568149f6550346895db72729/html5/thumbnails/34.jpg)
Image Registration Lecture 1 34
CMakeLists.txtCMakeLists.txt
PROJECT( myProject )
FIND_PACKAGE ( ITK )
IF ( ITK_FOUND )
INCLUDE( ${ITK_USE_FILE} )
ELSE( ITK_FOUND )
MESSAGE(FATAL_ERROR
"Cannot build without ITK. Please set ITK_DIR.")
ENDIF( ITK_FOUND )
ADD_EXECUTABLE( HelloWorld HellowWorld.cxx )
TARGET_LINK_LIBRARIES ( HelloWorld ITKCommon ITKIO)
#ADD_EXECUTABLE( foo foo.cxx )
#TARGET_LINK_LIBRARIES ( foo ITKCommon ITKIO)
![Page 35: Image Registration Lecture 6: Software Tools March 10, 2005](https://reader035.vdocuments.us/reader035/viewer/2022062314/568149f6550346895db72729/html5/thumbnails/35.jpg)
Image Registration Lecture 1 35
HellowWorld.cxxHellowWorld.cxx
#include "itkImage.h"
#include <iostream>
int main( int argc, char **argv ) {
typedef itk::Image<unsigned short,3> ImageType;
ImageType::Pointer image = ImageType::New();
std::cout<< “ITK Hello World!” << std::endl;
return 0;
}
#include "itkImage.h"
#include <iostream>
int main( int argc, char **argv ) {
typedef itk::Image<unsigned short,3> ImageType;
ImageType::Pointer image = ImageType::New();
std::cout<< “ITK Hello World!” << std::endl;
return 0;
}
![Page 36: Image Registration Lecture 6: Software Tools March 10, 2005](https://reader035.vdocuments.us/reader035/viewer/2022062314/568149f6550346895db72729/html5/thumbnails/36.jpg)
Image Registration Lecture 1 36
Configure CMakeConfigure CMake
![Page 37: Image Registration Lecture 6: Software Tools March 10, 2005](https://reader035.vdocuments.us/reader035/viewer/2022062314/568149f6550346895db72729/html5/thumbnails/37.jpg)
Image Registration Lecture 1 37
Configure CMakeConfigure CMake
![Page 38: Image Registration Lecture 6: Software Tools March 10, 2005](https://reader035.vdocuments.us/reader035/viewer/2022062314/568149f6550346895db72729/html5/thumbnails/38.jpg)
Image Registration Lecture 1 38
Configure CMakeConfigure CMake
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 39: Image Registration Lecture 6: Software Tools March 10, 2005](https://reader035.vdocuments.us/reader035/viewer/2022062314/568149f6550346895db72729/html5/thumbnails/39.jpg)
Image Registration Lecture 1 39
Building the myProject ProjectBuilding the myProject Project
Open myProject.dsw (or .sln)
generated by CMake
Select ALL_BUILD project
Build it …It will take about 3 seconds …
![Page 40: Image Registration Lecture 6: Software Tools March 10, 2005](https://reader035.vdocuments.us/reader035/viewer/2022062314/568149f6550346895db72729/html5/thumbnails/40.jpg)
Image Registration Lecture 1 40
Building the myProject ProjectBuilding the myProject Project
![Page 41: Image Registration Lecture 6: Software Tools March 10, 2005](https://reader035.vdocuments.us/reader035/viewer/2022062314/568149f6550346895db72729/html5/thumbnails/41.jpg)
Image Registration Lecture 1 41
Execute the ExcutablesExecute the Excutables
Locate the file HelloWorld.exe
Run it…
It should produce the message:
ITK Hello World !