HDRI (High Dynamic Range Imagery)

 
Que la lumière soit virtuelle

Le codage des images numériques en seize millions de couleurs a montré ses limitations. La nouvelle technique des images à large dynamique offre de nouvelles possibilités, maintenant exploitées par plusieurs logiciels de rendering.

L'image numérique classique que tout le monde connaît et utilise est codée sur 256 valeurs (entre 0 et 255) sur chaque plan R, V et B, c'est-à-dire en 24 bits par pixel (3 x 8bits). Trois plans qui peuvent prendre chacun 256 valeurs, cela donne par combinaison pas moins de seize millions de couleurs, ce qui est déjà impressionnant. Ce n'est en réalité pas suffisant pour certaines applications. Ce codage est imparfait pour trois raisons majeures : le manque de finesse, une dynamique lumineuse réduite ainsi qu'une couverture incomplète de l'espace de couleurs. Les images codées avec une dynamique plus grande, dites HDR, ont été inventées pour pallier à ces insuffisances. Elles sont utilisées avec succès dans les domaines où l'on souhaite améliorer le réalisme de l'image, en particulier dans le cinéma.

Les pionniers du cinéma

L'enregistrement d'images numériques sur pellicule (35mm ou 70mm) fut à l'origine de la première remise en cause des images codées à 8 bits par plan. En effet, un dégradé unicolore ne pouvant prendre que 256 valeurs différentes, les marches d'escalier qui en résultent deviennent visibles sur un écran cinéma. Il fallait plus de finesse sur toute la chaîne de production, depuis le scan jusqu'au shooting. Le deuxième défaut est le manque de dynamique. Avec un codage classique, le rapport d'intensité lumineuse entre le pixel le plus lumineux et le pixel le plus faible, non noir, n'est que de 255. Or dans la réalité, il est courant que la dynamique entre les zones les plus lumineuses et les plus sombres d'une scène se mesure en plusieurs milliers, voire en millions. Le rapport lumineux entre le soleil et un intérieur sombre est de plus de deux milliards. Et déjà sur une pellicule, d'après Kodak, la dynamique enregistrée est supérieure à mille. La solution à ces deux problèmes, le manque de finaesse et de dynamique, est de travailler en 10, 12 ou même 16 bits par plan. Les films sont maintenant systématiquement scannés avec 16 bits par couleur. Pour ces raisons, Pixar s'est intéressé depuis longtemps au codage d'images avec une large dynamique, et a créé son propre format d'images en 33 bits/pixel. Le résultat est une dynamique de 5000, suffisante pour le film. De son côté, Kodak a aussi créé il y a déjà plusieurs années le format Cineon, qui peut comporter des couleurs codées au choix à 1, 8, 10, 12, 16, 32, ou 64 bits et qui a été repris comme standard ANSI et SMPTE sous le nom DPX.

fiatlux panorama

Reconstitution panoramique dans Lightwave de la Basilique St-Pierre grâce à un environnement HDR, pour le film "Fiat Lux"
© Paul Debevec

Pour l'étalonnage, cette évolution fut très appréciée. On peut en effet manquer de richesse dans une zone de la gamme d'intensité ou de couleurs, que l'on souhaite étendre. Pour être capable d'étalonner finement, il est fort utile de pouvoir travailler sur des images en 12 ou 16 bits. Si par exemple les noirs ou les blancs sont écrasés lors d'un premier étalonnage, il est impossible de récupérer ensuite du détail. Et après deux étalonnages successifs, une image est détruite. Les palettes professionnelles comme Photoshop ou FilmGimp, travaillent en interne en 16 bits.

Le codage HDR (High Dynamic Range)

Mais ces codages, jusqu'à 16 bits par plan, ne stockent au maximum qu'une dynamique de quelques milliers. D'où l'invention des images HDR, pour High Dynamic Range, capables de coder toute la dynamique lumineuse d'une scène réelle. Le moyen le plus simple, mais le plus coûteux en ressources, est de coder chaque valeur en flottant, soit en 32 bits par couleur. C'est le choix effectué pour le calcul en interne des renderings, c'est aussi le cas de plusieurs formats courants dits HDR comme le PFM Portable Float Map (.pfm), le CineonFP (.cin), ou encore le format HDR utilisé par Lightwave, le Flexible Image Format (.flx). Mais ce n'est pas une solution très optimisée. Une image classique en 4K par 4K prend 50 Mo en mémoire. Pour une palette qui travaille en interne en 16 bits, la même image prend donc 100 Mo en mémoire. Et lorsqu'on passe en flottant, il faut encore 100 Mo supplémentaire. Cela devient vite ingérable en mémoire et en place disque.

