Ice: lightweight, efficient rendering for remote sensing images
1. Ice: lightweight, efficient rendering
for remote sensing images
Julien Michel1, Gabriele Facciolo2
1
CNES - DCT/SI/AP, France - julien.michel@cnes.fr
2
CMLA, ENS Cachan, France - gabriele.facciolo@cmla.ens-cachan.fr
Ice overview
Why Ice
•Users want instant navigation in data
•But satellite images are large:
–Size: 40 000 x 40 000 pixels (pléiades)
–Spectral band: 4, 6, 8, or even more!
–Bit depth > 8: requires preprocessing to display
–Compression (JPEG2000 8 Go → 2 or 3 Go)
•Users even want to see . . . several images together!
•Rendering fine tuning is often cumbersome . . .
•We can do better!
What Ice is
•Ice is a library depending on OTB and OpenGL
•Implementing a scene/actors paradigm
•To display several raster or vector files together
•Keyword: responsive and on-the-fly rendering
•With fun tools to see your data in a different way
•Agnostic wrt. GL context or graphical toolkit
•Does not implement user interactions
•Comes with a demo based on GLFW
Ice rendering model
View
Actor 1
Actor 2
Actor N
View settings
Ice
OpenGl Context and Graphical toolkit
...
Hard
drive
Actors
stack
User actions
What makes Ice efficient
Multi-resolution tiles caching
Tiles already cached
Tiles to load
Tiles are cached in RAM and in GPU memory (see GLSL rendering)
GLSL Rendering
How to make contrast related operations efficient?
1.Load tile to RAM
2.Extract the RGB components to be displayed
3.Load tile to GPU as a RGB FLOAT32 OpenGL texture
4.Write shaders in GL Shading Language to perform the 8 bits rendering
This key idea comes from the pvflip image viewer:
•GLSL is a high-level shading language based on the syntax of the C pro-
gramming language (source: wikipedia)
•Any contrast editing operation only implies GPU, and is therefore incredibly
responsive (can run at 50 FPS or even higher)
•GLSL also allows to create new rendering effects enabled by the respon-
siveness
Textures mapping
Image to screen transform
Rotation, translation, scaling
SRS change
Orthorectification with DSM
Image Domain: square tiles Viewport (screen) domain : texture mapping
Regular tiles in the image domain are mapped to quadrilaterals in the screen
domain. Resampling is handled by GPU through texture mapping, and is
therefore very efficient. Orfeo ToolBox automagically handles coordinates
mapping between actors and viewport geometries.
Light vs. Heavy cycles
Hard
Drive
RAM GPU
Heavy rendering cycle Light rendering cycle
Depending on user interactions, light or heavy cycles can be triggered
When is a heavy cycle really needed?
•Loading of a new actor (vector or raster)
•At the end of a move (translation, rotation, zoom in or out)
•When changing bands to be displayed. That’s all!
Fun with shaders
Local contrast enhancement Local spectral angle mapping Chessboard transparency Local Gradient
Ressources and Live Demo
Ice: hg.orfeo-toolbox.org/Ice Orfeo ToolBox: orfeo-toolbox.org Pvflip: https://github.com/gfacciol/pvflip