Title: Welcome to the Insight Toolkit ITK Lecture 1 Getting Started
1Welcome to the Insight Toolkit!ITK Lecture 1 -
Getting Started
- Methods in Image Analysis
- CMU Robotics Institute 16-725
- U. Pitt Bioengineering 2630
- Spring Term, 2006
2Goals for this lecture
- Compile, compile, compile
- Learn how to use CMake
- Build ITK
- Compile several programs that use ITK
- Find documentation online
- Learn the quirks (if any) of the system you
choose to use
3Online course access
- Distribution of lectures/homeworks/etc. will be
handled via our lab web site - http//www.vialab.org/methods_course/index.html
4Getting help
- Email the TA - Ken Rockot
- kjr21_at_pitt.edu
- Email Aaron Cois
- cacois_at_pitt.edu
- Email me - Damion Shelton
- beowulf_at_cs.cmu.edu
- Join the insight-users mailing list instructions
are at http//www.itk.org
5Getting help, cont.
- Get help at Pitt
- Stop by BEH 761 for Ken or Aaron
- Get help at CMU
- Damions office is EDSH 214
- Email is usually the easiest contact method
6Assignments
- Collaboration is encouraged unless told
otherwise, feel free to discuss assignments with
other students - But please submit your own code - dont copy and
paste stuff from friends - More so than other classes, you will be learning
techniques that translate directly to the real
world - dont cheat yourself
7Grading of assignments
- Grading criteria
- Does it accomplish the specified task?
- Is it well commented? Follow the 6 month rule -
if you leave for 6 months, you should be able to
pick up where you left off. - Many/most assignments will be pass-fail, with an
opportunity to fix problems before final judgment
is passed
8Assignments, cont.
- Please interpret due dates as absolute, unless
told otherwise - Really
- Were happy to spend time helping you debug code,
but not at 11 pm the day before the assignment is
due
9Computer requirements
- Windows, Linux, and Mac OS 10.2 work great,
other platforms will work too - Your own computer is preferable, but cluster
machines will work - Please be aware that ITK can consume a lot of
disk space during the build process - There is no reason to use one of the platforms
over another, pick your favorite
10We can help you with
- Windows Linux Everyone
- MacOS Damion and Ken
- Sun, SGI, Cygwin Youre on your own
- If youre going to have compiler problems,
theyll show up early in the course, so dont
procrastinate the first assignment
11What is ITK?
- To clarify, ITK is a toolkit
- It doesnt do anything
- You cant run it
- There isnt an itk.exe file
- Typically, you use ITK in conjunction with other
toolkits to handle visualization and GUI
interaction
12So, whats it good for?
- ITK code is easy to add to existing C code
- It provides a variety of flexible data
containers, and ways of processing / analyzing
them - You can do a lot in only a few lines of code
- Once you get used to it, its easy to use (gasp!)
13What we assume you can do
- Understand C syntax
- Classes
- Basic inheritance
- Standard flow control such as for, do, calling
functions, etc. - Pointers, dereferencing, passing by reference
- Work comfortably in the operating system of your
choice, using the compiler of your choice
14You might be able to do
- Generic programming
- Templates templated classes
- Partial specialization
- The typedef typename keywords
- Revision control using CVS/SVN
- Collaborative programming
15You probably have not
- Used cross-platform make software (Jam, for
example) - Written C code that builds on multiple
platforms - Designed software using a data-flow architecture,
worried about smart pointers, etc.
16Step 0 - Dont panic!
- There is substantial documentation on everything
Im going to present here, and vastly more about
things that we will never cover in this course - http//www.itk.org/HTML/Documentation.htm
- You have a copy of the ITK Software Guide on the
CD Ken made for you
17- Please DONT wear yourself trying to write down
all of the content of the following slides
theyll be on the course web page - DO interrupt me and ask questions if something
isnt clear
18Step 1
- Get all of the code
- Fortunately, we have CDs for you
- If youre working on some particularly esoteric
platform, its possible that youre missing a
binary version of CMake for your machine
19What do I need ?
20Cross platform development
- ITK builds on a large combination of operating
systems and platforms - Each compiler has its own input format
makefiles, workspaces, etc. - Q How can you possibly coordinate builds on
different platforms?
21The answer CMake
- Cross platform tool to manage the build process
- Simplifies the build process
- Auto-configuration
- Easy access to external libraries
- Used by several other open source projects
www.cmake.org
22How CMake runs
- Write a CMakeLists.txt file describing your
project in CMakes language - Run CMake to generate an appropriate
makefile/project/workspace for your compiler - Compile as you normally would
23How CMake runs, cont.
- This is not unlike the configure-make process you
may be familiar with from various Unix systems - But it works with many compilers
- CMakeLists.txt files are easy to perform revision
control on
24In source vs. out source builds
Source Tree
25Why use two trees?
- Keeps your source and binary code separate
- Minimizes the amount of damage you can do to your
CVS tree - ITK is found in the /Insight folder
- We suggest that you build it in the /InsightBin
folder
26Configure - Easy Start
- Run CMake
- Select the SOURCE directory
- Select the BINARY directory
27Configure - Easy Start, cont.
28Configure - Easy Start, cont.
- Disable BUILD_EXAMPLES
- Disable BUILD_TESTING
- Disable USE_FLTK
- Disable USE_VTK
- Disable ITK_WRAP_TCL
29Configure - Easy Start, cont.
- Ignore CMAKE_CXX_FLAGS
- Ignore DART_ROOT
- Ignore ITK_DATA_ROOT
- Ignore VW_RAW_DATA_PATH
30Configuring and Generating
- Each time you change an option or options you may
need to configure CMake again - If the generate option (OK under Windows) is
not presented, you definitely need to hit
configure again - If any of the options are highlighted in red, you
need to reconfigure
31Build ITK
32Build ITK
- Open ITK.dsw in the Binary Directory
- Select ALL_BUILD project
- Build it - it takes about 15 minutes on a
P3-1000, but your mileage may vary
33Verify the Build
- Libraries will be found in
- ITK_BINARY / bin / Debug, Release
34Building with gcc
- Order of operations is the same
- Differences
- Run the ccmake executable, which uses a curses
TUI, the options are identical - Run make instead of Visual Studio
- Think of CMake as replacing the ./configure
step you may be used to
35Building with gcc cont.
- Start in directory containing Insight
- mkdir InsightBin
- cd InsightBin
- ccmake ../Insight
- Edit CMake, reconfigure if needed
- make
36Now what?
- At this point, you should have two things
- A directory containing a bunch of source code
(e.g. /Insight) - A directory containing the built ITK libraries
(e.g. /InsightBin) - As mentioned earlier, you dont have anything
executable
37Building an application
- ITK comes with a simple application you can build
in order to test the ITK libraries out of
source (I.e. not built inside ITK) - It can be found in
- /Insight/Examples/Installation
38How to build HelloWorld
- Copy rename the Installation directory
somewhere outside of the Insight directory - Run CMake on HelloWorld
- Remember the source/binary distinction and use
HelloWorldBin as your build location - CMake should automatically find ITK
- if not, edit the ITK_DIR option
39How to build HelloWorld, cont.
- Once CMake is happy, generate the
makefile/project for your compiler - Build HelloWorld
- Give it a try
40More examples
- You can turn on the Examples option in CMake,
which will build all of the examples for you - Or you can copy the examples out-of-source and
build them like you did HelloWorld - These examples link into ITK Software Guide read
the chapter, poke the code and see what happens
41Workflow thoughts
- You should get used to the idea of
- Writing some code
- Writing a CMakeLists.txt file
- Running CMake
- Building your code
- Rinse, repeat
42An aside how to use ITK withexisting
applications
- Your app probably does not use CMake
- In this case, you need to link to the ITK
libraries explicitly and include the appropriate
source directories - This isnt hard, but it may take some trial and
error to discover everything you need - You dont need to worry about this in the context
of this class
43Revision control with CVS
- Revision control software allows you to store
incremental changes to software - You will be expected to use CVS to manage your
homework assignments - I encourage you to use revision control on your
code outside of this class as well - its a good
habit to develop
44CVS terms
- Server - what it sounds like
- Module - a group of files that can be accessed on
the server - User - each module has associated users, with
varying levels of access (read only, read/write,
etc.).
45CVS terms, cont.
- Checkout - Download a fresh copy of a module from
the server to your computer - Update - Sync your copy of a module with the
server copy much faster than a checkout - Commit - Merge changes made to your local copy
with the server
46CVS setup
- The CVS server for this course is
- cvs.vialab.org
- You will each have a module, based on your email
Ken will tell you about this - Only you and the instructors will have access to
this module - Later, there may be group modules for the final
project
47CVS setup, cont.
- I prefer to use a GUI wrapper for CVS
- http//www.wincvs.org
- Versions are available for Windows, Mac, and
Linux - Windows users can use Explorer integration via
http//www.tortoisecvs.org/ - Command line works fine too, but may be more
awkward if youre used to GUIs
48ITK Documentation
- Most of the ITK documentation is generated
automatically from source comments using Doxygen - Please familiarize yourself with the various
means of navigating the Doxygen documentation
online - http//www.itk.org/Doxygen/html/index.html