[
next
] [
prev
] [
prev-tail
] [
tail
] [
up
]
Contents
I
Introduction
1
Welcome
1.1
Organization
1.2
How to Learn OTB
1.3
Software Organization
1.3.1
Obtaining the Software
1.4
Downloading OTB
1.4.1
Join the Mailing List
1.4.2
Directory Structure
1.4.3
Documentation
1.4.4
Data
1.5
The OTB Community and Support
1.6
A Brief History of OTB
1.6.1
ITK’s history
2
Installation
2.1
Installing binary packages
2.1.1
Windows 2000/XP/Vista/Seven
2.1.2
MacOS X
2.1.3
Linux
Ubuntu 10.04 and higher
OpenSuse 11.X and higher
CentOS 5.5
2.2
Building from sources
2.2.1
Getting the OTB source code
2.2.2
External Libraries
2.2.3
Configuring OTB
Preparing CMake
Compiling OTB
2.3
Getting Started With OTB
2.3.1
Hello World !
3
System Overview
3.1
System Organization
3.2
Essential System Concepts
3.2.1
Generic Programming
3.2.2
Include Files and Class Definitions
3.2.3
Object Factories
3.2.4
Smart Pointers and Memory Management
3.2.5
Error Handling and Exceptions
3.2.6
Event Handling
3.2.7
Multi-Threading
3.3
Numerics
3.4
Data Representation
3.5
Data Processing Pipeline
3.6
Spatial Objects
II
Tutorials
4
Building Simple Applications with OTB
4.1
Hello world
4.2
Pipeline basics: read and write
4.3
Filtering pipeline
4.4
Handling types: scaling output
4.5
Working with multispectral or color images
4.6
Parsing command line arguments
4.7
Viewer
4.8
Going from raw satellite images to useful products
III
User’s guide
5
Data Representation
5.1
Image
5.1.1
Creating an Image
5.1.2
Reading an Image from a File
5.1.3
Accessing Pixel Data
5.1.4
Defining Origin and Spacing
5.1.5
Accessing Image Metadata
5.1.6
RGB Images
5.1.7
Vector Images
5.1.8
Importing Image Data from a Buffer
5.1.9
Image Lists
5.2
PointSet
5.2.1
Creating a PointSet
5.2.2
Getting Access to Points
5.2.3
Getting Access to Data in Points
5.2.4
Vectors as Pixel Type
5.3
Mesh
5.3.1
Creating a Mesh
5.3.2
Inserting Cells
5.3.3
Managing Data in Cells
5.4
Path
5.4.1
Creating a PolyLineParametricPath
6
Reading and Writing Images
6.1
Basic Example
6.2
Pluggable Factories
6.3
IO Streaming
6.3.1
Implicit Streaming
6.3.2
Explicit Streaming
6.4
Reading and Writing RGB Images
6.5
Reading, Casting and Writing Images
6.6
Extracting Regions
6.7
Reading and Writing Vector Images
6.7.1
Reading and Writing Complex Images
6.8
Reading and Writing Multiband Images
6.8.1
Extracting ROIs
6.9
Reading Image Series
7
Reading and Writing Auxilary Data
7.1
Reading DEM Files
7.2
Elevation management with OTB
7.3
Lidar data Files
7.4
Reading and Writing Shapefiles and KML
7.5
Handling large vector data through OGR
8
Basic Filtering
8.1
Thresholding
8.1.1
Binary Thresholding
8.1.2
General Thresholding
8.1.3
Threshold to Point Set
8.2
Mathematical operations on images
8.3
Gradients
8.3.1
Gradient Magnitude
8.3.2
Gradient Magnitude With Smoothing
8.3.3
Derivative Without Smoothing
8.4
Second Order Derivatives
8.4.1
Laplacian Filters
Laplacian Filter Recursive Gaussian
8.5
Edge Detection
8.5.1
Canny Edge Detection
8.5.2
Ratio of Means Detector
8.6
Neighborhood Filters
8.6.1
Mean Filter
8.6.2
Median Filter
8.6.3
Mathematical Morphology
Binary Filters
Grayscale Filters
8.7
Smoothing Filters
8.7.1
Blurring
Discrete Gaussian
8.7.2
Edge Preserving Smoothing
Introduction to Anisotropic Diffusion
Gradient Anisotropic Diffusion
Mean Shift filtering and clustering
8.7.3
Edge Preserving Speckle Reduction Filters
8.7.4
Edge preserving Markov Random Field
8.8
Distance Map
8.9
Rasterization
9
Image Registration
9.1
Registration Framework
9.2
”Hello World” Registration
9.3
Features of the Registration Framework
9.3.1
Direction of the Transform Mapping
9.3.2
Registration is done in physical space
9.4
Multi-Modality Registration
9.4.1
Viola-Wells Mutual Information
9.5
Centered Transforms
9.5.1
Rigid Registration in 2D
9.5.2
Centered Affine Transform
9.6
Transforms
9.6.1
Geometrical Representation
9.6.2
Transform General Properties
9.6.3
Identity Transform
9.6.4
Translation Transform
9.6.5
Scale Transform
9.6.6
Scale Logarithmic Transform
9.6.7
Euler2DTransform
9.6.8
CenteredRigid2DTransform
9.6.9
Similarity2DTransform
9.6.10
QuaternionRigidTransform
9.6.11
VersorTransform
9.6.12
VersorRigid3DTransform
9.6.13
Euler3DTransform
9.6.14
Similarity3DTransform
9.6.15
Rigid3DPerspectiveTransform
9.6.16
AffineTransform
9.6.17
BSplineDeformableTransform
9.6.18
KernelTransforms
9.7
Metrics
9.7.1
Mean Squares Metric
Exploring a Metric
9.7.2
Normalized Correlation Metric
9.7.3
Mean Reciprocal Square Differences
9.7.4
Mutual Information Metric
Parzen Windowing
Viola and Wells Implementation
Mattes et al. Implementation
9.7.5
Kullback-Leibler distance metric
9.7.6
Normalized Mutual Information Metric
9.7.7
Mean Squares Histogram
9.7.8
Correlation Coefficient Histogram
9.7.9
Cardinality Match Metric
9.7.10
Kappa Statistics Metric
9.7.11
Gradient Difference Metric
9.8
Optimizers
9.9
Landmark-based registration
10
Disparity Map Estimation
10.1
Disparity Maps
10.1.1
Geometric deformation modeling
10.1.2
Similarity measures
10.1.3
The correlation coefficient
10.2
Regular grid disparity map estimation
10.3
Irregular grid disparity map estimation
10.4
Stereo reconstruction
11
Orthorectification and Map Projection
11.1
Sensor Models
11.1.1
Types of Sensor Models
11.1.2
Using Sensor Models
11.1.3
Evaluating Sensor Model
11.1.4
Limits of the Approach
11.2
Map Projections
11.3
Orthorectification with OTB
11.4
Vector data projection manipulation
11.5
Geometries projection manipulation
11.6
Elevation management with OTB
11.7
Vector data area extraction
12
Radiometry
12.1
Radiometric Indices
12.1.1
Introduction
12.1.2
NDVI
12.1.3
ARVI
12.1.4
AVI
12.2
Atmospheric Corrections
13
Image Fusion
13.1
Simple Pan Sharpening
13.2
Bayesian Data Fusion
14
Feature Extraction
14.1
Textures
14.1.1
Haralick Descriptors
14.1.2
PanTex
14.1.3
Structural Feature Set
14.2
Interest Points
14.2.1
Harris detector
14.2.2
SIFT detector
14.2.3
SURF detector
14.3
Alignments
14.4
Lines
14.4.1
Line Detection
14.4.2
Segment Extraction
Local Hough Transform
Line Segment Detector
14.4.3
Right Angle Detector
14.5
Density Features
14.5.1
Edge Density
14.5.2
SIFT Density
14.6
Geometric Moments
14.6.1
Complex Moments
Complex Moments for Images
Complex Moments for Paths
14.6.2
Hu Moments
Hu Moments for Images
14.6.3
Flusser Moments
Flusser Moments for Images
14.7
Road extraction
14.7.1
Road extraction filter
14.7.2
Step by step road extraction
14.8
Cloud Detection
15
Multi-scale Analysis
15.1
Introduction
15.2
Morphological Pyramid
15.2.1
Morphological Pyramid Exploitation
16
Image Segmentation
16.1
Region Growing
16.1.1
Connected Threshold
16.1.2
Otsu Segmentation
16.1.3
Neighborhood Connected
16.1.4
Confidence Connected
16.2
Segmentation Based on Watersheds
16.2.1
Overview
16.2.2
Using the ITK Watershed Filter
16.3
Level Set Segmentation
16.3.1
Fast Marching Segmentation
17
Image Simulation
17.1
PROSAIL model
17.2
Image Simulation
17.2.1
LAI image estimation
17.2.2
Sensor RSR Image Simulation
18
Dimension Reduction
18.1
Principal Component Analysis
18.2
Noise-Adjusted Principal Components Analysis
18.3
Maximum Noise Fraction
18.4
Fast Independant Component Analysis
18.5
Maximum Autocorrelation Factor
19
Classification
19.1
Introduction
19.1.1
k-d Tree Based k-Means Clustering
19.1.2
K-Means Classification
Simple version
General approach
19.1.3
Bayesian Plug-In Classifier
19.1.4
Expectation Maximization Mixture Model Estimation
19.1.5
Classification using Markov Random Fields
ITK framework
OTB framework
19.2
Statistical Segmentations
19.2.1
Stochastic Expectation Maximization
19.3
Support Vector Machines
19.3.1
Mathematical formulation
19.3.2
Learning With PointSets
19.3.3
PointSet Classification
19.3.4
Learning With Images
19.3.5
Image Classification
19.3.6
Generic Kernel SVM
Learning with User Defined Kernels
Classification with user defined kernel
19.3.7
Multi-band, streamed classification
19.3.8
Classification map regularization
19.4
Kohonen’s Self Organizing Map
19.4.1
The algorithm
Learning
19.4.2
Building a color table
19.4.3
SOM Classification
19.4.4
Multi-band, streamed classification
20
Object-based Image Analysis
20.1
From Images to Objects
20.2
Object Attributes
20.3
Object Filtering based on radiometric and statistics attributes
20.4
Hoover metrics to compare segmentations
21
Change Detection
21.1
Introduction
21.1.1
Surface-based approaches
21.2
Change Detection Framework
21.3
Simple Detectors
21.3.1
Mean Difference
21.3.2
Ratio Of Means
21.4
Statistical Detectors
21.4.1
Distance between local distributions
21.4.2
Local Correlation
21.5
Multi-Scale Detectors
21.5.1
Kullback-Leibler Distance between distributions
21.6
Multi-components detectors
21.6.1
Multivariate Alteration Detector
22
Geospatial analysis
22.1
Reading from and Writing to Geospatial DBs
23
Hyperspectral
23.1
Unmixing
23.1.1
Linear mixing model
23.1.2
Simplex
23.1.3
State of the art unmixing algorithms selection
Family 1
Family 2
Family 3
Further remarks
Basic hyperspectral unmixing example
23.2
Dimensionality reduction
23.3
Anomaly detection
24
Image Visualization and output
24.1
Viewer
24.2
Images
24.2.1
Grey Level Images
24.2.2
Multiband Images
24.2.3
Indexed Images
24.2.4
Altitude Images
25
Online data
25.1
Name to Coordinates
25.2
Open Street Map
IV
Developer’s guide
26
Iterators
26.1
Introduction
26.2
Programming Interface
26.2.1
Creating Iterators
26.2.2
Moving Iterators
26.2.3
Accessing Data
26.2.4
Iteration Loops
26.3
Image Iterators
26.3.1
ImageRegionIterator
26.3.2
ImageRegionIteratorWithIndex
26.3.3
ImageLinearIteratorWithIndex
26.4
Neighborhood Iterators
26.4.1
NeighborhoodIterator
Basic neighborhood techniques: edge detection
Convolution filtering: Sobel operator
Optimizing iteration speed
Separable convolution: Gaussian filtering
Random access iteration
26.4.2
ShapedNeighborhoodIterator
Shaped neighborhoods: morphological operations
27
Image Adaptors
27.1
Image Casting
27.2
Adapting RGB Images
27.3
Adapting Vector Images
27.4
Adaptors for Simple Computation
27.5
Adaptors and Writers
28
Streaming and Threading
28.1
Introduction
28.2
Streaming and threading in OTB
28.3
Division strategies
29
How To Write A Filter
29.1
Terminology
29.2
Overview of Filter Creation
29.3
Streaming Large Data
29.3.1
Overview of Pipeline Execution
29.3.2
Details of Pipeline Execution
UpdateOutputInformation()
PropagateRequestedRegion()
UpdateOutputData()
29.4
Threaded Filter Execution
29.5
Filter Conventions
29.5.1
Optional
29.5.2
Useful Macros
29.6
How To Write A Composite Filter
29.6.1
Implementing a Composite Filter
29.6.2
A Simple Example
30
Persistent filters
30.1
Introduction
30.2
Architecture
30.2.1
The persistent filter class
30.2.2
The streaming decorator class
30.3
An end-to-end example
30.3.1
First step: writing a persistent filter
30.3.2
Second step: Decorating the filter and using it
30.3.3
Third step: one class to rule them all
31
How to write an application
31.1
Application design
31.2
Architecture of the class
31.2.1
DoInit()
31.2.2
DoUpdateParameters()
31.2.3
DoExecute()
31.2.4
Parameters selection
31.2.5
Parameters description
31.3
Compile your application
31.4
Execute your application
31.5
Testing your application
31.6
Application Example
V
Appendix
32
Frequently Asked Questions
32.1
Introduction
32.1.1
What is OTB?
32.1.2
What is ORFEO?
Where can I get more information about ORFEO?
32.1.3
What is the ORFEO Accompaniment Program?
Where can I get more information about the ORFEO Accompaniment Program?
32.1.4
Who is responsible for the OTB development?
32.2
Licence
32.2.1
Which is the OTB licence?
32.2.2
If I write an application using OTB am I forced to distribute that application?
32.2.3
If I write an application using OTB am I forced to contribute the code into the offical repositories?
32.2.4
If I wanted to distribute an application using OTB what license would I need to use?
32.2.5
I am a commercial user. Is there any restriction on the use of OTB?
32.3
Getting OTB
32.3.1
Who can download the OTB?
32.3.2
Where can I download the OTB?
32.3.3
How to get the latest bleeding-edge version?
32.4
Compiling and installing OTB from source
32.4.1
Which platforms are supported?
32.4.2
Which libraries/packages are needed before compiling and installing OTB?
32.4.3
Main steps
Unix/Linux Platforms
Microsoft Visual Studio (Express 2008/Express 2010)
32.4.4
Specific platform issues
Visual Studio 2010/Express 2010
MacOSX 10.6 Snow Leopard
Debian Linux / Ubuntu
32.5
Using OTB
32.5.1
Where to start ?
32.5.2
What is the image size limitation of OTB ?
32.6
Getting help
32.6.1
Is there any mailing list?
32.6.2
Which is the main source of documentation?
32.7
Contributing to OTB
32.7.1
I want to contribute to OTB, where to begin?
32.7.2
What are the benefits of contributing to OTB?
32.7.3
What functionality can I contribute?
32.8
Running the tests
32.8.1
What are the tests?
32.8.2
How to run the tests?
32.8.3
How to get the test data?
32.8.4
How to submit the results?
32.9
OTB’s Roadmap
32.9.1
Which will be the next version of OTB?
What is a major version?
What is a minor version?
What is a bugfix version?
32.9.2
When will the next version of OTB be available?
32.9.3
What features will the OTB include and when?
33
Release Notes
34
Wrappings to other languages
34.1
OTB-Wrapping: bindings to Java language
34.1.1
Mangling
34.1.2
How to Use OTB-Wrapping in Java
Import OTB classes
Compile Java programs
Java programs execution
34.1.3
Example
34.1.4
Use OTB-Wrapping
Download sources
Required Tools
Compile OTB-Wrapping sources
Download binaries
Use OTB-Wrapping with Eclipse
34.2
Java tutorials
34.2.1
Hello World
34.2.2
Pipeline
34.2.3
Filtering pipeline
34.2.4
Smarter Filtering Pipeline
34.2.5
Scaling Pipeline
34.2.6
MultiSpectral
34.2.7
OrthoFusion
34.3
Python tutorials
34.3.1
Hello World
34.3.2
Pipeline
34.3.3
Filtering pipeline
34.3.4
Smarter Filtering Pipeline
34.3.5
Scaling Pipeline
34.3.6
MultiSpectral
34.4
Developer Guide
34.4.1
Add a new Library : Creating a new CMakeList.txt file
34.4.2
Add a new cmake file
A simple Example : otb::StreamingShrinkImageFilter
34.4.3
Predefined Macros
OTB-Wrapping predefined variables
OTB-Wrapping predefined lists
Macro MANGLE
_NAME
34.4.4
HTML JavaDoc generation
Generate JavaDoc documentation
Generate JavaDoc while compilation
35
Contributors
[
next
] [
prev
] [
prev-tail
] [
front
] [
up
]