<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"> <title>pyotb: A pythonic extension of Orfeo Toolbox</title> <link rel="stylesheet" href="./revealjs/dist/reset.css"> <link rel="stylesheet" href="./revealjs/dist/reveal.css"> <link rel="stylesheet" href="./revealjs/dist/theme/white.css"> <link rel="stylesheet" href="otb.css" id="theme"> <!-- I/ NOT USED ANYMORE --> <!-- Theme used for syntax highlighted code <link rel="stylesheet" href="a11y-light.css"> --> <!-- Theme used for drawer code <link rel="stylesheet" href="./revealdrawer/dist/drawer.css" /> --> </head> <body> <div class="reveal"> <div class="slides"> <!-- I/ PREMIERE PAGE --> <section data-background-image='illustrations/background.png'> <h1>pyotb: A pythonic extension of Orfeo Toolbox</h1> </br> <p>Nicolas Narçon<sup>1</sup>, Rémi Cresson<sup>1</sup>, Vincent Delbar<sup>2</sup></p> <p>(1) INRAE, (2) La TeleScop</p> <br> <p> Firenze, FOSS4G - 25 Aug. 2022</p> </section> <section data-background-image='illustrations/background.png'> <h3>Basic satellite image processing in Python</h3> <h4>Example: Pansharpening</h4> <figure> <img src="illustrations/pansharpening_schema.png" width=60%/> </figure> </section> <!-- II/ PANSHARPENING WITH PYOTB --> <section> <section data-background-image='illustrations/background.png'> <h2>What a developer goes trough</h2> <video data-autoplay width=70% src="illustrations/pansharpening_google_search_final_speedup.mp4"></video> </section> <section data-background-image='illustrations/background.png'> <h3>Issues</h3> </br> <img style='vertical-align:middle' src="illustrations/cons.png" width=5%/> <span>Con n°1:</span> </br></br> <ul> <li>Not many well-eshtablished Python Open Source remote sensing solutions -> trust?</li> <li>Need to implement/adapt some algorithms -> loss of time</li> </ul> </br></br> <br> </section> <section data-background-image='illustrations/background.png'> <h2>Pansharpening in Python</h2> <video data-autoplay width=70% src="illustrations/pansharpening_memory_error_rasterio_speedup.mp4"></video> </section> <section> <figure> <img src="illustrations/memory_error.png" width=80%/> </figure> <figure> <img src="illustrations/michael_meme.png" width=50%/> </figure> </section> <section data-background-image='illustrations/background.png'> <h3>Issues</h3> </br> <figure> <img src="illustrations/cons.png" width=5%/> <figcaption>Con n°2:</figcaption> </figure> <ul> <li>Satellite image processing do not fit in RAM</li> </ul> <span>Solution: by hand tiling ?</span> <pre><code data-trim class="python"> for i in range(0, size, chunk_size): # Reading image with rasterio.open('image.tif'): ... </code></pre> <br> </section> <section data-markdown> <textarea data-template> ### Whatever | Test | Test | Description | | ---- | ---------- | ----------- | | 1 | 0 | ssss | </textarea> </section> </section> <!-- III/ PANSHARPENING WITH PYOTB --> <section> <section data-background-image='illustrations/background.png'> <h2>pyotb: remote sensing made easy</h2> <video data-autoplay width=70% src="illustrations/pansharpening_pyotb_laptop_speedup.mp4"></video> </section> </section> <!-- IV/ PERFORMANCE: ON A BIG SERVER IS IT SLOWER THAN FULL PYTHON ? --> <section> <section data-background-image='illustrations/background.png'> <h2>Performance comparison</h2> </section> </section> <!-- V/ USECASE: EXAMPLE FROM THE DOC AVEC EXPORT RASTERIO --> <section> <section data-background-image='illustrations/background.png'> <h2>pyotb: An usecase</h2> </section> </section> <section> <h1>Thank you</h1> <h3>Any questions?</h3> </section> </div> </div> <script src="./revealjs/dist/reveal.js"></script> <script src="./revealjs/plugin/notes/notes.js"></script> <script src="./revealjs/plugin/markdown/markdown.js"></script> <script src="./revealjs/plugin/highlight/highlight.js"></script> <script> // More info about initialization & config: // - https://revealjs.com/initialization/ // - https://revealjs.com/config/ Reveal.initialize({ hash: true, controlsLayout: 'edges', // Visibility rule for backwards navigation arrows; "faded", "hidden" // or "visible" controlsBackArrows: 'visible', slideNumber: true, // Learn about plugins: https://revealjs.com/plugins/ plugins: [ RevealMarkdown, RevealHighlight, RevealNotes ], // The "normal" size of the presentation, aspect ratio will // be preserved when the presentation is scaled to fit different // resolutions. Can be specified using percentage units. width: 1920, height: 1080, // Factor of the display size that should remain empty around // the content margin: 0.01, // Bounds for smallest/largest possible scale to apply to content minScale: 0.2, maxScale: 2.0, drawer: { colors: ["#fa1e0e", "#8ac926", "#1982c4", "#ffca3a"], // (optional) list of colors avaiable (hex color codes) color: "#FF0000", // (optional) color of a cursor, first color from `codes` is a default pathSize: 2, // (optional) path size in px, default 4 } }); </script> </body> </html>