Matlab Tricks
Download
Report
Transcript Matlab Tricks
Welcome 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
1
Goals 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
2
Online course access
Distribution of lectures/homeworks/etc. will
be handled via our lab web site:
http://www.vialab.org/methods_course/index.
html
3
Getting help
Email the TA - Ken Rockot
[email protected]
Email Aaron Cois
[email protected]
Email me - Damion Shelton
[email protected]
Join the insight-users mailing list;
instructions are at http://www.itk.org
4
Getting help, cont.
Get help at Pitt
Stop by BEH 761 for Ken or Aaron
Get help at CMU
Damion’s office is EDSH 214
Email is usually the easiest contact
method
5
Assignments
Collaboration is encouraged; unless told
otherwise, feel free to discuss
assignments with other students
But… please submit your own code don’t copy and paste stuff from friends
More so than other classes, you will be
learning techniques that translate
directly to the real world - don’t cheat
yourself
6
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 judgment is passed
7
Assignments, cont.
Please interpret due dates as absolute,
unless told otherwise
Really
We’re happy to spend time helping you
debug code, but not at 11 pm the day
before the assignment is due
8
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
9
We can help you with
Windows & Linux: Everyone
MacOS: Damion and Ken
Sun, SGI, Cygwin: You’re on your own
If you’re going to have compiler
problems, they’ll show up early in the
course, so don’t procrastinate the first
assignment
10
What is ITK?
To clarify, ITK is a toolkit
It doesn’t “do” anything
You can’t “run” it
There isn’t an itk.exe file
Typically, you use ITK in conjunction
with other toolkits to handle visualization
and GUI interaction
11
So, what’s 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, it’s easy to use
(gasp!)
12
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
13
You might be able to do…
Generic programming
Templates & templated classes
Partial specialization
The typedef & typename keywords
Revision control using CVS/SVN
Collaborative programming
14
You 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.
15
Step 0 - Don’t panic!
There is substantial documentation on
everything I’m 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
QuickTime™ and a
TIFF (Uncompressed) decompressor
are needed to see this picture.
16
QuickTime™ and a
TIFF (Uncompressed) decompressor
are needed to see this picture.
Please DON’T wear yourself trying to
write down all of the content of the
following slides; they’ll be on the course
web page
DO interrupt me and ask questions if
something isn’t clear
17
Step 1
Get all of the code
Fortunately, we have CD’s for you
If you’re working on some particularly
esoteric platform, it’s possible that
you’re missing a binary version of
CMake for your machine
18
What do I need ?
C++ Compiler
gcc 2.95 – 3.2
Visual C++ 6.0
Visual .NET
Intel 5.0
IRIX CC
Borland 5.0
Mac OSX - gcc
CMake
www.cmake.org
19
Cross platform development
ITK builds on a large combination of
operating systems and platforms
Each compiler has it’s own input format;
makefiles, workspaces, etc.
Q: How can you possibly coordinate
builds on different platforms?
20
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
www.cmake.org
21
How CMake runs
Write a CMakeLists.txt file describing
your project in CMake’s language
Run CMake to generate an appropriate
makefile/project/workspace for your
compiler
Compile as you normally would
22
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 compilers
CMakeLists.txt files are easy to perform
revision control on
23
In source vs. out source builds
Source Tree
Out
Source Build
ITK
Binary Tree
ITKb
Common
Common
Algorithms
Algorithms
BasicFilter
BasicFilter
Numerics
IO
In
Source
Build
Numerics
IO
24
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 folder
25
Configure - Easy Start
Run CMake
Select the SOURCE directory
Select the BINARY directory
26
Configure - Easy Start, cont.
27
Configure - Easy Start, cont.
Disable BUILD_EXAMPLES
Disable BUILD_TESTING
Disable USE_FLTK
Disable USE_VTK
Disable ITK_WRAP_TCL
28
Configure - Easy Start, cont.
Ignore CMAKE_CXX_FLAGS
Ignore DART_ROOT
Ignore ITK_DATA_ROOT
Ignore VW_RAW_DATA_PATH
29
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
30
Build ITK
31
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
32
Verify the Build
Libraries will be found in:
ITK_BINARY / bin / { Debug, Release}
33
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
34
Building with gcc cont.
Start in directory containing Insight
mkdir InsightBin
cd InsightBin
ccmake ../Insight
Edit CMake, reconfigure if needed
make
35
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 don’t have
anything executable
36
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
37
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
38
How to build HelloWorld, cont.
Once CMake is happy, generate the
makefile/project for your compiler
Build HelloWorld
Give it a try
39
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-ofsource and build them like you did
HelloWorld
These examples link into ITK Software
Guide; read the chapter, poke the code
and see what happens…
40
Workflow thoughts
You should get used to the idea of:
1. Writing some code
2. Writing a CMakeLists.txt file
3. Running CMake
4. Building your code
5. Rinse, repeat
41
An aside: how to use ITK with
existing 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 isn’t hard, but it may take some
trial and error to discover everything you
need
You don’t need to worry about this in the
context of this class
42
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 - it’s a good habit to develop
43
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, etc.).
44
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
45
CVS 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
46
CVS 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 you’re used to GUI’s
47
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 online
http://www.itk.org/Doxygen/html/index.html
48