Il fallait être plus malin. Il existe de nouveaux formats toujours dits HDR, qui savent coder une dynamique très large sur un nombre de bits réduit. Le principe est en général de décomposer l'image en zones d'intensité distinctes (par exemple en séparant la fenêtre en contre-jour et l'intérieur de la pièce) puis de coder ces différentes zones de manière plus fine. Un des premiers formats de ce type a été mis au point en 1987 pour le moteur de rendering réaliste Radiance, par Greg Ward (Gregory Larson). Les trois plans RVB sont stockés sur seulement 32 bits, donc prennent trois fois moins de place qu'une image stockée en flottant, et pourtant la dynamique stockable est déjà de 1… suivie de 76 zéros. Evidemment, on perd quand même un peu en précision. L'erreur de codage peut atteindre 1%.

Retranscrire toutes les couleurs


gamuts
Le codage RGB ne couvre qu'une partie du spectre visible

Le troisième défaut du codage classique concerne la couleur. Les trois plans RVB décrivent un triangle qui n'est qu'une partie de l'espace des couleurs visibles. Certains ont travaillé sur une représentation numérique complète de l'espace des couleurs. C'est le cas pour un des formats HDR les plus récents, toujours en 32 bits par pixel, LogLuv, proposé par Greg Ward qui travaille chez SGI. Il permet de représenter l'ensemble de l'espace de couleurs de manière équitablement répartie. La dynamique couverte est la moitié de celle couverte par le format utilisé dans Radiance, mais la précision est améliorée, l'erreur ne dépassant pas 0,3%. Il existe d'ailleurs une version de LogLuv pas plus lourde qu'une image classique, à 8 bits par plan, qui est nommé LDR (Low Dynamic Range), avec une dynamique de cent mille. Ce qui montre bien que l'on peut décorreler le poids d'une image de sa capacité à transcrire une dynamique, à condition de réfléchir au codage.

Nombre de bits par pixel Formats Dynamique en puissance de dix
24 jpeg, tga, etc 2
24 LogLuv / SGI 5
32 LogLuv / SGI 38
32 RGBE / Radiance 76
33 Log / Pixar 3,5
96 PFM, CineonFP, FLX / Lightwave infinie

Tableau : Comparatif des principaux formats HDR et LDR

Fabriquer des images réelles HDR

Le calcul d'images de synthèse à large dynamique lumineuse est assez simple dans le principe. Il suffit que tous les calculs internes au rendering aient lieu en flottant, et qu'il n'y ait pas de limitation dans les valeurs que l'on peut données, comme à l'intensité des sources lumineuse. En revanche, la capture d'images réelles HDR, dites HDRI (High Dynamic Range Imagery) a nécessité de mettre au point des méthodes spécifiques et de développer des algorithmes adaptés. Les appareils photos actuels ne sachant pas saisir toute la dynamique lumineuse d'une scène réelle en une seule passe, le principe consiste à saisir plusieurs images avec des diaphragmes différents, du plus sombre au plus lumineux. On assemble ensuite ces différentes images en numérique, pour en faire une seule image HDR qui contient toute la dynamique de la scène réelle.

photogenics
Une image HDR visualisée dans Photogenics HDR avec deux temps d'exposition différents.
Cela montre bien l'impossibilité avec une image classique de voir en même temps les détails extérieurs et intérieurs.


Des palettes HDR comme Photogenics HDR, qui vaut environ 700 Euros, ou comme le freeware HDRshop permettent d'assembler une série d'images en une seule image HDR, puis de les manipuler. Ces outils offrent aussi toute une série de fonctions classiques de palettes graphiques, applicables sur ces images d'un type un peu particulier. Une fois post-traitées, ces images sont exportées soit en HDR, soit en 24 bits classique. Cette méthode est maintenant rôdée et assez simple. A terme, les appareils numériques (photos ou caméras vidéo) vont savoir directement enregistrer des images HDR en une passe.

Les HDRI au service du réalisme

L'utilisation phare qui a mis à la mode les images HDR est une technique de rendering réaliste, dite "Image based Lighting", inventée par Paul Debevec. L'association d'une map d'environnement HDR associée à du ray-tracing ou de la radiosité, est devenu en très peu de temps le must du photo-réalisme. Dès que la scène réelle est contrastée, les HDR s'imposent pour le calcul des réflexions même si l'image finale est exportée en 8 bits par couleur. En revanche, si la scène présente peu de contraste lumineux, l'utilisation des HDR n'est pas obligatoire. Radiance est le premier render a avoir utilisé des images HDR. Ensuite Lightwave, suivis récemment par Arnold, Brazil, FinalRender, Renderman et XSI depuis la version 3, ont tous intégrés l'utilisation des images HDRI et tous les grands studios d'effets spéciaux s'y sont mis, Digital Domain, ILM, Weta, CFC, etc

Pour obtenir des maps d'environnement HDR, la méthode est de prendre plusieurs vues de l'environnement réel avec plusieurs diaphragmes mais sur 360°. La méthode qui consiste à photographier plusieurs vues sous différents angles puis à les coller pour obtenir un panorama est un peu lourde, puisqu'il faudrait prendre chacun de ces différents angles avec plusieurs diaphragmes. Un appareil panoramique peut être très utile. Sinon, des techniques spécifiques à la HDR se sont développées. La société allemande SpheronVR propose un appareil photographique spécial qui prend un 360°, le Spherocam HDR. Une barette CCD en fish eye (sur 180°) tourne sur son axe, et prend une image sphérique sur 360° en plusieurs minutes, et en plusieurs expositions. L'appareil coûte la bagatelle de 48 600 Euros.

spherocam
La caméra Spherocam HDR tourne sur son axe sur 360°

La deuxième technique est moins onéreuse et a été rendue populaire par P.Debevec. On photographie une sphère métallique parfaitement réfléchissante ("light probe" en anglais) sur lequel se réflète plus de la moitié de l'environnement.Cette méthode ne demande pas de matériel spécifique en dehors de la sphère métallique. En revanche il faut déformer en post-traitement l'image anamorphosée par la sphère puis enlever le reflet de l'appareil photo, et éventuellement du photographe.

campus
Le système des "light probes" consiste à prendre des images semi-panoramiques sur une sphère réfléchissante puis à reconstituer une map d'environnement (ici cubique à droite).
© Paul Debevec

Le mapping des images HDR

Un export des images HDR vers des images classiques à faible dynamique, en gardant le maximum de détails dans les différentes zones lumineuses, peut s'avérer utile. On obtient des images peu contrastées, sans zone de lumière ou d'ombre crues. Pas moins de trois papiers ont été présentées au dernier Siggraph sur ce sujet, qui se nomme en jargon technique, le "tone mapping". Ces images ont plusieurs intérêts, outre le fait de pouvoir visualiser des images HDR sur des supports classiques. Une des applications les plus prometteurse est de créer ainsi des textures de couleurs et de matières sur un objet scanné, indépendamment de son éclairage. En effet, lorqu'on scan un objet, géométrie et couleurs, il faut arriver à l'éclairer de manière diffuse et frontale pour éliminer les ombres. Mais ce n'est pas toujours facile, si l'objet a une forme bizzare, s'il est dans un environnement lumineux non contrôlable, ou s'il est scanné en extérieur, etc. On peut avec une texture HDR scannée de l'objet, espérer enlever les ombres dues à l'éclairage réel et retrouver ainsi la couleur et la matière de base de l'objet.

abbeye
L'image de droite est reconstituée avec la technique du "tone mapping" à partir des prises de vue photographiques de gauche. Les ombres ainsi que le ciel très lumineux ont conservé leurs détails.
© Greg Ward

Des images HDR en temps réel

Avec l'aide de Paul Debevec, le constructeur de cartes graphiques ATI a fait une demonstration au dernier Siggraph d'un calcul temps réel d'objets avec une texture d'environnement HDR, sur leur nouvelle carte Radeon 9700 pro, munie d'un processeur R300. Par rapport au calcul de la même scène qui avait été fait en 1998, le gain en calculs est de 72 000. Cette prouesse était attendue. La dernière génération de cartes de ATI, dont fait partie la Radeon 9700 pro, comme d'ailleurs les dernières cartes de nVidia, font tous leurs calculs de rendering en flottant, donc intègrent naturellement les images HDR. Il restait à exploiter cette avancée. Dans le même sens, Microsoft a comme projet d'implémenter les HDRI dans DirectX9.

Plus ambitieux, mais toujours concernant le matériel, plusieurs équipes travaillent sur la mise au point d'écrans capables de visualiser des images HDR avec toute leur dynamique. Les applications sont nombreuses, dont celle de visualiser correctement les données, dans n'importe quel environnement de lumière extérieure. L'université de British Columbia a présenté un écran de ce type, qui devrait avoir à terme une dynamique de 100 000, et qui est industrialisé par la startup Sunnybrook.

ecran hdri
Simulation d'un écran HDR. Comparaison entre la luminosité d'un écran classique (à gauche) et d'un écran HDR (à droite).

Pour en savoir plus :

Les inventeurs :
Radiance : radsite.lbl.gov/radiance
Greg Ward (Gregory Larson) : viz.cs.berkeley.edu/gwlarson/
Paul Debevec : www.debevec.org

Caméra sphérique :
Spherocam HDR / SpheronVR : www.spheron.com
Ecran HDR :
http://www.physics.ubc.ca/ssp/
http://www.sunnybrooktech.com/

Les palettes HDR :
HDRshop : athens.ict.usc.edu/HDRShop
Photogenics HDR : www.idruna.com

    Le rendering temps réel

    Les dernières générations de cartes graphiques sont en train de révolutionner l'approche du rendering, non seulement grâce à l'accroissement des performances (qui s'est effectuée de manière régulière ces dernières années) mais surtout grâce à la mise au point de langages de programmation du hardware. Les développeurs temps réel étaient en effet confrontés à l'évolution rapide des cartes ainsi qu'à la différence existante entre les cartes 3D. La stratégie de nVIDIA, dont les cartes équipent la moitié des PC vendus actuellement, est de partir d'un langage haut niveau propriétaire, le CG shader, compatible avec tous les GPUs qui supportent DirectX8 et OpenGL 1.4. Ce langage est proche de Renderman, il permet de programmer à la demande des shaders sophistiqués. La ressemblance est d'autant plus forte avec le moteur de rendering de Pixar que l'équipe d'Exluna, à l'origine de BMRT (le clone gratuit en plus réaliste de Renderman) et d'Entropy, a été embauchée par nVidia. Le CG shader est conçue comme une surcouche de DirectX et de OpenGL, il fonctionne donc sans modifications sur les cartes graphiques des différents constructeurs, entre autres celles de ATI et de 3Dlabs, et pas seulement sur celles de nVidia. De plus CG shader est destiné à devenir compatible multi-plateformes : Windows, Linux, Playstation2 et Apple/MacOS, réduisant d'autant les coûts de développement de jeux.

    La puissance de CG shader est indéniable et a donné accès aux possibilités du calcul temps réel à nombre de programmeurs, familiarisés avec Renderman. On peut créer des effets de Fresnel (sorte de halo, avec le spéculaire et la réflexité qui augmentent sur la silhouette des objets et qui diminuent au centre) ou des effets de peau. Tous ces effets étaient jusque là possibles pour la fiction mais pas pour le jeu temps réel. Pour David Kirk, directeur scientifique de nVidia, il ne fait pas de doute que d'ici très peu d'années, tout le rendering pourra se faire directement sur carte graphique. La prochaine génération de cartes graphiques devrait traiter des modèles hyper-réalistes comme le ray-tracing et la radiosité. L'autre avantage, compris par les éditeurs de logiciels 3D, est d'intégrer des plugins fonctionnant avec CG shader pour une mise au point temps réel et interactive. Des démonstrations ont été faites dans ce sens au dernier Siggraph avec 3DS Max, XSI et Maya. Mais la compétition entre les moteurs logiciels optimisés et les cartes graphiques n'est pas courue d'avance. Dans un programme comme Softimage|XSI, la mise au point interactive du rendering est très poussée grâce à l'utilisation optimisée des CPUs par Mental Ray. On peut en effet déjà réglé en interactif le ray-tracing ou l'illumination globale.

    ATI hdr
    ATI a présenté au Siggraph 2002 des images HDRI calculées en temps réel avec sa nouvelle carte Radeon 9700 pro.
    © ATI / Paul Debevec

    La compétition entre constructeurs de cartes n'est pas non plus terminée. Dans ce domaine, la stratégie de 3Dlabs, face aux langages propriétaires du type DirectX de Microsoft ou du CG shader de nVIDIA, est de s'appuyer sur le standard OpenGL. Conscient que ce dernier a néanmoins besoin d'être rajeuni, ayant très peu évolué depuis la version 1, 3Dlabs a proposé des spécifications pour une nouvelle version 2. Son équipe de développement a mis au point un prototype de driver de OpenGL 2.0 pour en montrer les possibilités, et qui tire parti de la programmabilité des VPUs (Visual Processor), les nouveaux processeurs programmables de leur dernière génération de cartes, les Wildcat VP. La définition des spécifications de la version 2 est supportée par plusieurs autres constructeurs, en particulier SGI, ATI, Apple et nVidia. C'est d'ailleurs là que le bât blesse, nVidia a fourni les spécifications du CG shader pour qu'elles soient intégrées dans OpenGL 2. Du coup, la compétition est ouverte entre OpenGL 2 et CG shader pour savoir le quel des deux langages va être de plus haut niveau et va réussir à absorber l'autre.

    Pour en savoir plus :

    CG shader : www.cgshaders.org
    OpenGL 2 : www.3dlabs.com/support/developer/ogl2/index.htm
 
© fevrier 2003 François Ploye et Pixel SA