Commit 2849fdbf authored by Yannick TANGUY's avatar Yannick TANGUY

Lighter version of OTB General slides

parent 370b0b95
# Notice
This directory contains the general presentation of OTB (both in French and English). Sources are splited in several latex files which corresponds to different
# Sections available (replace xx by en or fr)
- introduction-xx.tex
- functions-xx.tex
- key-characteristics-xx.tex
- howto_use-xx.tex
- whatsnew-xx.tex (contains main new features per release)
- conclusion-xx.tex
\ProvidesPackageRCS $Header: /cvsroot/latex-beamer/latex-beamer/themes/outer/beamerouterthemeperso.sty,v 1.4 2006/10/01 22:21:16 christophe Exp $
% Copyright 2003 by Till Tantau <tantau@users.sourceforge.net>
%
% This program can be redistributed and/or modified under the terms
% of the GNU Public License, version 2.
\mode<presentation>
\setbeamercolor{section in head/foot}{parent=palette quaternary}
\setbeamercolor{subsection in head/foot}{parent=palette primary}
\setbeamercolor{author in head/foot}{parent=section in head/foot}
\setbeamercolor{title in head/foot}{parent=subsection in head/foot}
\usesectionheadtemplate
{\hfill\insertsectionhead}
{\hfill\color{fg!50!bg}\insertsectionhead}
% Head
\ifbeamer@compress
\defbeamertemplate*{headline}{split theme}
{%
\leavevmode%
\begin{beamercolorbox}[wd=.5\paperwidth,ht=2.5ex,dp=1.125ex]{section in head/foot}%
\insertsectionnavigationhorizontal{.5\paperwidth}{\hskip0pt plus1filll}{}%
\end{beamercolorbox}%
\begin{beamercolorbox}[wd=.5\paperwidth,ht=2.5ex,dp=1.125ex]{subsection in head/foot}%
\insertsubsectionnavigationhorizontal{.5\paperwidth}{}{\hskip0pt plus1filll}%
\end{beamercolorbox}%
}
\else
\defbeamertemplate*{headline}{split theme}
{%
\leavevmode%
\@tempdimb=2.4375ex%
\ifnum\beamer@subsectionmax<\beamer@sectionmax%
\multiply\@tempdimb by\beamer@sectionmax%
\else%
\multiply\@tempdimb by\beamer@subsectionmax%
\fi%
\ifdim\@tempdimb>0pt%
\advance\@tempdimb by 1.125ex%
\begin{beamercolorbox}[wd=.5\paperwidth,ht=\@tempdimb]{section in head/foot}%
\vbox to\@tempdimb{\vfil\insertsectionnavigation{.5\paperwidth}\vfil}%
\end{beamercolorbox}%
\begin{beamercolorbox}[wd=.5\paperwidth,ht=\@tempdimb]{subsection in head/foot}%
\vbox to\@tempdimb{\vfil\insertsubsectionnavigation{.5\paperwidth}\vfil}%
\end{beamercolorbox}%
\fi%
}
\fi
\mode
<all>
\ProvidesPackageRCS $Header: /cvsroot/latex-beamer/latex-beamer/themes/theme/compatibility/beamerthemetree.sty,v 1.8 2004/10/07 20:53:10 tantau Exp $
% Copyright 2003 by Till Tantau <tantau@users.sourceforge.net>
%
% This program can be redistributed and/or modified under the terms
% of the GNU Public License, version 2.
\mode<presentation>
\def\beamer@theme@col{\setbeamercolor{}{use=structure,bg=structure.fg!50!bg}}
\DeclareOptionBeamer{bars}{\def\beamer@theme@col{\usecolortheme{whale}}}
\ProcessOptionsBeamer
\usefonttheme[onlysmall]{structurebold}
\beamer@theme@col
\useoutertheme{splitup}
\mode
<all>
\NeedsTeXFormat{LaTeX2e}%
\ProvidesPackage{chronology}[2010/6/12 v1.0 Horizontal timeline]%
\RequirePackage{calc}%
\RequirePackage{tikz}%
\RequirePackage{ifthen}%
\newcounter{step}\newcounter{stepstart}\newcounter{stepstop}%
\newcounter{yearstart}\newcounter{yearstop}\newcounter{deltayears}%
\newlength{\xstart}\newlength{\xstop}%
\newlength{\unit}\newlength{\timelinewidth}%
\newsavebox{\timelinebox}%
\makeatletter%
\newif\ifchronology@star%
\newenvironment{chronology}{%
\@ifstar{\chronology@startrue\chronology@i*}{\chronology@starfalse\chronology@i*}%
}{%
\end{tikzpicture}%
\end{lrbox}%
\raisebox{2ex}{\resizebox{\timelinewidth}{!}{\usebox{\timelinebox}}}%
}%
\def\chronology@i*{%
\@ifnextchar[{\chronology@ii*}{\chronology@ii*[{5}]}%
}%
\def\chronology@ii*[#1]#2#3#4{%
\@ifnextchar[{\chronology@iii*[{#1}]{#2}{#3}{#4}}{\chronology@iii*[{#1}]{#2}{#3}{#4}[{#4}]}%
}%
\def\chronology@iii*[#1]#2#3#4[#5]{%
\newif\ifflipped%
\ifchronology@star%
\flippedtrue%
\else%
\flippedfalse%
\fi%
\setcounter{step}{#1}%
\setcounter{yearstart}{#2}\setcounter{yearstop}{#3}%
\setcounter{deltayears}{\theyearstop-\theyearstart}%
\setlength{\unit}{#5/\thedeltayears}%
\setlength{\timelinewidth}{#4}%
\pgfmathsetcounter{stepstart}{\theyearstart+\thestep-mod(\theyearstart,\thestep)}%
\pgfmathsetcounter{stepstop}{\theyearstop-mod(\theyearstop,\thestep)}%
\addtocounter{step}{\thestepstart}%
\begin{lrbox}{\timelinebox}%
\begin{tikzpicture}[baseline={(current bounding box.north)}]%
\draw [|->] (0,0) -- (\thedeltayears*\unit+\unit, 0);%
\foreach \x in {1,...,\thedeltayears}%
\draw[xshift=\x*\unit] (0,-.1\unit) -- (0,.1\unit);%
\addtocounter{deltayears}{1}%
\foreach \x in {\thestepstart,\thestep,...,\thestepstop}{%
\pgfmathsetlength\xstop{(\x-\theyearstart)*\unit}%
\draw[xshift=\xstop] (0,-.1\unit) -- (0,.1\unit);%
\ifflipped%
\node at (\xstop,0) [above=.2\unit] {\x};%
\else%
\node at (\xstop,0) [below=.2\unit] {\x};%
\fi%
}%
}%
\makeatother%
\newcommand{\event}[3][e]{%
\pgfmathsetlength\xstop{(#2-\theyearstart)*\unit}%
\ifx #1e%
\ifflipped%
\draw[fill=blue,draw=none,opacity=0.5]%
(\xstop, 0) circle (.05\unit)%
node[opacity=1,rotate=-45,right=.1\unit] {#3};%
\else%
\draw[fill=blue,draw=none,opacity=0.5]%
(\xstop, 0) circle (.05\unit)%
node[opacity=1,rotate=45,right=.1\unit] {#3};%
\fi%
\else%
\pgfmathsetlength\xstart{(#1-\theyearstart)*\unit}%
\ifflipped%
\draw[fill=black,draw=none,opacity=0.5,rounded corners=.2\unit]%
(\xstart,-.2\unit) rectangle%
node[opacity=1,rotate=-45,right=.5\unit] {#3} (\xstop,.2\unit);%
\else%
\draw[fill=black,draw=none,opacity=0.5,rounded corners=.2\unit]%
(\xstart,-.2\unit) rectangle%
node[opacity=1,rotate=45,right=.5\unit] {#3} (\xstop,.2\unit);%
\fi%
\fi}%
\newcommand{\decimaldate}[3]{(#1-1)/31/12+(#2-1)/12+#3}%
\endinput%
#!/bin/bash
pdflatex -interaction nonstopmode otb-light-presentation-en.tex
pdflatex -interaction nonstopmode otb-light-presentation-en.tex
\section{How to use OTB?}
\begin{frame}
\frametitle{Where to start ?}
\begin{columns}
\column{0.4\textwidth}
\begin{itemize}
\item \href{https://www.orfeo-toolbox.org}{orfeo-toolbox.org}
\item OTB CookBook : \href{https://www.orfeo-toolbox.org/CookBook/Recipes.html}{list of recipes}
\item GitLab : \href{https://gitlab.orfeo-toolbox.org}{developer's corner}
\item Many more resources : user forum, software guide, APIs documentation, tutorials, training resources, etc.
\end{itemize}
\column{0.6\textwidth}
\includegraphics[width=\textwidth]{images/OTB-useful_websites.jpg}
\end{columns}
\end{frame}
\begin{frame}
\frametitle{The applications: write it once, use everywhere}
\begin{columns}
\column{0.5\textwidth}
\begin{itemize}
\item 87 applications are shipped with OTB
\item 1 application $=$ 1 dynamic library (plugin)
\item Applications are auto-descriptive and auto-documented
\item Applications can be extended outside of OTB
\item Several plugins players:
\begin{itemize}
\item Command-line
\item Qt auto-generated
\item Python
\end{itemize}
\item Applications are meant for integration in external systems
\end{itemize}
\column{0.5\textwidth}
\includegraphics[width=\textwidth]{../OTB-General/images/cloud_applications.png}
\end{columns}
\end{frame}
\begin{frame}
\frametitle{How to use OTB?}
\vspace{-0.5cm}
\begin{center}
\includegraphics[width=\textwidth]{../OTB-General/images/sandwich.pdf}
\end{center}
\vspace{-0.5cm}
\begin{block}{Use Monteverdi (or QGIS !)}
Visualization, data management, \textcolor{red}{Access to all applications}
\end{block}
\begin{block}{Use the applications}
High level functions (e.g. segmentation), callable from CLI, Qt, Python, can be extended
\end{block}
\begin{block}{Write your own code}
Flexible, access to full API, requires C++ knowledge
\end{block}
\end{frame}
\begin{frame}[fragile]
\frametitle{Show me the code!}
\begin{lstlisting}[language=c++,breaklines=true,breakatwhitespace=true,frame = tb,framerule = 0.25pt,fontadjust,backgroundcolor={\color{listlightgray}},basicstyle = {\ttfamily\tiny},keywordstyle = {\ttfamily\color{red}\textbf},identifierstyle = {\ttfamily},commentstyle = {\ttfamily\color{listcomment}\textit},stringstyle = {\ttfamily},showstringspaces = false,showtabs = false,numbers = none,numbersep = 2pt, numberstyle={\ttfamily\color{listnumbers}},tabsize = 2]
#include "otbImage.h"
#include "otbImageFileReader.h"
#include "otbImageFileWriter.h"
#include "itkCannyEdgeDetectionImageFilter.h"
#include "itkRescaleIntensityImageFilter.h"
int main(int argc, char * argv[])
{
typedef double PixelType;
typedef otb::Image<PixelType> ImageType;
typedef unsigned char OutputPixelType;
typedef otb::Image<OutputPixelType> OutputImageType;
typedef otb::ImageFileReader<ImageType> ReaderType;
ReaderType::Pointer reader = ReaderType::New();
reader->SetFileName(argv[1]);
typedef itk::CannyEdgeDetectionImageFilter
<ImageType, ImageType> FilterType;
FilterType::Pointer filter = FilterType::New();
filter->SetInput(reader->GetOutput());
typedef otb::ImageFileWriter<OutputImageType> WriterType;
WriterType::Pointer writer = WriterType::New();
writer->SetFileName(argv[2]);
writer->SetInput(filter->GetOutput());
writer->Update();
}
\end{lstlisting}
\end{frame}
\begin{frame}[fragile]
\frametitle{Applications: command-line invocation}
\begin{scriptsize}
\vspace{-0.5cm}\begin{verbatim}
$ otbcli_OrthoRectification
ERROR: Waiting for at least one parameter...
This is the OrthoRectification application, version 5.2.1
This application allows to ortho-rectify optical images from supported sensors.
Complete documentation: http://www.orfeo-toolbox.org/Applications/OrthoRectification.html
Parameters:
-progress <boolean> Report progress
MISSING -io.in <string> Input Image (mandatory)
MISSING -io.out <string> [pixel] Output Image [pixel=uint8/uint16/int16/uint32/int32/float/double] (default value is float) (mandatory)
-map <string> Output Cartographic Map Projection [utm/lambert2/lambert93/wgs/epsg] (mandatory, default value is utm)
-map.utm.zone <int32> Zone number (mandatory, default value is 31)
-map.utm.northhem <boolean> Northern Hemisphere (optional, off by default)
-map.epsg.code <int32> EPSG Code (mandatory, default value is 4326)
-outputs.mode <string> Parameters estimation modes [auto/autosize/autospacing/outputroi/orthofit] (mandatory, default value is auto)
MISSING -outputs.ulx <float> Upper Left X (mandatory)
MISSING -outputs.uly <float> Upper Left Y (mandatory)
MISSING -outputs.sizex <int32> Size X (mandatory)
MISSING -outputs.sizey <int32> Size Y (mandatory)
MISSING -outputs.spacingx <float> Pixel Size X (mandatory)
MISSING -outputs.spacingy <float> Pixel Size Y (mandatory)
-outputs.lrx <float> Lower right X (optional, off by default)
-outputs.lry <float> Lower right Y (optional, off by default)
-outputs.ortho <string> Model ortho-image (optional, off by default)
-outputs.isotropic <boolean> Force isotropic spacing by default (optional, on by default)
-outputs.default <float> Default pixel value (optional, on by default, default value is 0)
-elev.dem <string> DEM directory (optional, off by default)
-elev.geoid <string> Geoid File (optional, off by default)
-elev.default <float> Default elevation (mandatory, default value is 0)
-interpolator <string> Interpolation [bco/nn/linear] (mandatory, default value is bco)
\end{verbatim}
\end{scriptsize}
\end{frame}
\begin{frame}[fragile]
\frametitle{Applications: Graphical interface}
\begin{center}
\includegraphics[width=1\textwidth]{../OTB-General/images/otbgui.png}
\end{center}
\end{frame}
\begin{frame}[fragile]
\frametitle{Applications: Python interface}
\begin{lstlisting}[language=python,breaklines=true,breakatwhitespace=true,frame = tb,framerule = 0.25pt,fontadjust,backgroundcolor={\color{listlightgray}},basicstyle = {\ttfamily\tiny},keywordstyle = {\ttfamily\color{listkeyword}\textbf},identifierstyle = {\ttfamily},commentstyle = {\ttfamily\color{listcomment}\textit},stringstyle = {\ttfamily},showstringspaces = false,showtabs = false,numbers = none,numbersep = 6pt, numberstyle={\ttfamily\color{listnumbers}},tabsize = 2]
#!/usr/bin/python
# Import the otb applications package
import otbApplication
# The following line creates an instance of the OrthoRectification application
OrthoRectification = otb.Registry.CreateApplication("OrthoRectification")
# The following lines set all the application parameters:
OrthoRectification.IO.IN = "QB_TOULOUSE_MUL_Extract_500_500.tif"
OrthoRectification.IO.OUT = "QB_Toulouse_ortho.tif"
app.MAP = 'epsg'
app.MAP.EPSG.CODE = 32768
# The following line execute the application
OrthoRectification.ExecuteAndWriteOutput()
\end{lstlisting}
\end{frame}
\begin{frame}
\frametitle{Monteverdi (acces to OTB applications)}
\begin{minipage}[t][6cm][t]{\textwidth}
\begin{center}
\includegraphics[width=1.0\textwidth]{../OTB-General/images/monteverdi.png}
\end{center}
\end{minipage}
\end{frame}
%\vspace*{-3.0mm}
\begin{frame}
\frametitle{QGIS}
\begin{minipage}[t][6cm][t]{\textwidth}
\begin{center}
\includegraphics[width=1\textwidth]{../OTB-General/images/otb_in_qgis.png}
\end{center}
\end{minipage}
\end{frame}
\vspace*{-6.5mm}
\begin{frame}[plain]
\hspace*{-11mm}
\includegraphics[keepaspectratio,height=1.1\paperheight]{../OTB-General/images/mayotte2012.png}
\end{frame}
\vspace*{-6.5mm}
\begin{frame}[plain]
\hspace*{-11mm}
\includegraphics[keepaspectratio,height=1.1\paperheight]{../OTB-General/images/mayotte2013.png}
\end{frame}
\vspace*{-6.5mm}
\begin{frame}[plain]
\hspace*{-11mm}
\includegraphics[keepaspectratio,height=1.1\paperheight]{../OTB-General/images/mayotte_mad.png}
\end{frame}
\vspace*{-6.5mm}
\begin{frame}[plain]
\hspace*{-11mm}
\includegraphics[keepaspectratio,height=1.1\paperheight]{../OTB-General/images/saint_paul_lsd.png}
\end{frame}
\vspace*{-6.5mm}
\begin{frame}[plain]
\hspace*{-11mm}
\includegraphics[keepaspectratio,width=1.005\paperwidth,height=1.1\paperheight]{../OTB-General/images/argentiere_left.png}
\end{frame}
\vspace*{-6.5mm}
\begin{frame}[plain]
\hspace*{-11mm}
\includegraphics[keepaspectratio,width=1.005\paperwidth,height=1.1\paperheight]{../OTB-General/images/argentiere_right.png}
\end{frame}
\vspace*{-6.5mm}
\begin{frame}[plain]
\hspace*{-11mm}
\includegraphics[keepaspectratio,width=1.005\paperwidth,height=1.1\paperheight]{../OTB-General/images/argentiere_anaglyphe.png}
\end{frame}
\vspace*{-6.5mm}
\begin{frame}[plain]
\hspace*{-11mm}
\includegraphics[keepaspectratio,height=1.1\paperheight]{../OTB-General/images/segmentation.png}
\end{frame}
\vspace*{-6.5mm}
\begin{frame}[plain]
\hspace*{-11mm}
\includegraphics[keepaspectratio,height=1.1\paperheight]{../OTB-General/Images/samples_selection.png}
\end{frame}
\vspace*{-6.5mm}
\begin{frame}[plain]
\hspace*{-11mm}
\includegraphics[keepaspectratio,height=1.1\paperheight]{../OTB-General/Images/final_classification.png}
\end{frame}
\vspace*{-6.5mm}
\begin{frame}[plain]
\hspace*{-11mm}
\includegraphics[keepaspectratio,height=1.1\paperheight]{../OTB-General/images/imag4tci.jpg}
\end{frame}
\vspace*{-6.5mm}
\begin{frame}[plain]
\hspace*{-11mm}
\includegraphics[keepaspectratio,height=1.1\paperheight]{../OTB-General/images/image4_glob_each_lim20_8b_sub.jpg}
\end{frame}
\section*{Introduction}
\begin{frame}
\frametitle{Things to know about OTB\ldots}
\begin{block}{Orfeo ToolBox is:}
\begin{itemize}
\item An \textbf{image processing library} for remote sensing
\item \textbf{Free and open source software} under Apache v2.0 license :
\begin{itemize}
\item maximum reach,
\item quality and efficiency,
\item reproductible search
\end{itemize}
\item \textbf{Funded and developed by CNES} (French Space Agency) in the frame
the development of the Pléiades satellite (and beyond)
\item A project of OSGeo since 2017
\item Used at CNES, ESA (European Space Agency), mission exploitation platforms,
remote sensing labs, teaching\ldots
\item Written in \textbf{C++} on top of \href{www.itk.org}{ITK} (medical image
processing)
\item Built on the shoulders of giants (GDAL, OSSIM, OpenCV\ldots)
\item \textbf{Big Data} capable, thanks to built-in streaming and multithreading
\end{itemize}
\end{block}
\begin{center}
{\huge\textcolor{red}{\href{http://www.orfeo-toolbox.org}{orfeo-toolbox.org}}}
\end{center}
\end{frame}
% Note : this is a lighter version of OTB general presentation
% It's a short introduction (20mn) to OTB, typically for a short workshop/training session (1/2 day)
%
%----------------------------------------------------------------------------------------
% PACKAGES & THEMES
%----------------------------------------------------------------------------------------
\documentclass[8pt]{beamer}
\usepackage{etex}
\mode<presentation> {
\usetheme{Vilanova}
}
\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage{array}
\usepackage{graphicx}
\usepackage{booktabs}
\usepackage{amsmath,amssymb,amsthm}
\usepackage{xcolor}
\usepackage{tikz}
\usetikzlibrary{arrows}
\usepackage{pifont}
\usepackage{listings,color}
\definecolor{listcomment}{rgb}{0.0,0.5,0.0}
\definecolor{listkeyword}{rgb}{0.0,0.0,0.5}
\definecolor{listnumbers}{gray}{0.65}
\definecolor{listlightgray}{gray}{0.955}
\definecolor{listwhite}{gray}{1.0}
\AtBeginSection[]
{
\addtocounter{framenumber}{-1}
\begin{frame}
\frametitle{Outline}
\tableofcontents[currentsection]
\end{frame}}
%----------------------------------------------------------------------------------------
% TITLE PAGE
%----------------------------------------------------------------------------------------
\title{Orfeo ToolBox}
\subtitle{Open source processing of remote sensing images (updated for 6.6.1)}
\author{OTB Team}
\date{}
\pgfdeclareimage[height=96mm,width=128mm]{background}{../OTB-General/images/fondsClairSansLogo}
\pgfdeclareimage[height=0.2cm]{cc}{../OTB-General/images/CC-licence.png}
\setbeamertemplate{background}{\pgfuseimage{background}}
\pgfdeclareimage[height=0.6cm]{logoIncrust}{../OTB-General/images/logoIncrust}
\pgfdeclareimage[height=0.6cm]{OSGeo_logo}{../OTB-General/images/OSGeo_logo}
\logo{
\begin{tabular}{p{0.22\textwidth}p{0.58\textwidth}p{0.1\textwidth}p{0.1\textwidth}}
\href{http://www.osgeo.org}{\pgfuseimage{OSGeo_logo}}
& \vspace{-0.03\textwidth} \scriptsize{} % date and event here
& \href{http://creativecommons.org/licenses/by-sa/3.0/}{\pgfuseimage{cc}} & \href{http://www.orfeo-toolbox.org}{\pgfuseimage{logoIncrust}}\\
\end{tabular}
}
\titlegraphic{\vspace*{-5em}\includegraphics[width=.5\textwidth]{../OTB-General/images/LOGOTB_blackbox.png}}
\begin{document}
\begin{frame}
\titlepage
\end{frame}
\mode<all>
\input{introduction-en.tex}
\mode<all>
\input{images.tex}
\mode<all>
\input{howto_use-en.tex}
\mode<all>
\input{user_community-en.tex}
\end{document}
\begin{frame}
\frametitle{5.0 (May 2015)}
\begin{block}{Make OTB more modular}
\begin{itemize}
\item Better code layout, coherent modules (124 modules and 16 groups) with
source, test and applications.
\item Dependency management
\item External contributions: \url{https://www.orfeo-toolbox.org/external-projects/}
\end{itemize}
\end{block}
\begin{block}{SuperBuild}
\begin{itemize}
\item No more third party software in OTB!
\item The Superbuild downloads, configures, builds and installs dependencies
\item Offline mode for compiling OTB without network access (e.g. airplane)
\end{itemize}
\end{block}
\end{frame}
\begin{frame}
\frametitle{Open governance: Project Steering Committee}
\begin{block}{PSC beginning}
\begin{itemize}
\item Until 2015: OTB is open-source software
\item In march 2015: OTB become free software, with CNES as the first PSC
\end{itemize}
\end{block}
\begin{block}{A club of developers, not managers}
\begin{itemize}
\item High level project steering, roadmaps, communication and planning
\item Vote RFCs: all members' votes have the same value ($\pm 1$, $\pm 0$)
\item Seats do not expire. Exits are by resignation or vote of expulsion
\item The PSC is not a legal entity and has no funding
\end{itemize}
\end{block}
\begin{block}{Numbers}
\begin{itemize}
\item 5 members from 4 different organizations
\item 2 releases under a PSC (5.2, 5.4)
\item 3 online meetings (with public logs)
\end{itemize}