diff --git a/Courses/2016/bordeaux.inra.fr/WorkshopGuide/internals.org b/Courses/2016/bordeaux.inra.fr/WorkshopGuide/internals.org
index 7f483738ab9549ada133d0c185712ce22e966f8b..174d310f08dd3d8d56cb394aba8ef6e2a9b470c5 100644
--- a/Courses/2016/bordeaux.inra.fr/WorkshopGuide/internals.org
+++ b/Courses/2016/bordeaux.inra.fr/WorkshopGuide/internals.org
@@ -1,5 +1,9 @@
 ** Les mécanismes internes de l'Orfeo ToolBox                        :slides:
-*** Slide
+*** Encodage des images
+*** Fichiers geom
+*** Noms de fichiers étendus
+*** Streaming
+*** Multi-threading
 ** Les mécanismes internes de l'*Orfeo ToolBox*                     :guide:
 *** Description                                                        :desc:
 **** Résumé
@@ -139,7 +143,7 @@
      comportement en utilisant les noms de fichiers étendus à
      l'écriture.
 
-     utilisez l'application *LocalStatistics* pour filtrer la première
+     utilisez l'application *LocalStatisticsExtraction* pour filtrer la première
      bande de l'image /image1.tif/ avec un rayon de 9.
 
      Exécutez une seconde fois cette opération, cette fois en
@@ -164,7 +168,7 @@
      =ITK_GLOBAL_DEFAULT_NUMBER_OF_THREADS=.
 
      Reprenez l'exemple de l'exercice précédent utilisant
-     l'application *LocalStatistics* en désactivant le
+     l'application *LocalStatisticsExtraction* en désactivant le
      streaming. Utilisez la variable d'environnement ITK pour diminuer
      puis augmenter le nombre de threads utilisés. Que constatez vous ?
 
@@ -173,3 +177,205 @@
 
 ** Les mécanismes internes de l'*Orfeo ToolBox*                   :solutions:
 
