[
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
GNU/Linux and macOS
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
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.1.1
Linux and Mac OS X
4.1.2
Windows
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
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 Auxiliary Data
7.1
Reading DEM Files
7.2
Elevation management with OTB
7.3
Reading and Writing Shapefiles and KML
7.4
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.2.1
BandMath filter
8.2.2
BandMathX filter
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
8.4.1.1
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
8.6.3.1
Binary Filters
8.6.3.2
Grayscale Filters
8.7
Smoothing Filters
8.7.1
Blurring
8.7.1.1
Discrete Gaussian
8.7.2
Edge Preserving Smoothing
8.7.2.1
Introduction to Anisotropic Diffusion
8.7.2.2
Gradient Anisotropic Diffusion
8.7.2.3
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
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
9.7.1.1
Exploring a Metric
9.7.2
Normalized Correlation Metric
9.7.3
Mean Reciprocal Square Differences
9.7.4
Mutual Information Metric
9.7.4.1
Parzen Windowing
9.7.4.2
Viola and Wells Implementation
9.7.4.3
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
14.4.2.1
Local Hough Transform
14.5
Density Features
14.5.1
Edge Density
14.5.2
SIFT Density
14.6
Geometric Moments
14.6.1
Complex Moments
14.6.1.1
Complex Moments for Images
14.6.1.2
Complex Moments for Paths
14.6.2
Hu Moments
14.6.2.1
Hu Moments for Images
14.6.3
Flusser Moments
14.6.3.1
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 Independent Component Analysis
18.5
Maximum Autocorrelation Factor
19
Classification
19.1
Introduction
19.2
Machine Learning Framework
19.2.1
Machine learning models
19.2.2
Training a model
19.2.3
Prediction of a model
19.2.4
Integration in applications
19.3
Supervised classification
19.3.1
Support Vector Machines
19.3.1.1
SVM general description
19.3.1.2
SVM mathematical formulation
19.3.2
Shark Random Forests
19.3.3
Generic Kernel SVM (deprecated)
19.3.3.1
Learning with User Defined Kernels
19.3.3.2
Classification with user defined kernel
19.4
Unsupervised classification
19.4.1
K-Means Classification
19.4.1.1
Shark version
19.4.1.2
Simple version
19.4.1.3
General approach
19.4.1.4
k-d Tree Based k-Means Clustering
19.4.2
Kohonen’s Self Organizing Map
19.4.2.1
Building a color table
19.4.2.2
SOM Classification
19.4.2.3
Multi-band, streamed classification
19.4.3
Bayesian Plug-In Classifier
19.4.4
Expectation Maximization Mixture Model Estimation
19.4.5
Statistical Segmentations
19.4.5.1
Stochastic Expectation Maximization
19.4.6
Classification using Markov Random Fields
19.4.6.1
ITK framework
19.4.6.2
OTB framework
19.5
Fusion of Classification maps
19.5.1
General approach of image fusion
19.5.2
Majority voting
19.5.2.1
General description
19.5.2.2
An example of majority voting fusion
19.5.3
Dempster Shafer
19.5.3.1
General description
19.5.3.2
Mathematical formulation of the combination algorithm
19.5.3.3
An example of Dempster Shafer fusion
19.6
Classification map regularization
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
Hyperspectral
22.1
Unmixing
22.1.1
Linear mixing model
22.1.2
Simplex
22.1.3
State of the art unmixing algorithms selection
22.1.3.1
Family 1
22.1.3.2
Family 2
22.1.3.3
Family 3
22.1.3.4
Further remarks
22.1.3.5
Basic hyperspectral unmixing example
22.2
Dimensionality reduction
22.3
Anomaly detection
23
Image Visualization and output
23.1
Images
23.1.1
Grey Level Images
23.1.2
Multiband Images
23.1.3
Indexed Images
23.1.4
Altitude Images
24
Online data
24.1
Name to Coordinates
24.2
Open Street Map
IV
Developer’s guide
25
Iterators
25.1
Introduction
25.2
Programming Interface
25.2.1
Creating Iterators
25.2.2
Moving Iterators
25.2.3
Accessing Data
25.2.4
Iteration Loops
25.3
Image Iterators
25.3.1
ImageRegionIterator
25.3.2
ImageRegionIteratorWithIndex
25.3.3
ImageLinearIteratorWithIndex
25.4
Neighborhood Iterators
25.4.1
NeighborhoodIterator
25.4.1.1
Basic neighborhood techniques: edge detection
25.4.1.2
Convolution filtering: Sobel operator
25.4.1.3
Optimizing iteration speed
25.4.1.4
Separable convolution: Gaussian filtering
25.4.1.5
Random access iteration
25.4.2
ShapedNeighborhoodIterator
25.4.2.1
Shaped neighborhoods: morphological operations
26
Image Adaptors
26.1
Image Casting
26.2
Adapting RGB Images
26.3
Adapting Vector Images
26.4
Adaptors for Simple Computation
26.5
Adaptors and Writers
27
Streaming and Threading
27.1
Introduction
27.2
Streaming and threading in OTB
27.3
Division strategies
28
How To Write A Filter
28.1
Terminology
28.2
Overview of Filter Creation
28.3
Streaming Large Data
28.3.1
Overview of Pipeline Execution
28.3.2
Details of Pipeline Execution
28.3.2.1
UpdateOutputInformation()
28.3.2.2
PropagateRequestedRegion()
28.3.2.3
UpdateOutputData()
28.4
Threaded Filter Execution
28.5
Filter Conventions
28.5.1
Optional
28.5.2
Useful Macros
28.6
How To Write A Composite Filter
28.6.1
Implementing a Composite Filter
28.6.2
A Simple Example
29
Persistent filters
29.1
Introduction
29.2
Architecture
29.2.1
The persistent filter class
29.2.2
The streaming decorator class
29.3
An end-to-end example
29.3.1
First step: writing a persistent filter
29.3.2
Second step: Decorating the filter and using it
29.3.3
Third step: one class to rule them all
30
How to write an application
30.1
Application design
30.2
Architecture of the class
30.2.1
DoInit()
30.2.2
DoUpdateParameters()
30.2.3
DoExecute()
30.2.4
Parameters selection
30.2.5
Parameters description
30.3
Composite application
30.3.1
Creating internal applications
30.3.2
Connecting parameters
30.3.3
Orchestration
30.4
Compile your application
30.5
Execute your application
30.6
Testing your application
30.7
Application Example
31
Adding New Modules
31.1
How to Write a Module
31.2
The otb-module.cmake file
31.3
The CMakeLists.txt file
31.4
The include folder
31.5
The src folder
31.6
The app folder
31.7
The test folder
31.8
Including a remote module in OTB
32
Contributors Guidelines
V
Appendix
33
Wrappings to other languages
33.1
OTB-Wrapping: bindings to Java language
34
Contributors
[
next
] [
prev
] [
prev-tail
] [
front
] [
up
]