Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Ice: lightweight, efficient rendering for remote sensing images

620 vues

Publié le

Poster presented at FOSS4G europe on Ice library.

Publié dans : Logiciels
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Ice: lightweight, efficient rendering for remote sensing images

  1. 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´eiades) –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 Actorsstack 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