logo资料库

itk教程,详解入门级 通俗易懂.pdf

第1页 / 共768页
第2页 / 共768页
第3页 / 共768页
第4页 / 共768页
第5页 / 共768页
第6页 / 共768页
第7页 / 共768页
第8页 / 共768页
资料共768页,剩余部分请下载后查看
I Introduction
Welcome
Organization
How to Learn ITK
Software Organization
Obtaining the Software
Downloading ITK
Downloading Packaged Releases
Downloading using Git
Join the Mailing List
Directory Structure
Documentation
Data
The Insight Community and Support
A Brief History of ITK
Installation
Configuring ITK
Preparing CMake
Configuring ITK
Getting Started With ITK
Hello World !
System Overview
System Organization
Essential System Concepts
Generic Programming
Include Files and Class Definitions
Object Factories
Smart Pointers and Memory Management
Error Handling and Exceptions
Event Handling
Multi-Threading
Numerics
Data Representation
Data Processing Pipeline
Spatial Objects
Wrapping
II Design and Functionality
DataRepresentation
Image
Creating an Image
Reading an Image from a File
Accessing Pixel Data
Defining Origin and Spacing
RGB Images
Vector Images
Importing Image Data from a Buffer
PointSet
Creating a PointSet
Getting Access to Points
Getting Access to Data in Points
RGB as Pixel Type
Vectors as Pixel Type
Normals as Pixel Type
Mesh
Creating a Mesh
Inserting Cells
Managing Data in Cells
Customizing the Mesh
Topology and the K-Complex
Representing a PolyLine
Simplifying Mesh Creation
Iterating Through Cells
Visiting Cells
More on Visiting Cells
Path
Creating a PolyLineParametricPath
Containers
Spatial Objects
Introduction
Hierarchy
SpatialObject Tree Container
Transformations
Types of Spatial Objects
ArrowSpatialObject
BlobSpatialObject
CylinderSpatialObject
EllipseSpatialObject
GaussianSpatialObject
GroupSpatialObject
ImageSpatialObject
ImageMaskSpatialObject
LandmarkSpatialObject
LineSpatialObject
MeshSpatialObject
SurfaceSpatialObject
TubeSpatialObject
VesselTubeSpatialObject
DTITubeSpatialObject
SceneSpatialObject
Read/Write SpatialObjects
Statistics Computation via SpatialObjects
Filtering
Thresholding
Binary Thresholding
General Thresholding
Edge Detection
Canny Edge Detection
Casting and Intensity Mapping
Linear Mappings
Non Linear Mappings
Gradients
Gradient Magnitude
Gradient Magnitude With Smoothing
Derivative Without Smoothing
Second Order Derivatives
Second Order Recursive Gaussian
Laplacian Filters
Laplacian Filter Finite Difference
Laplacian Filter Recursive Gaussian
Neighborhood Filters
Mean Filter
Median Filter
Mathematical Morphology
Binary Filters
Grayscale Filters
Voting Filters
Binary Median Filter
Hole Filling Filter
Iterative Hole Filling Filter
Smoothing Filters
Blurring
Discrete Gaussian
Binomial Blurring
Recursive Gaussian IIR
Local Blurring
Gaussian Blur Image Function
Edge Preserving Smoothing
Introduction to Anisotropic Diffusion
Gradient Anisotropic Diffusion
Curvature Anisotropic Diffusion
Curvature Flow
MinMaxCurvature Flow
Bilateral Filter
Edge Preserving Smoothing in Vector Images
Vector Gradient Anisotropic Diffusion
Vector Curvature Anisotropic Diffusion
Edge Preserving Smoothing in Color Images
Gradient Anisotropic Diffusion
Curvature Anisotropic Diffusion
Distance Map
Geometric Transformations
Filters You Should be Afraid to Use
Change Information Image Filter
Flip Image Filter
Resample Image Filter
Introduction
Importance of Spacing and Origin
A Complete Example
Rotating an Image
Rotating and Scaling an Image
Resampling using a deformation field
Subsampling and image in the same space
Resampling an Anisotropic image to make it Isotropic
Frequency Domain
Computing a Fast Fourier Transform (FFT)
Filtering on the Frequency Domain
Extracting Surfaces
Surface extraction
Reading and Writing Images
Basic Example
Pluggable Factories
Using ImageIO Classes Explicitly
Reading and Writing RGB Images
Reading, Casting and Writing Images
Extracting Regions
Extracting Slices
Reading and Writing Vector Images
The Minimal Example
Producing and Writing Covariant Images
Reading Covariant Images
Reading and Writing Complex Images
Extracting Components from Vector Images
Reading and Writing Image Series
Reading Image Series
Writing Image Series
Reading and Writing Series of RGB Images
Reading and Writing DICOM Images
Foreword
Reading and Writing a 2D Image
Reading a 2D DICOM Series and Writing a Volume
Reading a 2D DICOM Series and Writing a 2D DICOM Series
Printing DICOM Tags From One Slice
Printing DICOM Tags From a Series
Changing a DICOM Header
Registration
Registration Framework
"Hello World" Registration
Features of the Registration Framework
Direction of the Transform Mapping
Registration is done in physical space
Monitoring Registration
Multi-Modality Registration
Viola-Wells Mutual Information
Mattes Mutual Information
Centered Transforms
Rigid Registration in 2D
Initializing with Image Moments
Similarity Transform in 2D
Rigid Transform in 3D
Centered Affine Transform
Multi-Resolution Registration
Fundamentals
Parameter Tuning
Transforms
Geometrical Representation
Transform General Properties
Identity Transform
Translation Transform
Scale Transform
Scale Logarithmic Transform
Euler2DTransform
CenteredRigid2DTransform
Similarity2DTransform
QuaternionRigidTransform
VersorTransform
VersorRigid3DTransform
Euler3DTransform
Similarity3DTransform
Rigid3DPerspectiveTransform
AffineTransform
BSplineDeformableTransform
KernelTransforms
Interpolators
Nearest Neighbor Interpolation
Linear Interpolation
B-Spline Interpolation
Windowed Sinc Interpolation
Metrics
Mean Squares Metric
Exploring a Metric
Normalized Correlation Metric
Mean Reciprocal Square Differences
Mutual Information Metric
Parzen Windowing
Viola and Wells Implementation
Mattes et al. Implementation
Kullback-Leibler distance metric
Normalized Mutual Information Metric
Mean Squares Histogram
Correlation Coefficient Histogram
Cardinality Match Metric
Kappa Statistics Metric
Gradient Difference Metric
Optimizers
Registration using Match Cardinality metric
Registration using the One plus One Evolutionary Optimizer
Registration using masks constructed with Spatial objects
Rigid registrations incorporating prior knowledge
Image Pyramids
Deformable Registration
FEM-Based Image Registration
BSplines Image Registration
Level Set Motion for Deformable Registration
BSplines Multi-Grid Image Registration
BSplines Multi-Grid Image Registration
BSplines Image Registration in 3D
Image Warping with Kernel Splines
Image Warping with BSplines
Demons Deformable Registration
Asymmetrical Demons Deformable Registration
Symmetrical Demons Deformable Registration
Visualizing Deformation fields
Visualizing 2D deformation fields
Visualizing 3D deformation fields
Model Based Registration
Point Set Registration
Point Set Registration in 2D
Point Set Registration in 3D
Point Set to Distance Map Metric
Registration Troubleshooting
Too many samples outside moving image buffer
General heuristics for parameter fine-tunning
Segmentation
Region Growing
Connected Threshold
Otsu Segmentation
Neighborhood Connected
Confidence Connected
Application of the Confidence Connected filter on the Brain Web Data
Isolated Connected
Confidence Connected in Vector Images
Segmentation Based on Watersheds
Overview
Using the ITK Watershed Filter
Level Set Segmentation
Fast Marching Segmentation
Shape Detection Segmentation
Geodesic Active Contours Segmentation
Threshold Level Set Segmentation
Canny-Edge Level Set Segmentation
Laplacian Level Set Segmentation
Geodesic Active Contours Segmentation With Shape Guidance
Feature Extraction
Hough Transform
Line Extraction
Circle Extraction
Statistics
Data Containers
Sample Interface
Sample Adaptors
ImageToListSampleAdaptor
PointSetToListSampleAdaptor
Histogram
Subsample
MembershipSample
MembershipSampleGenerator
K-d Tree
Algorithms and Functions
Sample Statistics
Mean and Covariance
Weighted Mean and Covariance
Sample Generation
SampleToHistogramFilter
NeighborhoodSampler
Sample Sorting
Probability Density Functions
Gaussian Distribution
Distance Metric
Euclidean Distance
Decision Rules
Maximum Decision Rule
Minimum Decision Rule
Maximum Ratio Decision Rule
Random Variable Generation
Normal (Gaussian) Distribution
Statistics applied to Images
Image Histograms
Scalar Image Histogram with Adaptor
Scalar Image Histogram with Generator
Color Image Histogram with Generator
Color Image Histogram Writing
Image Information Theory
Computing Image Entropy
Computing Images Mutual Information
Classification
k-d Tree Based k-Means Clustering
K-Means Classification
Bayesian Plug-In Classifier
Expectation Maximization Mixture Model Estimation
Classification using Markov Random Field
III ITK Community Participation
Iterators
Introduction
Programming Interface
Creating Iterators
Moving Iterators
Accessing Data
Iteration Loops
Image Iterators
ImageRegionIterator
ImageRegionIteratorWithIndex
ImageLinearIteratorWithIndex
ImageSliceIteratorWithIndex
ImageRandomConstIteratorWithIndex
Neighborhood Iterators
NeighborhoodIterator
Basic neighborhood techniques: edge detection
Convolution filtering: Sobel operator
Optimizing iteration speed
Separable convolution: Gaussian filtering
Slicing the neighborhood
Random access iteration
ShapedNeighborhoodIterator
Shaped neighborhoods: morphological operations
Image Adaptors
Image Casting
Adapting RGB Images
Adapting Vector Images
Adaptors for Simple Computation
Adaptors and Writers
How To Write A Filter
Terminology
Overview of Filter Creation
Streaming Large Data
Overview of Pipeline Execution
Details of Pipeline Execution
UpdateOutputInformation()
PropagateRequestedRegion()
UpdateOutputData()
Threaded Filter Execution
Filter Conventions
Optional
Useful Macros
How To Write A Composite Filter
Implementing a Composite Filter
A Simple Example
Software Process
Git Source Code Repository
CDash Regression Testing System
Working The Process
The Effectiveness of the Process
Appendices
Licenses
Insight Toolkit License
Third Party Licenses
DICOM Parser
Double Conversion
Expat
GDCM
GIFTI
HDF5
JPEG
KWSys
MetaIO
Netlib's SLATEC
NIFTI
NrrdIO
OpenJPEG
PNG
TIFF
VNL
ZLIB
The ITK Software Guide Third Edition Updated for ITK version 4.5 Hans J. Johnson, Matt McCormick, Luis Ib ´a ˜nez, and the Insight Software Consortium December 17, 2013 http://itk.org Email: community@itk.org
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 http://itk.org/ItkSoftwareGuide.pdf. version recent of this document is available online at
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 Ib´a ˜nez 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. Mathieu Malaterre 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, Ga¨etan 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, Kent Williams, Constantine Zakkaroff, Xiaoxiao Liu and Matt McCormick updated the documentation for the initial ITK Version 4 release.
分享到:
收藏