[
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.3.2
Directory Structure
1.3.3
Documentation
1.3.4
Data
1.4
The OTB Community and Support
1.4.1
Join the Mailing List
1.4.2
Community
1.5
A Brief History of OTB
1.5.1
ITK’s history
2
Compiling OTB from source
2.1
Linux and Mac OS X
2.1.1
Setting up the build environment
2.1.2
SuperBuild: Build OTB and all dependencies
2.1.3
Normal build: Build only OTB
2.2
Windows
2.3
Known issues
3
Compiling Monteverdi from source
3.1
Linux and Mac OS X
3.1.1
Monteverdi
3.2
Windows
4
System Overview
4.1
System Organization
4.2
Essential System Concepts
4.2.1
Generic Programming
4.2.2
Include Files and Class Definitions
4.2.3
Object Factories
4.2.4
Smart Pointers and Memory Management
4.2.5
Error Handling and Exceptions
4.2.6
Event Handling
4.2.7
Multi-Threading
4.3
Numerics
4.4
Data Representation
4.5
Data Processing Pipeline
4.6
Spatial Objects
II
Tutorials
5
Building Simple Applications with OTB
5.1
Hello world
5.1.1
Linux and Mac OS X
5.1.2
Windows
5.2
Pipeline basics: read and write
5.3
Filtering pipeline
5.4
Handling types: scaling output
5.5
Working with multispectral or color images
5.6
Parsing command line arguments
5.7
Going from raw satellite images to useful products
III
User’s guide
6
Data Representation
6.1
Image
6.1.1
Creating an Image
6.1.2
Reading an Image from a File
6.1.3
Accessing Pixel Data
6.1.4
Defining Origin and Spacing
6.1.5
Accessing Image Metadata
6.1.6
RGB Images
6.1.7
Vector Images
6.1.8
Importing Image Data from a Buffer
6.1.9
Image Lists
6.2
PointSet
6.2.1
Creating a PointSet
6.2.2
Getting Access to Points
6.2.3
Getting Access to Data in Points
6.2.4
Vectors as Pixel Type
6.3
Mesh
6.3.1
Creating a Mesh
6.3.2
Inserting Cells
6.3.3
Managing Data in Cells
6.4
Path
6.4.1
Creating a PolyLineParametricPath
7
Reading and Writing Images
7.1
Basic Example
7.2
Pluggable Factories
7.3
IO Streaming
7.3.1
Implicit Streaming
7.3.2
Explicit Streaming
7.4
Reading and Writing RGB Images
7.5
Reading, Casting and Writing Images
7.6
Extracting Regions
7.7
Reading and Writing Vector Images
7.7.1
Reading and Writing Complex Images
7.8
Reading and Writing Multiband Images
7.8.1
Extracting ROIs
7.9
Reading Image Series
7.10
Extended filename for reader and writer
7.10.1
Purpose
7.10.2
Syntax
7.10.3
Reader options
7.10.4
Writer options
8
Reading and Writing Auxilary Data
8.1
Reading DEM Files
8.2
Elevation management with OTB
8.3
Reading and Writing Shapefiles and KML
8.4
Handling large vector data through OGR
9
Basic Filtering
9.1
Thresholding
9.1.1
Binary Thresholding
9.1.2
General Thresholding
9.1.3
Threshold to Point Set
9.2
Mathematical operations on images
9.2.1
BandMath filter
9.2.2
BandMathX filter
9.3
Gradients
9.3.1
Gradient Magnitude
9.3.2
Gradient Magnitude With Smoothing
9.3.3
Derivative Without Smoothing
9.4
Second Order Derivatives
9.4.1
Laplacian Filters
9.4.1.1
Laplacian Filter Recursive Gaussian
9.5
Edge Detection
9.5.1
Canny Edge Detection
9.5.2
Ratio of Means Detector
9.6
Neighborhood Filters
9.6.1
Mean Filter
9.6.2
Median Filter
9.6.3
Mathematical Morphology
9.6.3.1
Binary Filters
9.6.3.2
Grayscale Filters
9.7
Smoothing Filters
9.7.1
Blurring
9.7.1.1
Discrete Gaussian
9.7.2
Edge Preserving Smoothing
9.7.2.1
Introduction to Anisotropic Diffusion
9.7.2.2
Gradient Anisotropic Diffusion
9.7.2.3
Mean Shift filtering and clustering
9.7.3
Edge Preserving Speckle Reduction Filters
9.7.4
Edge preserving Markov Random Field
9.8
Distance Map
10
Image Registration
10.1
Registration Framework
10.2
”Hello World” Registration
10.3
Features of the Registration Framework
10.3.1
Direction of the Transform Mapping
10.3.2
Registration is done in physical space
10.4
Multi-Modality Registration
10.4.1
Viola-Wells Mutual Information
10.5
Centered Transforms
10.5.1
Rigid Registration in 2D
10.5.2
Centered Affine Transform
10.6
Transforms
10.6.1
Geometrical Representation
10.6.2
Transform General Properties
10.6.3
Identity Transform
10.6.4
Translation Transform
10.6.5
Scale Transform
10.6.6
Scale Logarithmic Transform
10.6.7
Euler2DTransform
10.6.8
CenteredRigid2DTransform
10.6.9
Similarity2DTransform
10.6.10
QuaternionRigidTransform
10.6.11
VersorTransform
10.6.12
VersorRigid3DTransform
10.6.13
Euler3DTransform
10.6.14
Similarity3DTransform
10.6.15
Rigid3DPerspectiveTransform
10.6.16
AffineTransform
10.6.17
BSplineDeformableTransform
10.6.18
KernelTransforms
10.7
Metrics
10.7.1
Mean Squares Metric
10.7.1.1
Exploring a Metric
10.7.2
Normalized Correlation Metric
10.7.3
Mean Reciprocal Square Differences
10.7.4
Mutual Information Metric
10.7.4.1
Parzen Windowing
10.7.4.2
Viola and Wells Implementation
10.7.4.3
Mattes et al. Implementation
10.7.5
Kullback-Leibler distance metric
10.7.6
Normalized Mutual Information Metric
10.7.7
Mean Squares Histogram
10.7.8
Correlation Coefficient Histogram
10.7.9
Cardinality Match Metric
10.7.10
Kappa Statistics Metric
10.7.11
Gradient Difference Metric
10.8
Optimizers
10.9
Landmark-based registration
11
Disparity Map Estimation
11.1
Disparity Maps
11.1.1
Geometric deformation modeling
11.1.2
Similarity measures
11.1.3
The correlation coefficient
11.2
Regular grid disparity map estimation
11.3
Irregular grid disparity map estimation
11.4
Stereo reconstruction
12
Orthorectification and Map Projection
12.1
Sensor Models
12.1.1
Types of Sensor Models
12.1.2
Using Sensor Models
12.1.3
Evaluating Sensor Model
12.1.4
Limits of the Approach
12.2
Map Projections
12.3
Orthorectification with OTB
12.4
Vector data projection manipulation
12.5
Geometries projection manipulation
12.6
Elevation management with OTB
12.7
Vector data area extraction
13
Radiometry
13.1
Radiometric Indices
13.1.1
Introduction
13.1.2
NDVI
13.1.3
ARVI
13.1.4
AVI
13.2
Atmospheric Corrections
14
Image Fusion
14.1
Simple Pan Sharpening
14.2
Bayesian Data Fusion
15
Feature Extraction
15.1
Textures
15.1.1
Haralick Descriptors
15.1.2
PanTex
15.1.3
Structural Feature Set
15.2
Interest Points
15.2.1
Harris detector
15.2.2
SIFT detector
15.2.3
SURF detector
15.3
Alignments
15.4
Lines
15.4.1
Line Detection
15.4.2
Segment Extraction
15.4.2.1
Local Hough Transform
15.5
Density Features
15.5.1
Edge Density
15.5.2
SIFT Density
15.6
Geometric Moments
15.6.1
Complex Moments
15.6.1.1
Complex Moments for Images
15.6.1.2
Complex Moments for Paths
15.6.2
Hu Moments
15.6.2.1
Hu Moments for Images
15.6.3
Flusser Moments
15.6.3.1
Flusser Moments for Images
15.7
Road extraction
15.7.1
Road extraction filter
15.7.2
Step by step road extraction
15.8
Cloud Detection
16
Multi-scale Analysis
16.1
Introduction
16.2
Morphological Pyramid
16.2.1
Morphological Pyramid Exploitation
17
Image Segmentation
17.1
Region Growing
17.1.1
Connected Threshold
17.1.2
Otsu Segmentation
17.1.3
Neighborhood Connected
17.1.4
Confidence Connected
17.2
Segmentation Based on Watersheds
17.2.1
Overview
17.2.2
Using the ITK Watershed Filter
17.3
Level Set Segmentation
17.3.1
Fast Marching Segmentation
18
Image Simulation
18.1
PROSAIL model
18.2
Image Simulation
18.2.1
LAI image estimation
18.2.2
Sensor RSR Image Simulation
19
Dimension Reduction
19.1
Principal Component Analysis
19.2
Noise-Adjusted Principal Components Analysis
19.3
Maximum Noise Fraction
19.4
Fast Independant Component Analysis
19.5
Maximum Autocorrelation Factor
20
Classification
20.1
Introduction
20.2
Unsupervised classification
20.2.1
K-Means Classification
20.2.1.1
Simple version
20.2.1.2
General approach
20.2.1.3
k-d Tree Based k-Means Clustering
20.2.2
Kohonen’s Self Organizing Map
20.2.2.1
Building a color table
20.2.2.2
SOM Classification
20.2.2.3
Multi-band, streamed classification
20.2.3
Bayesian Plug-In Classifier
20.2.4
Expectation Maximization Mixture Model Estimation
20.2.5
Statistical Segmentations
20.2.5.1
Stochastic Expectation Maximization
20.2.6
Classification using Markov Random Fields
20.2.6.1
ITK framework
20.2.6.2
OTB framework
20.3
Supervised classification
20.3.1
Generic machine learning framework
20.3.2
An example of supervised classification method: Support Vector Machines
20.3.2.1
SVM general description
20.3.2.2
SVM mathematical formulation
20.3.3
Learning from samples
20.3.4
Learning from images
20.3.5
Multi-band, streamed classification
20.3.6
Generic Kernel SVM
20.3.6.1
Learning with User Defined Kernels
20.3.6.2
Classification with user defined kernel
20.4
Fusion of Classification maps
20.4.1
General approach of image fusion
20.4.2
Majority voting
20.4.2.1
General description
20.4.2.2
An example of majority voting fusion
20.4.3
Dempster Shafer
20.4.3.1
General description
20.4.3.2
Mathematical formulation of the combination algorithm
20.4.3.3
An example of Dempster Shafer fusion
20.5
Classification map regularization
21
Object-based Image Analysis
21.1
From Images to Objects
21.2
Object Attributes
21.3
Object Filtering based on radiometric and statistics attributes
21.4
Hoover metrics to compare segmentations
22
Change Detection
22.1
Introduction
22.1.1
Surface-based approaches
22.2
Change Detection Framework
22.3
Simple Detectors
22.3.1
Mean Difference
22.3.2
Ratio Of Means
22.4
Statistical Detectors
22.4.1
Distance between local distributions
22.4.2
Local Correlation
22.5
Multi-Scale Detectors
22.5.1
Kullback-Leibler Distance between distributions
22.6
Multi-components detectors
22.6.1
Multivariate Alteration Detector
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
23.1.3.1
Family 1
23.1.3.2
Family 2
23.1.3.3
Family 3
23.1.3.4
Further remarks
23.1.3.5
Basic hyperspectral unmixing example
23.2
Dimensionality reduction
23.3
Anomaly detection
24
Image Visualization and output
24.1
Images
24.1.1
Grey Level Images
24.1.2
Multiband Images
24.1.3
Indexed Images
24.1.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
26.4.1.1
Basic neighborhood techniques: edge detection
26.4.1.2
Convolution filtering: Sobel operator
26.4.1.3
Optimizing iteration speed
26.4.1.4
Separable convolution: Gaussian filtering
26.4.1.5
Random access iteration
26.4.2
ShapedNeighborhoodIterator
26.4.2.1
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
29.3.2.1
UpdateOutputInformation()
29.3.2.2
PropagateRequestedRegion()
29.3.2.3
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
32
Adding New Modules
32.1
How to Write a Module
32.2
The otb-module.cmake file
32.3
The CMakeLists.txt file
32.4
The include folder
32.5
The src folder
32.6
The app folder
32.7
The test folder
32.8
Including a remote module in OTB
33
Contributors Guidelines
33.1
How to Contribute
33.2
What are remote modules?
33.3
How to get your remote module inside OTB?
33.4
Remote module acceptance policy
33.5
Remote module release policy
V
Appendix
34
Frequently Asked Questions
34.1
Introduction
34.1.1
What is OTB?
34.1.2
What is ORFEO?
34.1.2.1
Where can I get more information about ORFEO?
34.1.3
What is the ORFEO Accompaniment Program?
34.1.3.1
Where can I get more information about the ORFEO Accompaniment Program?
34.1.4
Who is responsible for the OTB development?
34.2
License
34.2.1
Which is the OTB license?
34.2.2
Am I forced to distribute my code based on OTB?
34.2.3
Am I forced to contribute my code based on OTB into the official repo?
34.2.4
If I wanted to distribute an application using OTB what license would I need to use?
34.2.5
I am a commercial user. Is there any restriction on the use of OTB?
34.3
Getting OTB
34.3.1
Who can download the OTB?
34.3.2
Where can I download the OTB?
34.3.3
How to get the latest bleeding-edge version?
34.4
Special issues about compiling OTB from source
34.4.0.1
Debian Linux / Ubuntu
34.4.0.2
Errors when compiling internal libkml
34.4.0.3
OTB compilation and Windows platform
34.5
Using OTB
34.5.1
Where to start ?
34.5.2
What is the image size limitation of OTB ?
34.6
Getting help
34.6.1
Is there any mailing list?
34.6.2
Which is the main source of documentation?
34.7
Contributing to OTB
34.7.1
I want to contribute to OTB, where to begin?
34.7.2
What are the benefits of contributing to OTB?
34.7.3
What functionality can I contribute?
34.8
Running the tests
34.8.1
What are the tests?
34.8.2
How to run the tests?
34.8.3
How to get the test data?
34.8.4
How to submit the results?
34.9
OTB’s Roadmap
34.9.1
Which will be the next version of OTB?
34.9.1.1
What is a major version?
34.9.1.2
What is a minor version?
34.9.1.3
What is a bugfix version?
34.9.2
When will the next version of OTB be available?
34.9.3
What features will the OTB include and when?
35
Release Notes
36
Wrappings to other languages
36.1
OTB-Wrapping: bindings to Java language
37
Contributors
[
next
] [
prev
] [
prev-tail
] [
front
] [
up
]