ebook img

ITK Software Guide PDF

768 Pages·2013·5.18 MB·English
by  
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview ITK Software Guide

The ITK Software Guide Third Edition Updated for ITK version 4.5 Hans J. Johnson, Matt McCormick, Luis Iba´n˜ez, and the Insight Software Consortium December 17, 2013 http://itk.org Email: The purpose of computing is Insight, not numbers. Richard Hamming ABSTRACT The Insight Toolkit (ITK) is an open-source software toolkit for performing registration and segmentation. Segmentation is the process of identifying and classifying data found in a digi- tally sampled representation. Typically the sampled representation is an image acquired from such medical instrumentation as CT or MRI scanners. Registration is the task of aligning or de- veloping correspondences between data. For example, in the medical environment, a CT scan may be aligned with a MRI scan in order to combine the information contained in both. ITK is a cross-platform software. It uses a build environment known as CMake to manage platform-specific project generation and compilation process in a platform-independent way. ITK is implemented in C++. ITK’s implementation style employs generic programming, which involves the use of templates to generate, at compile-time, code that can be applied generically to any class or data-type that supports the operations used by the template. The use of C++ templating means that the code is highly efficient and many issues are discovered at compile- time, rather than at run-time during program execution. It also means that many of ITK’s algorithms can be applied to arbitrary spatial dimensions and pixel types. An automated wrapping system integrated with ITK generates an interface between C++ and a high-level programming language Python. This enables rapid prototyping and faster exploration of ideas by shortening the edit-compile-execute cycle. In addition to automated wrapping, the SimpleITK project provides a streamlined interface to ITK that is available for C++, Python, Java, CSharp, R, Tcl and Ruby. Developers from around the world can use, debug, maintain, and extend the software because ITK is an open-source project. ITK uses a model of software development known as Extreme Programming. Extreme Programming collapses the usual software development methodology into a simultaneous iterative process of design-implement-test-release. The key features of Extreme Programming are communication and testing. Communication among the members of the ITK community is what helps manage the rapid evolution of the software. Testing is what keeps the software stable. An extensive testing process supported by the system known as CDash measures the quality of ITK code on a daily basis. The ITK Testing Dashboard is updated continuously, reflecting the quality of the code at any moment. This book is a guide to developing software with ITK. It covers building and installation, ar- chitecture and design, image analysis theory and its applications, as well as the process of contributing to the ITK community. The most recent version of this document is available online at http://itk.org/ItkSoftwareGuide.pdf. CONTRIBUTORS The Insight Toolkit (ITK) has been created by the efforts of many talented individuals and prestigious organizations. It is also due in great part to the vision of the program established by Dr. Terry Yoo and Dr. Michael Ackerman at the National Library of Medicine. This book lists a few of these contributors in the following paragraphs. Not all developers of ITK are credited here, so please visit the Web pages at http://www.itk.org/HTML/About.htm for the names of additional contributors, as well as checking the GIT source logs for code contributions. The following is a brief description of the contributors to this software guide and their contri- butions. Luis Iba´n˜ez is principal author of this text. He assisted in the design and layout of the text, implemented the bulk of the LATEX and CMake build process, and was responsible for the bulk of the content. He also developed most of the example code found in the Insight/Examples directory. Will Schroeder helped design and establish the organization of this text and the Insight/Examples directory. He is principal content editor, and has authored several chap- ters. Lydia Ng authored the description for the registration framework and its components, the sec- tion on the multiresolution framework, and the section on deformable registration methods. She also edited the section on the resampling image filter and the sections on various level set segmentation algorithms. Joshua Cates authored the iterators chapter and the text and examples describing watershed segmentation. He also co-authored the level-set segmentation material. Jisung Kim authored the chapter on the statistics framework. Julien Jomier contributed the chapter on spatial objects and examples on model-based regis- tration using spatial objects. vi Karthik Krishnan reconfigured the process for automatically generating images from all the examples. Added a large number of new examples and updated the Filtering and Segmentation chapters for the second edition. Stephen Aylward contributed material describing spatial objects and their application. Tessa Sundaram contributed the section on deformable registration using the finite element method. YinPeng Jin contributed the examples on hybrid segmentation methods. Celina Imielinska authored the section describing the principles of hybrid segmentation meth- ods. Mark Foskey contributed the examples on the AutomaticTopologyMeshSource class. MathieuMalaterre contributed the entire section on the description and use of DICOM readers and writers based on the GDCM library. He also contributed an example on the use of the VTKImageIO class. Gavin Baker contributed the section on how to write composite filters. Also known as minip- ipeline filters. Since the software guide is generated in part from the ITK source code itself, many ITK de- velopers have been involved in updating and extending the ITK documentation. These in- clude David Doria, Bradley Lowecamp, Mark Foskey, Gae¨tan Lehmann, Andreas Schuh, Tom Vercauteren, Cory Quammen, Daniel Blezek, Paul Hughett, Matt McCormick, Josh Cates, Arnaud Gelas, Jim Miller, Brad King, Gabe Hart, Hans Johnson. Hans Johnson, KentWilliams, Constantine Zakkaroff, Xiaoxiao Liu andMattMcCormick updated the documentation for the initial ITK Version 4 release. CONTENTS I Introduction 1 1 Welcome 3 1.1 Organization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2 How to Learn ITK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.3 Software Organization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.3.1 Obtaining the Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.4 Downloading ITK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.4.1 Downloading Packaged Releases . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.4.2 Downloading using Git . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.4.3 Join the Mailing List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.4.4 Directory Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.4.5 Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.4.6 Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.5 The Insight Community and Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.6 A Brief History of ITK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2 Installation 11 2.1 Configuring ITK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.1.1 Preparing CMake . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.1.2 Configuring ITK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.2 Getting Started With ITK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 viii CONTENTS 2.2.1 Hello World ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3 System Overview 17 3.1 System Organization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.2 Essential System Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.2.1 Generic Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.2.2 Include Files and Class Definitions . . . . . . . . . . . . . . . . . . . . . . . . . 19 3.2.3 Object Factories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 3.2.4 Smart Pointers and Memory Management . . . . . . . . . . . . . . . . . . . . . 20 3.2.5 Error Handling and Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.2.6 Event Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.2.7 Multi-Threading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.3 Numerics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.4 Data Representation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.5 Data Processing Pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.6 Spatial Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.7 Wrapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 II Design and Functionality 31 4 DataRepresentation 33 4.1 Image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.1.1 Creating an Image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.1.2 Reading an Image from a File . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 4.1.3 Accessing Pixel Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 4.1.4 Defining Origin and Spacing . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 4.1.5 RGB Images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 4.1.6 Vector Images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 4.1.7 Importing Image Data from a Buffer . . . . . . . . . . . . . . . . . . . . . . . . 43 4.2 PointSet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.2.1 Creating a PointSet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.2.2 Getting Access to Points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 4.2.3 Getting Access to Data in Points . . . . . . . . . . . . . . . . . . . . . . . . . . 50

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.