+*** Encodage des images
+
+    L'utilisation de *gdalinfo* pour l'image /image1.tif/ nous donne:
+
+    #+BEGIN_EXAMPLE
+    $ $ gdalinfo image1.tif 
+    Driver: GTiff/GeoTIFF
+    Files: image1.tif
+    Size is 2000, 2000
+    Coordinate System is `'
+    Origin = (5400.000000000000000,4300.000000000000000)
+    Pixel Size = (1.000000000000000,1.000000000000000)
+    Image Structure Metadata:
+    INTERLEAVE=PIXEL
+    Corner Coordinates:
+    Upper Left  (    5400.000,    4300.000) 
+    Lower Left  (    5400.000,    6300.000) 
+    Upper Right (    7400.000,    4300.000) 
+    Lower Right (    7400.000,    6300.000) 
+    Center      (    6400.000,    5300.000) 
+    Band 1 Block=2000x1 Type=Float32, ColorInterp=Gray
+    Band 2 Block=2000x1 Type=Float32, ColorInterp=Undefined
+    Band 3 Block=2000x1 Type=Float32, ColorInterp=Undefined
+    Band 4 Block=2000x1 Type=Float32, ColorInterp=Undefined
+    #+END_EXAMPLE
+
+    Les pixels sont donc encodés en nombres flottants de 32 bits. En
+    analysant les valeurs de l'image dans *monteverdi*, on constate
+    que les valeurs de pixels sont entières et comprise entre 100 et
+    1600 environ. L'encodage en flottants de 32 bits est donc
+    inutilement coûteux.
+
+    L'appel à l'application *Convert* permet de convertir le type de
+    pixel encodé:
+    
+    #+BEGIN_EXAMPLE
+    $ otbcli_Convert -in image1.tif -out image1_uint16.tif uint16
+    #+END_EXAMPLE
+
+    Nous pouvons maintenant comparer la taille des images, et
+    constater que l'image ainsi générée occupe seulement la moitié de
+    la place par rapport à l'image d'origine.
+
+    #+BEGIN_EXAMPLE
+    $ du -h image1.tif
+    62M	image1.tif
+
+    $ du -h image1_uint16.tif
+    31M	image1_uint16.tif
+    #+END_EXAMPLE
+
+    L'utilisation de l'application *CompareImages* nous montre par
+    ailleurs que le contenu des deux images est identique.
+
+    #+BEGIN_EXAMPLE
+    $ otbcli_CompareImages -ref.in image1.tif -meas.in image1_uint16.tif 
+    2016 Mar 08 13:59:24  :  Application.logger  (INFO) Using whole reference image 
+                             since the ROI contains no pixels or is not specified
+    2016 Mar 08 13:59:24  :  Application.logger  (DEBUG) Region of interest used 
+                             for comparison : ImageRegion (0x7ffcb6a6d930)
+    Dimension: 2
+    Index: [0, 0]
+    Size: [2000, 2000]
+    
+    2016 Mar 08 13:59:24  :  Application.logger  (INFO) reference image channel 1 
+                             is compared with measured image channel 1
+    2016 Mar 08 13:59:24  :  Application.logger  (INFO) MSE: 0
+    2016 Mar 08 13:59:24  :  Application.logger  (INFO) MAE: 0
+    2016 Mar 08 13:59:24  :  Application.logger  (INFO) PSNR: 0
+    Output parameters value:
+    mse: 0
+    mae: 0
+    psnr: 0
+    #+END_EXAMPLE
+
+    Pour calculer le NDVI, on utilise la commande suivantes :
+
+    
+    #+BEGIN_EXAMPLE
+    $ otbcli_RadiometricIndices -in image1.tif 
+                                -out image1_ndvi.tif uint16 
+                                -channels.red 1 
+                                -channels.green 2 
+                                -channels.blue 3 -channels.nir 4 
+                                -list Vegetation:NDVI
+    #+END_EXAMPLE
+
+    Si l'on ouvre l'image ainsi générée dans *monteverdi*, on constate
+    que l'image vaut 0 en tout point: l'encodage de la sortie ne
+    convient. Il faudrait utiliser un type flottant (comme celui par
+    défaut par exemple.
+
+*** Les fichiers .geom
+
+    Le fichier geom contient les informations nécessaires aux
+    opérations de corrections géométriques et radiométriques de
+    l'image.
+
+*** Les noms de fichiers étendus
+
+**** Les options de lecture
+     
+     L'utilisation du paramètre de nom de fichier étendu /skipgeom/
+     permet d'ignorer les informations contenue dans le fichier
+     /geom/. On constate que la taille du pixel au sol est erronée et
+     que les informations relatives à la date d'acquisition et au
+     capteur ont notamment disparu.
+     
+     Le paramètre de nom de fichier étendu /geom/ permet d'attacher un
+     fichier /geom/ à une image existante. C'est notamment utile pour
+     réaliser des traitements géométriques ou radiométriques pour une
+     image quelconque. Par défaut, l'Orfeo ToolBox (en fait OSSIM)
+     cherche un fichier /geom/ portant le même nom que l'image.
+
+**** Les options d'écriture
+
+     La ligne de commande suivante permet de réaliser l'opération
+     demandée:
+
+     #+BEGIN_EXAMPLE
+     $ otbcli_Convert -in image1.tif 
+       -out "image1_comp.tif?&gdal:co:NBITS=12&gdal:co:COMPRESS=LZW"  uint16
+     #+END_EXAMPLE
+     
+     La taille de l'image ainsi créée est :
+
+     #+BEGIN_EXAMPLE
+     $ du -h image1_comp.tif 
+     23M	image1_comp.tif
+     #+END_EXAMPLE
+
+     On gagne donc 8 Mo par rapport à l'image encodée sur 16 bits non
+     signés. Par ailleurs l'appel à l'application *CompareImages*
+     permet de constater que les images sont toujours de contenu
+     identique.
+
+     Le paramètre /box/ s'utilise de la manière suivante :
+
+     #+BEGIN_EXAMPLE
+     $ otbcli_Convert -in image1.tif 
+                      -out "image1_comp.tif?&box=1000:1000:100:100"  uint16
+     #+END_EXAMPLE
+
+     Après exécution de cette commande, l'image de sortie correspond
+     à un extrait de la sortie totale, commençant à l'index
+     $(1000,1000)$ et de taille 100x100 pixels. Cette option peut être
+     utile pour prévisualiser le résultat d'un traitement avant de
+     traiter l'image entière.
+
+*** La gestion du streaming
+
+    L'appel à l'application *LocalStatiticsExtraction* se fait comme
+    suit:
+    
+    #+BEGIN_EXAMPLE
+    $ otbcli_LocalStatisticExtraction -in image1.tif -out image1_ls.tif 
+                                      -radius 9
+    #+END_EXAMPLE
+
+    On constate que le calcul s'effectue en plusieurs phases (charge
+    des processeurs), entrecoupées de phase d'écriture sur le
+    disque. Par défaut, c'est l'Orfeo ToolBox qui détermine le
+    découpage optimal.
+
+    Pour désactiver complètement le streaming, il suffit d'utiliser
+    les options de noms de fichier étendus suivantes:
+
+    #+BEGIN_EXAMPLE
+    $ otbcli_LocalStatisticExtraction -in image1.tif *
+             -out "image1_ls.tif?&streaming:type=none" -radius 9
+    #+END_EXAMPLE
+
+    On peut constater dans ce cas que le calcul s'effectue en une
+    seule fois, suivi d'une seule phase d'écriture sur le disque.
+
+    #+BEGIN_EXAMPLE
+    $ otbcli_LocalStatisticExtraction -in image1.tif 
+      -out "image1_ls.tif?&streaming:type=stripped \
+      &streaming:sizemode=nbsplits&streaming:sizevalue=1000" 
+      -radius 9
+    #+END_EXAMPLE
+
+    Cette fois-ci, on observe de multiples phases de calcul suivi de
+    phases d'écriture. Le temps de calcul peut être quasiment deux
+    fois plus long, car un découpage trop important est sous optimal.
+
+*** Le multi-threading
+
+    Voici comment fixer le nombre de threads à 1 :
+
+    #+BEGIN_EXAMPLE
+    $ export ITK_GLOBAL_DEFAULT_NUMBER_OF_THREADS=1
+    $ otbcli_LocalStatisticExtraction -in image1.tif 
+                                      -out "image1_ls.tif?&streaming:type=none"
+                                      -radius 9
+    #+END_EXAMPLE
+
+    Dans ce cas, le temps de calcul est beaucoup plus important. On
+    peut également constater qu'augmenter le nombre de threads au delà
+    des capacités de la machine (nombre de coeurs du processeur) ne
+    permet pas d'améliorer les temps de calcul.
+
diff --git a/Courses/2016/bordeaux.inra.fr/WorkshopGuide/preprocessing.org b/Courses/2016/bordeaux.inra.fr/WorkshopGuide/preprocessing.org
index 383f0c77a9d24db1322e8d89c44f4ad3f536ac47..ce8492bda4dce41efd5b526ee0658703a29c8dab 100644
--- a/Courses/2016/bordeaux.inra.fr/WorkshopGuide/preprocessing.org
+++ b/Courses/2016/bordeaux.inra.fr/WorkshopGuide/preprocessing.org
@@ -1,27 +1,275 @@
 ** Pré-traitements de l'imagerie THR optique                         :slides:
-*** Slide
+*** Introduction
+    - Principe des corrections radiométriques et géométriques des images
+    - Utilisation des OTB-Applications
 ** Pré-traitements de l'imagerie THR optique                          :guide:
 *** Description                                                        :desc:
 **** Résumé
-
+     Cet exercice présente les corrections radiométriques et géométriques
+des images à l'aide d'*OTB applications*.
 **** Pré-requis
-
-
+     - Connaissances de base en traitement des images de télédétection.
+     - Notions d'utilisation d'applications en ligne de commande.
+       
 **** Objectifs
 
 *** Étapes                                                            :steps:
-
+Dans cette partie de l'exercice, vous utiliserez les images
+~phr_xs_osr_mipy.tif~ et ~phr_pan_osr_mipy.tif~. Ce sont des extraits Pan et XS
+d'un produit Bundle Pléiades Primary (Niveau 1) sur le sud-ouest de Toulouse. 
 **** Corrections atmosphériques
+Cette opération consiste à transformer les comptes numériques en
+réflectances (valeurs physiques). Elle comprend le passage de
+réflectance au sommet de l'atmosphère vers la réflectance de surface,
+dont l'objectif est de corriger les effets atmosphériques.
+     #+BEGIN_LaTeX
+
+
+     \begin{center}
+\begin{tikzpicture}[scale=0.18]
+   \tiny
+
+    \draw[->,thick] (0,0) --  +(3,0);
+%     \pause
+
+    \draw[fill=black!30,rounded corners=2pt] (4,-2) rectangle +(6,4);
+    \node[text width= 0.8cm] (SensorModel) at (7,0) {DN to Lum};
+%     \pause
+
+    \draw[->,thick] (11,0) --  +(3,0);
+%     \pause
+
+    \draw[fill=black!30,rounded corners=2pt] (16,-2) rectangle +(6,4);
+    \node[text width= 0.85cm] (SensorModel) at (19,0) {Lum to Refl};
+%     \pause
+
+
+    \draw[->,thick] (23,0) --  +(3,0);
+%     \pause
+
+    \draw[fill=black!30,rounded corners=2pt] (27,-2) rectangle +(6,4);
+    \node[text width= 0.85cm] (SensorModel) at (30,0) {TOA to TOC};
+%     \pause
+
+    \draw[->,thick] (34,0) --  +(3,0);
+%     \pause
+
+    \draw[fill=black!30,rounded corners=2pt] (38,-2) rectangle +(6.5,4);
+    \node[text width= 0.85cm] (SensorModel) at (41,0) {Adjacency};
+%     \pause
+
+    \draw[->,thick] (45,0) --  +(3,0);
+
+ \end{tikzpicture}
+\end{center}
 
-     TOA puis TOC, regarder la différence
+#+END_LaTeX 
+
+Avec l'image ~phr_xs_osr_mipy.tif~:
+
+1. Utilisez l'application *OpticalCalibration* pour calculer la
+   réflectance au sommet de l'atmosphère (top of atmosphere).
+2. Utilisez l'application *OpticalCalibration* pour calculer la
+   réflectance de surface (top of canopy).
+3. Comparez les 2 images en utilisant Monteverdi ou les applications
+   en ligne de commande (TOA-TOC). Comparez cette différence pour les bandes
+   rouge, verte et bleu (B0,B1,B2)
+4. Appliquez les opérations 1,2 et 3 à l'image panchromatique ~phr_pan_osr_mipy.tif~.
+
+_Trucs et astuces :_
+- Activez l'option '-milli' afin de générer les images de sortie en
+  millièmes de réflectance (entier 16 bits). Par défaut, les images de
+  réflectance sont sauvegardées en flottant (entre 0 et 1).
 
 **** Fusion P+XS
+     L'objectif de cet exercice est de créer une image fusionnée (/Pan-Sharpening/).
+     En raison des contraintes physiques sur la conception du capteur, il est
+     difficile d'obtenir la meilleure résolution spatiale et spectrale en même
+     temps. Pour cette raison la plupart des capteurs spatiaux THR délivrent 2
+     types d'images:
+     - Multi-spectral (XS): composée de plusieurs bandes, chacune sur une plage
+       de résolution spectrale donnée. Pour Pléiades, 4 bandes (B,V,R,PIR) à une
+       résolution spatiale de 2,8m (rééchantillonné à 2m)
+     - Panchromatique (PAN): image en niveau de gris avec un détecteur couvrant
+       une plus large partie du spectre ce qui permet d'augmenter le flux et
+       d'améliorer la résolution par rapport à l'image multi-spectrale. 0,7m
+       dans le cas de Pléiades (rééchantillonné à 0,5m)
+     
 
-     BundleToPerfectSensor puis différents algos de fusion
+     Nous allons réaliser cette fusion à partir des extraits pan et xs en
+     réflectance au sommet de l'atmosphère ~phr_xs_osr_mipy_toa.tif~ et ~phr_xs_osr_mipy_toa.tif~: 
+     
+     Pour cela:
+    
+     1. Utilisez l'application *BundleToPerfectSensor* pour superposer et
+        fusionner l'image PAN et XS. Notez que l'application possède un mode
+        /phr/ qui permet d'effectuer la superposition des 2 images sans utiliser
+        les modèles de capteurs respectifs des images pan et xs (mode par défaut). En effet les
+        produits bundle Pléiades ont la particularité d'etre sur 2 grilles
+        colocalisées.
+     2. Quel algorithme de fusion est utilisé dans l'application *BundleToPerfectSensor*?
+     3. (optionnel) Utilisez les applications *Superimpose* et *Pansharpening*
+        pour réaliser la meme opération en utilisant d'autres méthodes de fusion.  
 
 **** Ortho-rectification
+     Cette opération permet d'associer des coordonnées au sol aux pixels de l'image.
+
+     #+BEGIN_LaTeX
+     \begin{center}
+     \begin{tikzpicture}[scale=0.2]
+    \tiny
+    \draw[fill=black!10] (-1,-12) rectangle (75,17);
+     \foreach \x in {5,...,1}
+       \draw[fill=red] (\x,\x) rectangle +(4,4);
+     \node[fill=black!10, text width= 1.5cm] (InputSeries) at
+       (4,-1) {Input series};
+     %\pause
+     \draw[->,thick] (9,5) --  +(3,0);
+     %%\pause
+     \draw[fill=black!30,rounded corners=2pt] (12.2,3) rectangle +(6,4);
+     \node[text width= 0.8cm] (SensorModel) at (15,5) {Sensor Model};
+     %\pause
+     \draw[fill=red!30] (1,-10) rectangle +(4,4);
+     \node[fill=black!10, text width= 1.2cm] (DEM) at
+       (5,-11) {DEM};
+     %\pause
+     \draw[->,thick] (3,-5.5) --  ++(0,3) -- ++(12,0) -- ++(0,5);
+     %\pause
+     \draw[->,thick] (18.5,5) --  +(3,0);
+     %\pause
+     \foreach \x in {5,...,1}
+       \draw[fill=blue,xshift=600pt] (\x,\x) rectangle +(4,4);
+     \node[fill=black!10, text width= 2.8cm] (GeoRefSeries) at
+       (28,-1) {Geo-referenced Series};
+%\pause
+      
+
+       \draw[->,thick] (25.5,8.5) --  +(0,3);
+       
+     \draw[fill=black!30,rounded corners=2pt] (22,12) rectangle +(8.5,4);
+     \node[text width= 1.5cm] (HomPoExtr) at (27,14) {Homologous Points};
+
+     \draw[->,thick] (21.5,14) --  +(-2.5,0);
+
+     \draw[fill=black!30,rounded corners=2pt] (11,12) rectangle +(8,4);
+     \node[text width= 1.3cm] (BBAdj) at (15.5,14) {Bundle-block Adjustement};
+
+     \draw[->,thick] (15,11.5) --  +(0,-4);
+
+     %\pause
+      \draw[->,thick] (30,5) --  +(3,0);
+      %\pause
+     \draw[fill=black!30,rounded corners=2pt] (33.2,2.5) rectangle +(6,4.5);
+     \node[text width= 0.7cm] (FineRegistration) at (36,4.9) {Fine Registration};
+     %\pause
 
-     Sans DEM, avec DEM, régler la projection
+     
+     \draw[->,thick] (39.5,5) --  +(3,0);
+     %\pause
+     \foreach \x in {5,...,1}
+       \draw[fill=green,xshift=1200pt] (\x,\x) rectangle +(4,4);
+     \node[fill=black!10, text width= 1.8cm] (RegistSeries) at
+       (47,-1) {Registered Series};
+     %\pause
+     \draw[->,thick] (36,2) --  ++(0,-10) -- ++(-30,0);
+
+     %\pause
+      \draw[->,thick] (52,5) --  +(3,0);
+      %\pause
+     \draw[fill=black!30,rounded corners=2pt] (55.2,2.5) rectangle +(6,4.5);
+     \node[text width= 0.7cm] (CartoProjection) at (57.5,4.9)
+          {Map Projection};
+     %\pause
+
+     
+     \draw[->,thick] (61.5,5) --  +(3,0);
+     %\pause
+     \foreach \x in {5,...,1}
+       \draw[fill=yellow,xshift=1810pt] (\x,\x) rectangle +(4,4);
+     \node[fill=black!10, text width= 1.95cm] (CartoSeries) at
+       (68,-1) {Cartographic Series};
+     
+       
+     \end{tikzpicture}
+     \end{center}
+     #+END_LaTeX
+     Utilisez l'application *Orthorectification* pour réaliser
+        l'orthorectification du produit fusionné:
+        1. Sans DEM
+        2. Avec un DEM et un geoid (utilisé le répertoire /SRTM/)
+        3. Comparez les 2 images en sortie dans Monteverdi. Que constatez vous?
+        4. Quel est le système de projection par défaut dans l'application *Orthorectification*?
+        5. Dans quelle zone UTM se trouve l'extrait PHR Pléiades?
+        6. Tester plusieurs types de projection en sortie (wgs84, lambert 93)
 
 ** Pré-traitements de l'imagerie THR optique                      :solutions:
+*** Corrections atmosphériques
+     
+    Calcul réflectance TOA:
+     #+BEGIN_EXAMPLE
+    $ otbcli_OpticalCalibration -in phr_xs_osr_mipy.tif 
+                                -out phr_xs_osr_mipy_toa.tif uint16
+                                -level toa
+                                -milli 1
+    #+END_EXAMPLE
+
+    Calcul réflectance TOC:
+     #+BEGIN_EXAMPLE
+    $ otbcli_OpticalCalibration -in phr_xs_osr_mipy.tif 
+                                -out phr_xs_osr_mipy_toa.tif uint16 
+                                -level toc
+                                -milli 1
+    #+END_EXAMPLE
+
+    On peut utiliser le module *BandMathX* pour calculer la différence
+entre les 2 images multispectral:
+
+    #+BEGIN_EXAMPLE
+    $ otbcli_BandMathX -il phr_xs_osr_mipy_toa.tif phr_xs_osr_mipy_toc.tif 
+                      -out diff_xs_toa_toc.tif int16 
+                      -exp "im1-im2"
+    #+END_EXAMPLE
+
+    Pour l'image panchromatique:
+    #+BEGIN_EXAMPLE
+    $ otbcli_BandMath -il phr_pan_osr_mipy_toa.tif phr_pan_osr_mipy_toc.tif 
+                      -out diff_pan_toa_toc.tif int16 
+                      -exp "im1b1-im2b1"
+    #+END_EXAMPLE
+
+*** Fusion P+XS
+    #+BEGIN_EXAMPLE
+    $ otbcli_BundleToPerfectSensor -inp phr_pan_osr_mipy_toa.tif 
+                                   -inxs phr_xs_osr_mipy_toa.tif 
+                                   -mode phr 
+                                   -out phr_pxs_osr_mipy.tif uint16
+    #+END_EXAMPLE
+*** Ortho-rectification
+
+    1. Orthorectification sans DEM:
+       #+BEGIN_EXAMPLE
+       $ otbcli_OrthoRectification -io.in phr_pxs_osr_mipy.tif 
+                                   -io.out phr_orthopxs_osr_mipy.tif uint16
+       #+END_EXAMPLE
+    2. Orthorectification avec DEM et geoid:
+       #+BEGIN_EXAMPLE
+       $ otbcli_OrthoRectification -io.in phr_pxs_osr_mipy.tif 
+                                   -io.out phr_orthopxs_osr_mipy.tif uint16 
+                                   -elev.dem ../SRTM/ -elev.geoid ../Geoid/egm96.grd
+       #+END_EXAMPLE
+    3. La projection par defaut est UTM. Sur l'extrait Pléiades la zone UTM est
+       32 Nord. 
+    4. Orthorectification en WGS84 et en Lambert 93:
+       #+BEGIN_EXAMPLE
+       $ otbcli_OrthoRectification -io.in phr_pxs_osr_mipy.tif 
+                                   -io.out phr_orthopxs_osr_mipy.tif uint16 
+                                   -elev.dem ../SRTM/ -elev.geoid ../Geoid/egm96.grd 
+                                   -map epsg -map.epsg.code 4326
+       #+END_EXAMPLE
 
+       #+BEGIN_EXAMPLE
+       $ otbcli_OrthoRectification -io.in phr_pxs_osr_mipy.tif 
+                                   -io.out phr_orthopxs_osr_mipy.tif uint16 
+                                   -elev.dem ../SRTM/ -elev.geoid ../Geoid/egm96.grd
+                                   -map lambert93
+       #+END_EXAMPLE
diff --git a/Courses/2016/bordeaux.inra.fr/WorkshopGuide/sar.org b/Courses/2016/bordeaux.inra.fr/WorkshopGuide/sar.org
index 2005c95343fad0eca6b971e697d6927bc30e6bd8..ea7bed0166867e70e09b32beff9c67d3d0b46e73 100644
--- a/Courses/2016/bordeaux.inra.fr/WorkshopGuide/sar.org
+++ b/Courses/2016/bordeaux.inra.fr/WorkshopGuide/sar.org
@@ -1,14 +1,128 @@
-** Calibration, débruitage et extraction de primitives               :slides:
+** Introduction au traitements des images RSO :slides:
 *** Slide
-** Calibration, débruitage et extraction de primitives pour les images SAR :guide:
+** Introduction au traitements des images RSO :guide:
 *** Description                                                        :desc:
 **** Résumé
+     Cet exercice constitue une introduction au traitement et à l'analyse des
+     images RSO (radar à synthèse d'ouverture) en utilisant l'Orfeo ToolBox:
+
+     - Manipulation des images 
+     - Filtrage du speckle avec différentes méthodes
+     - Extraction de primitives
+
+     Il existe par ailleurs d'autres outils et des tutoriaux disponibles
+     permettant de se familiariser avec les données radar.
 
 **** Pré-requis
 
+     - Logiciels installés (Monteverdi et Orfeo ToolBox)
+     - Données téléchargées
+     - Connaisance du mécanisme des applications de l'Orfeo ToolBox (voir
+       exercice correspondant)
 
 **** Objectifs
 
 *** Étapes                                                            :steps:
+**** Introduction à l'imagerie RSO
+
+Dans cette exercice nous utiliserons les extraits de l'image Sentinel 1 SLC HH
+et HV: ~s1_hh.tif~ et ~s1_hv.tif~. L'image se situe en Allemagne au sud de la
+ville d'Ulm près du lac Constance (47.456276, 9.638616).
+
+1. Ouvrir les images dans Monteverdi. Combien de bandes possède les images?
+2. A quoi corresponde ces bandes? 
+3. Utilisez l'application *BandMath* pour calculer l'image d'intensité à partir
+   des produits complexes  ~s1_hh.tif~ et ~s1_hv.tif~.
+
+**** Réduction du speckle
+     Les images SAR sont fortement affectées par le chatoiement (speckle) qui constitue un
+     type particulier de bruit présent dans tous les systèmes d'acquisition cohérent
+     (sonar, laser, etc.). Ce bruit est très fort et il a un effet multiplicatif.
+
+     Il existe plusieurs méthodes pour réduire ce bruit. Dans la suite nous
+     allons utiliser le filtre de /Frost/ qui possède 2 paramètres: rayon: taille de la fenetre
+     et /deramp/ qui controle la décroissance d'une fonction exponentiel qui est
+     utilisé pour pondéré la distance entre le pixel central et son voisinage. 
+
+     1. Quelle sont les méthodes de réduction du speckle disponible dans l'OTB?
+     2. Utilisez le filtre de Frost avec différents rayons (3,5 et 10) et
+       commentez l'effet sur l'image de sortie
+     3. Commentez la forme de l'histogramme des images filtrées comparé à
+        l'image d'intensité?
+     4. Utilisez le filtre de Frost avec un rayon ed 5 et différentes valeurs
+        du paramètre /deramp/ (00.5,0.2 et 0.8). Commentez l'effet de ce paramètre.
+
+**** Polarimétrie
+     Nous allons comparer de manière qualitative la différence entre les
+     observations des images en polarimétries HH et HV.
+
+     1. Calculez la différence entre l'image d'intensité HH et HV.
+     2. Effectuez une composition colorée avec les bandes HH, HV et HH-HV.
+     3. Affichez le résultat avec Monteverdi et commentez.
+**** 
+** Introduction au traitements des images RSO :solutions:
+**** Introduction à l'imagerie RSO
+1. deux bandes
+2. partie réelle et partie imaginaire?
+3. Il faut utiliser la commande suivante:
+
+   Pour HH:
+
+   #+BEGIN_EXAMPLE
+    $ otbcli_BandMath -il s1_hh.tif 
+                      -out intensity_hh.tif int32 
+                      -exp "im1b1*im1b1+im1b2*im1b2"
+   #+END_EXAMPLE
+
+   Pour HV:
+
+   #+BEGIN_EXAMPLE
+    $ otbcli_BandMath -il s1_hv.tif 
+                      -out intensity_hv.tif int32 
+                      -exp "im1b1*im1b1+im1b2*im1b2"
+   #+END_EXAMPLE
+
+**** Réduction du speckle
+
+     1. Les méthodes disponibles sont: lee, frost, kuan et gamma map. Quelque
+        soit la méthode utilisée on note une amélioration majeure de la qualité
+        de l'image filtrée qui permet d'identifier des structures difficilement
+        visible dans l'image d'intensité originale. 
+     2. Réduction du speckle avec l'algorithme de Frost:
+
+        #+BEGIN_EXAMPLE
+        $ otbcli_Despeckle -in intensity_hh.tif 
+                           -out intensity_hh_speckle.tif 
+                           -filter frost 
+                           -filter.frost.rad 3
+        #+END_EXAMPLE
+
+        L'augmentation du rayon a pour effet d'augmenter le lissage de l'image
+        fitlrée. Cela permet d'améliorer la qualité des images dans les zones
+        homogènes mais entraine également la perte d'information et de détail
+        sur des petites structures avec beaucoup de contraste. 
+
+     3. L'histogramme des images filtrées tend à devenir gaussien (en cloche) et
+        va progressivement différer de la distribution Gamma de l'image
+        originale (la loi Gamma se caractérise par une distribution en cloche
+        asymétrique avec une longue queue à droite) .
+     4. L'augmentation du paramètre /deramp/ diminue la décroissance de
+        l'atténuation exponentielle et à donc tendance à prendre plus en compte
+        les pixels éloignés du pixel central ce qui augmente l'effet de lissage
+        sur l'image filtrée.
+
+**** Polarimétrie
+     1. Calcul de la différence HH-HV:
+     #+BEGIN_EXAMPLE
+      $ otbcli_BandMath -il intensity_hh_speckle.tif intensity_hv_speckle.tif
+                        -out hh-hv_speckle.tif -exp "im1b1-im2b1"
+     #+END_EXAMPLE
 
-** Calibration, débruitage et extraction de primitives pour les images SAR :solutions:
+     On effectue ensuite la concaténation entre les polarisations croisées et la
+     différence des 2:
+     #+BEGIN_EXAMPLE
+      $ otbcli_ConcatenateImages -il intensity_hh_speckle.tif
+                                 intensity_hv_speckle.tif hh-hv_speckle.tif 
+                                 -out intensity_compo.tif 
+     #+END_EXAMPLE
+     2. Commentaire sur composition colorée, zone en violet (valeur HH elevé) 
diff --git a/Courses/2016/bordeaux.inra.fr/WorkshopGuide/segmentation.org b/Courses/2016/bordeaux.inra.fr/WorkshopGuide/segmentation.org
index b4dbac14b7db1c6264e3f6107468c4b69006def3..ea47b8fd38db7d537ba5ff863a87eda1df9aff9f 100644
--- a/Courses/2016/bordeaux.inra.fr/WorkshopGuide/segmentation.org
+++ b/Courses/2016/bordeaux.inra.fr/WorkshopGuide/segmentation.org
@@ -3,19 +3,100 @@
 ** Segmentation et export vers un SIG                               :guide:
 *** Description                                                        :desc:
 **** Résumé
+     
+     Cet exercice permet de se familariser avec la segmentation large
+     échelle en utilisant les algorithmes MeanShift et GRM. On y
+     parcourt les différentes étapes jusqu'à l'export des polygones
+     segmentés dans un SIG.
 
 **** Pré-requis
-
+     
+     - Logiciels installés (Monteverdi et Orfeo ToolBox)
+     - Données issues du TP de pré-traitements pour l'imagerie THR optique
+     - Connaisance du mécanisme des applications de l'Orfeo ToolBox
+       (voir exercice correspondant)
 
 **** Objectifs
 
+     - Connaître les étapes pour réaliser une segmentation
+     - Savoir optimiser les paramètres de la segmentation
+     - Savoir exporter la segmentation vers un logiciel SIG
+
 *** Étapes                                                            :steps:
 
-Dire un mot de GRM.
+**** Lissage de l'image par l'algorithme MeanShift
+
+     L'algorithme du MeanShift réalise un lissage de l'image tout en
+     préservant ses contours. Il rend ainsi l'images plus homogène
+     tout en conservant des frontière franche entre les zones. Il
+     facilite ainsi la segmentation de l'image par des méthodes
+     simples, comme l'extraction des composantes
+     connexes. L'algorithme moyenne itérativement les pixels dans un
+     certain voisinnage spatial et spectral.
+
+     Réaliser un lissage de l'image /myimage.tif/ en utilisant
+     l'application *MeanShiftSmoothing*.
+
+     Notes:
+     - L'option /modesearch/ permet d'accélérer le calcul au détriment
+       de la stabilité, et sera donc désactivée,
+     - Le rayon spatial (/spatialr/) et spectral (/ranger/) sont les
+       paramètres déterminants pour l'algorithme. Le premier s'exprime
+       en nombre de pixel, tandis que le second comme une distance
+       entre signatures spectrales des pixels.
+     - La sortie /foutpos/ code les position moyenne des pixels après
+       lissage, et sera utilisée dans la suite du TP.
+     - Le paramètre de nom de fichier étendu /box/ peut être utilisé
+       pour trouver la valeur de /ranger/ et /spatialr/ optimale sans
+       traiter toute l'image.
+
+**** Segmentation
+
+     Cette étape va produire une segmentation initiale à partir des
+     images écrites précédement (sorties /fout/ et /foutpos/). Les
+     pixels adjacents dont les valeurs dans l'image /fout/ sont
+     distantes de moins de /ranger/ et dont les positions estimées
+     dans l'image /foutpos/ sont distantes de moins de /spatialr/
+     seront groupés au sein de la même composante connexe.
+
+     Le calcul est fait par tuile, dont on peut fixer la taille au
+     moyen des paramètres /tilesizex/ et /tilesizey/.
+
+     Enfin, le paramètre /minsize/ permet d'éliminer toutes les
+     régions dont la taille produite est trop petite (seuil exprimé en
+     nombre de pixels).
+
+     Utilisez l'application *LSMSSegmentation* pour réaliser cette
+     étape. A noter:
+     - Utilisez un /minsize/ de 0 dans cette première étape,
+     - L'image de sortie sera une image étiquettée, dans laquelle
+       chaque pixel porte un label entier unique correspondant au
+       segment auquel il appartient. Il est recommandé d'encoder cette
+       sortie en /uint32/ afin de disposer de suffisament de labels
+       uniques.
+     - Les valeurs pour les paramètres /ranger/ et /spatialr/ doivent
+       être inférieures aux valeurs utilisées pour le lissage (étape
+       précédente).
+      
+    
+     Utilisez la méthode /optimal/ de l'application *ColorMapping*
+     afin de créer une carte contrastée des régions segmentées, qui
+     sera plus facile à analyser.
+
+**** Traitement des petites région
 
-**** LS segmentation
+     Une fois la segmentation intiale réalisée, il reste en général
+     beaucoup de régions de petite taille, qui ne correspondent à
+     aucun objet d'intérêt. L'application *LSMSSegmentation* permet de
+     les filtrer (paramètre /minsize/), mais il est également possible
+     de réaliser un post-traitement pour fusionner itérativement les
+     régions de taille trop faible avec les régions adjacentes dont la
+     radiométrie est la plus proche. C'est l'objet de l'application
+     *LSMSSmallRegionsMerging*.
 
-**** Traitement des petites régions
+     Utilisez cette application pour retraiter la segmentation
+     initiale, en fusionnant toutes les régions dont la taille est
+     inférieure à 10 pixels.
 
 **** Vectorization
 
diff --git a/SoftwareGuide/Latex/Installation.tex b/SoftwareGuide/Latex/Installation.tex
index 32912851edba64842a71151107a8205ca3f0e399..b4901069474ca1a27e18fab1ae19b8334241d91c 100644
--- a/SoftwareGuide/Latex/Installation.tex
+++ b/SoftwareGuide/Latex/Installation.tex
@@ -210,12 +210,9 @@ dependencies necessary for OTB. Once all the dependencies are compiled and insta
 those dependencies.
 
 OTB's compilation is customized by specifying configuration variables.
-The most important configuration variables are shown in table~\ref{tab:installation-cmake-variables}.
-The simplest way to provide configuration variables is via the command line \texttt{-D} option:
-\begin{verbatim}
-$ cd ~/OTB/build
-$ cmake -D CMAKE_INSTALL_LOCATION=~/OTB/install ../otb/SuperBuild
-\end{verbatim}
+The most important configuration variables are shown in
+table~\ref{tab:installation-cmake-variables}.
+
 A pre-load script can also be used with the \texttt{-C} options (see
 \url{https://cmake.org/cmake/help/v3.4/manual/cmake.1.html#options}).
 Another option is to set variables manually with \texttt{cmake-gui} or \texttt{ccmake}.
@@ -227,12 +224,22 @@ table~\ref{tab:installation-cmake-variables}).
 SuperBuild downloads dependencies into the \texttt{DOWNLOAD\_LOCATION} directory, which will be
 \texttt{$\sim$/OTB/build/Downloads} in our example.
 Dependencies can be downloaded manually into this directory before the compilation step.
-This can be usefull if you wish to bypass a proxy, intend to compile OTB without an internet conection, or other network
+This can be useful if you wish to bypass a proxy, intend to compile OTB without an internet connection, or other network
 constraint. You can find a complete bundle with all dependencies sources on the Orfeo ToolBox website (pick the 'SuperBuild-archives' corresponding to the OTB version you want to build) :
 \begin{center}
 \url{https://www.orfeo-toolbox.org/packages}
 \end{center}
 
+The simplest way to provide configuration variables is via the command line \texttt{-D} option:
+\begin{verbatim}
+$ cd ~/OTB/build
+$ cmake -D CMAKE_INSTALL_LOCATION=~/OTB/install -D DOWNLOAD_LOCATION=~/OTB/build/Downloads ../otb/SuperBuild
+\end{verbatim}
+
+DOWNLOAD\_LOCATION cmake option is optional as explained above but allow to
+compile OTB superbuild without internet connection.
+
+
 You are now ready to compile OTB!
 Simply use the make command (other targets can be generated with CMake's \texttt{-G} option):
 \begin{verbatim}