<!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>