Commit bdb43589 authored by Manuel Grizonnet's avatar Manuel Grizonnet

DOC: first version of slides for otb python app in english (french translation still missing)

parent daac8ef9
** The Orfeo ToolBox Application mechanism :slides:
*** Data and Objectives
**** Objectives
- Know how to set the environnement to use OTB application in Python
- Know how to set application parameter in Python
- Know how to use in memory connection of applications
- Know how to use OTB/NumPy bridge.
**** Data
Data can be found in folder ~Data/otb-python/~.
*** Outline
This exercise consists in coding a Python script to perform surface water
extraction on Sentinel-2 images over the area of /Laguna la nina/ in Peru.
#+begin_center
#+ATTR_LaTeX: width=0.95\textwidth center
[[file:Images/lluvias-peru.jpg]]
#+end_center
(Twitter pic from @hombredeltiempo)
*** Quick introduction to OTB applications
- Orfeo ToolBox is a *library* offering remote sensing features
- Often several features of OTB must be combined within a processing chain
- Need for higher level interfaces (parameters, input and output data, logs ...)
- Each application corresponds to a high level function (segmentation, orthorectification, raster calculator ...)
- And corresponds to a C++ class (/otb::Application/) $\rightarrow$ library
- Plugin mechanism
- One can develop and distribute his/her own homemade applications
*** OTB applications in Python
- Library called *otbApplication*
- 2 main classes can be manipulated:
- Registry: list available applications (or create some)
- Application: base class for all applications (interact with an
application
- Example:
#+begin_src python
import otbApplication
orth=otb.Registry.CreateApplication("OrthoRectification")
#+end_src
*** Syntax
- Getters
#+begin_src python
app.GetParametersKeys()
#+end_src
- Setters
#+begin_src python
app.SetParameterString("in", argv[1])
#+end_src
- How to launch an application
- Execute() -> wire the pipeline
- ExecuteAndWriteOutput() -> wire the pipeline and write output
*** Syntactic sugar
- Instead of:
#+begin_src python
ExtractROI.SetParameterInt('startx', 140)
#+end_src
- Use:
#+begin_src python
ExtractROI.STARTX=140
#+end_src
- Upper case is mandatory for now
*** In-memory connection
- Applications are often use as parts of larger workflow
- Heavy I/O operations generally in remote sensing image processing
- Connect output parameter from app1 to the input parameter of app2
- Available both in C++ API and Python
- Related to ITK/OTB streaming mechanisms
*** NumPy bridge
- Plug OTB into any image processing chain in Python
- Use etImageFromNumpyArray() and SetImageFromNumpyArray() methods
*** Useful links
- [[https://www.orfeo-toolbox.org/CookBook/OTB-Applications.html][Introduction to OTB applications]]
- [[https://www.orfeo-toolbox.org/CookBook/Applications.html][Application Reference Documentation]]
- Application help: /otbcli\textunderscore{}XXX -help/
** Utiliser les applications OTB en Python :slides:
** Utiliser les applications OTB en Python (TODO) :slides:
*** Objectifs et données
**** Objectifs
- Savoir configurer l'environnement pour utiliser les applications en Python
......@@ -15,55 +15,18 @@
des surfaces en eaux dans une série d'images Sentinel-2 sur le zone de
/Laguna la nina/ au Pérou.
#+begin_center
#+ATTR_LaTeX: width=0.95\textwidth center
[[file:Images/lluvias-peru.jpg]]
#+end_center
(photo Twitter de @hombredeltiempo)
*** Rapide intro aux OTB-Applications
- Orfeo ToolBox est une *bibliothèque* offrant des fonctionnalités de télédétection
- Souvent nécessaire de combiner plusieurs fonctions (filtres) OTB dans une
chaîne de traitements
- Besoin d'interface de plus haut niveau (paramètres, les données d'entrée et
de sortie, les logs...)
- Chaque application correspond à une fonctionnalité de "haut niveau"
(segmentation, orthorectification, segmentation, calculatrice sur les bandes...)
- Correspond à une classe C++ (/otb::Application/) $\rightarrow$ librairie
- Mécanisme de plugin
- Possibilité de développer et distribuer ces applications /maison/
*** Rapide intro aux OTB-Applications
- En ligne de commande $\rightarrow$ otbcli\textunderscore{}Orthorectification
- Dans une interface graphique $\rightarrow$ otbgui\textunderscore{}Orthorectification
- En Python:
*** OTB-Applications en Python
#+begin_src python
import otbApplication
orth=otb.Registry.CreateApplication("OrthoRectification")
#+end_src
- Intégrées dans QGIS $\rightarrow$ Menu /processing/
- Intégrées dans Monteverdi
*** GUI
#+begin_center
#+ATTR_LaTeX: width=0.95\textwidth center
[[file:../../../Slides/OTB-General/images/app_parameters.png]]
#+end_center
*** Paramétrage
- Afficher l'aide de l'application d'OrthoRectification (bon exemple)
- Notion de /groupe de paramètres/
- Notion de /paramètre obligatoire/
- Dépendance entre paramètres (dynamique)
- Valeur par défaut
- Type des images en sortie (par défaut flottant)
*** Autre Exemple: BandMath
- Calculatrice raster
- Utilise la librairie MuParser
- Prend en entrée une liste d'images (paramètre /-il/)
- Codage des expressions mathématiques:
- imXbY:
- X: numéro de l'image dans la liste (de 1 à N)
- Y: numéro de la bande dans l'image X (de 1 à N)
- [[http://muparser.beltoforion.de/mup_features.html][Liste des opérateurs mathématiques disponibles]]
- Exemples:
- -exp "(im1b4 - im1b1) / (im1b4 - im1b1))"
- -exp "acos((123*im1b1+265*im1b2+652*im1b3) \\
/ (sqrt(123*123+265*265+652*652)\\
*sqrt(im1b1*im1b1+im1b2*im1b2+im1b3*im1b3)))"
- -exp "im1b1>0.5?255:0"
*** Liens utiles
- [[https://www.orfeo-toolbox.org/CookBook/CookBookse1.html#x7-60001.1][Introduction aux OTB applications]]
- [[https://www.orfeo-toolbox.org//Applications/][Documentation de référence des applications]]
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment