Welcome to the Insight Toolkit! ITK Lecture 2 - Getting Started - PowerPoint PPT Presentation


PPT – Welcome to the Insight Toolkit! ITK Lecture 2 - Getting Started PowerPoint presentation | free to download - id: 17e933-ZDc1Z


The Adobe Flash plugin is needed to view this content

Get the plugin now

View by Category
About This Presentation

Welcome to the Insight Toolkit! ITK Lecture 2 - Getting Started


Compile several programs that use ITK. Find documentation online. Learn the quirks (if any) of the system you choose to use ... Sun, SGI, Cygwin: You're on your own ... – PowerPoint PPT presentation

Number of Views:165
Avg rating:3.0/5.0
Slides: 50
Provided by: DamionS
Learn more at: http://www.vialab.org


Write a Comment
User Comments (0)
Transcript and Presenter's Notes

Title: Welcome to the Insight Toolkit! ITK Lecture 2 - Getting Started

Welcome to the Insight Toolkit! ITK Lecture 2 -
Getting Started
  • Methods in Image Analysis
  • CMU Robotics Institute 16-725
  • U. Pitt Bioengineering 2630
  • Spring Term, 2004

Goals for this week
  • 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

Online course access
  • Distribution of lectures/homeworks/etc. will be
    handled via our lab web site
  • http//www.vialab.org/methods_course/index.html

Getting help
  • Email the TA - Aaron Cois
  • cacst11_at_pitt.edu
  • Email me - Damion Shelton
  • beowulfteaching_at_cs.cmu.edu
  • PLEASE remember the teaching!!
  • Join the insight-users mailing list instructions
    are at http//www.itk.org

Getting help, cont.
  • Get help at Pitt
  • Aarons office is BEH 761
  • Office phone 412-624-9931
  • Get help at CMU
  • Damions office is NSH, A408-o (in the cube farm)
  • Office phone 412-268-3866
  • Email is usually the easiest contact method

  • 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

Grading 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
    judgement is passed

Assignments, cont.
  • Please interpret due dates as absolute, unless
    told otherwise
  • Really
  • Aaron and I are happy to spend time helping you
    debug code, but not at 11 pm the day before the
    assignment is due

Computer 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

We can help you with
  • Windows Linux Aaron or Damion
  • MacOS Damion
  • 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

What 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

So, 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
  • You can do a lot in only a few lines of code
  • Once you get used to it, its easy to use (gasp!)

What 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

What you might be able to do
  • Generic programming
  • Templates templated classes
  • Partial specialization
  • The typedef typename keywords
  • Revision control using CVS
  • Collaborative programming

You probably have not
  • Used cross-platform make software (Jam, for
  • Written C code that builds on multiple
  • Designed software using a data-flow architecture,
    worried about smart pointers, etc.

Step 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 Aaron made for you

  • 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

Step 1
  • Get all of the code
  • Fortunately, Aaron made CDs for you
  • If youre working on some particularly esoteric
    platform, its possible that youre missing a
    binary version of CMake for your machine

What do I need ?
Cross 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?

The 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

How 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

How 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 disparate compilers
  • CMakeLists.txt files are easy to perform revision
    control on

In source vs. out source builds
Source Tree
Why 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

Configure - Easy Start
  • Run CMake
  • Select the SOURCE directory
  • Select the BINARY directory

Configure - Easy Start, cont.
Configure - Easy Start, cont.
  • Disable USE_FLTK
  • Disable USE_VTK
  • Disable ITK_WRAP_TCL

Configure - Easy Start, cont.
  • Ignore DART_ROOT
  • Ignore ITK_DATA_ROOT

Configuring 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

Build ITK
Build 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

Verify the Build
  • Libraries will be found in
  • ITK_BINARY / bin / Debug, Release

Verify the Build
  • ITKCommon
  • ITKBasicFilters
  • ITKAlgorithms
  • ITKNumerics

Building 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

Building with gcc cont.
  • Start in directory containing Insight
  • mkdir InsightBin
  • cd InsightBin
  • ccmake ../Insight
  • Edit CMake, reconfigure if needed
  • make

Now 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

Building 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

How 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

How to build HelloWorld, cont.
  • Once CMake is happy, generate the
    makefile/project for your compiler
  • Build HelloWorld
  • Give it a try

More 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

Workflow thoughts
  • You should get used to the idea of
  • Writing some code
  • Writing a CMakeLists.txt file
  • Running CMake
  • Building your code
  • Rinse, repeat

An aside how to use ITK with existing
  • 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

Revision 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

CVS 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,

CVS 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

CVS setup
  • The CVS server for this course is
  • cvs.vialab.org
  • You will each have a module, based on your email
    Aaron 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

CVS setup, cont.
  • I prefer to use a GUI wrapper for CVS
  • http//www.wincvs.org
  • Versions are available for Windows, Mac, and
  • Windows users can also try http//www.tortoisecvs.
  • Command line works fine too, but may be more
    awkward if youre used to GUIs

ITK 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
  • http//www.itk.org/Doxygen/html/index.html
About PowerShow.com