Le contraste local : Intro et méthodes simples

Grand Som

Grand Som (Image HDR @15mm). Chartreuse/2011

Cet article est le premier d’une série de deux articles sur le contraste local, viendra ensuite l’utilisation de c2g.

On parle beaucoup de contraste en photographie. Contraste de couleur, contraste entre objets représentés, contrastes dans la luminosité… tous ces contrastes ont des origines techniques différentes, mais sont rassemblés par le fait qu’à chaque fois ils expriment une différence entre deux trucs de l’image.

La plupart du temps, quand on lit le mot contraste en imagerie au sens large, on fait référence au contraste de luminosité, c’est à dire une différence entre des zones lumineuses et des zones moins lumineuses. Et dans un éditeur d’image, quand on cherche à « augmenter le contraste », on cherche la plupart du temps à rendre les blancs plus blancs et les ombres encore plus sombres, c’est à dire augmenter le contraste global. On oublie bien souvent le contraste local, celui qui rend les nuages dans les images HDR si pétants, ou encore qui fait garder tous son charme aux N&B argentiques d’antan… ou encore qui permet de jouer sur la « netteté » d’une photo, eh oui. Mais c’est quoi le contraste local ? pourquoi a t-on inventé le petit adjectif « local » ?


Contraste global et contraste local correspondent à deux démarches différentes. Quand on augmente le contraste global, on rend les pixels blancs de l’image encore plus blanc et les pixels sombres encore plus sombres : on raisonne sur l’image en entier. Augmenter le contraste local, cela revient d’abord à considérer un pixel de l’image et évaluer les pixels voisins situés dans un certain rayon. Si son voisinage est plus clair, alors on l’assombrit pour augmenter le contraste. Inversement, si ses voisins sont plus sombres, on l’éclairci. En répétant ce procédé sur toute l’image, on aura augmenté le contraste local. Mais probablement qu’une photo en dit un peu plus :

De gauche à droite : original, augmentation du contraste global et augmentation du contraste local. L'histogramme change peu avec l'augmentation du contraste local, et pourtant l'effet est très fort.

Arrêtons-nous un petit peu sur l’image précédente, et je pense surtout aux amateurs d’image HDR qui sont confrontés à ce genre de problèmes. On peut remarquer sur l’image non modifiée qu’elle a un histogramme qui prend toute la gamme des valeurs possibles. Impossible d’augmenter le contraste global sans perdre des détails… regardez les zones très clairs des nuages : on distingue plus de nuances sur l’original que sur la photo modifiée ! Si vous vous êtes évertués à prendre plusieurs images pour capturer toute la dynamique de la scène, c’est pas pour tout perdre par la suite ! C’est d’ailleurs tout le jeu de l’opération de tonemapping : reconstruire ce contraste de manière réaliste (ou pas hum).

J’explique tout ça d’un point de vue tout à fait informatique, mais tout ça se retrouve également dans la vision humaine, comme très bien expliqué ici.

Alors, comment on modifie le contraste local ? Il y a quelques techniques classiques, on va voir :) Notre image de base sera une image sortie d’HDRstack issue de la fusion de trois clichés. On se situe exactement dans le cas précédent : on ne peut pas augmenter le contraste global, parce que tout les 8 bits de l’image sont déjà utilisés, et pourtant, l’image est toute délavée…

Col d'ornon, image brut de décofrage à la sortie de HDRstack

Le classique : Unsharp Mask (USM)

C’est la méthode historique pour augmenter le contraste local, et la plus simple. Elle fait intervenir le filtre Renforcer la netteté aka Unsharp mask pour les habitués. Sauf qu’au lieu d’utiliser un petit rayon pour mettre en valeur les bords, on va en utiliser un grand. Le filtre est disponible dans Filtres » Amélioration » Renforcer la netteté.

Fenêtre d'USM et réglages à appliquer

Comme d’hab, le tout est de tester le bon rayon et la bonne quantité à appliquer, je suggère 50.0/0.40, mais évidemment cela dépend de votre image. On peut également utiliser l’action GEGL (Outil > Action GEGL et sélectionner unsharp-mask), qui permet d’avoir un aperçu directement sur le canevas (pratique !).

Résultat de l'application de USM avec les paramètres précédents (passez la souris pour voir l'original)

Très bien, nous avons augmenté le contraste local. La méthode est facile et rapide, mais pas forcément très flexible… il y a mieux !

La variante : Wavelet decompose

Wavelet decompose est un petit greffon qui permet de décomposer l’image en plusieurs niveaux de détails. La technique de la chose me dépasse, mais retenons qu’il permet de séparer les contrastes de petite taille, dans l’image précédente les transitions entre sapins par exemple, des contrastes de plus grande taille, par exemple celui qui sépare les flancs à l’ombre des montagnes du ciel beaucoup plus clair. On peut donc pouvoir renforcer le contraste local à plusieurs échelles, comme si on appliquait USM avec des rayons différents. La technique est plus, fine, mais le principe est le même.

La première des choses est de l’installer : facile, il suffit d’installer le paquet debian gimp-plugin-registry, ou encore gimp-plugin-wavelet-decompose sous Archlinux, etc. Probablement qu’il y a un paquet disponible pour votre distribution si vous n’êtes pas de ceux-là. Sinon, les sources sont disponibles sur le registry.

Le greffon est très simple d’emploi: on ouvre son image et on applique le filtre Image > Générique > Wavelet decompose. Quelques options sont données: personnellement j’aime bien décomposer en plus de 5 calques, ce qui donne un peu plus de souplesse par la suite. La pile de calque grossit alors terriblement : notre image est décomposée en calques contenant le contraste à plusieurs échelles (les gris en mode fusion de grain).

La beauté de ce plugin réside dans le fait que la recomposition est faite automatiquement par l’utilisation des modes de calques : concrètement, si on veut augmenter une certaine échelle de contraste, il suffit de dupliquer le calque correspondant ! (cf ci-dessous)

Image décomposée et ajustements

Image décomposée et ajustements (à droite)

L’avantage de ce plugin, c’est qu’il permet pour les plus petites échelles de contraste d’appliquer un filtre de netteté : essayez de dupliquer par exemple le calque Wavelet scale 1. Pas très flexible niveau paramètres, mais c’est extrêmement rapide et pratique pour appliquer un petit coup de netteté avant export. On peut trouver aussi plein d’autres applications à cette méthode, le mieux est encore et toujours de lire la page de description du plugin, qui donne quelques idées.

Résultat de traitement avec Wavelet Decompose

Résultat de traitement avec Wavelet Decompose (passer la souris pour voir l'original)

Cette méthode a le mérite d’être plus flexible que simplement appliquer le filtre USM. Elle est loin d’être parfaite cependant : le plus gros problème que je lui trouve est qu’on se retrouve facilement avec des photos qui sont un peu oniriques à cause du flou gaussien de chaque couche: essayez de dupliquer les calques du bas de la pile par exemple. Bon, par contre pour les photographes pressés, le traitement par cette méthode est très efficace en temps, à creuser donc si vous êtes de ceux-là :)

Ces deux méthodes ont leurs défauts, et depuis on a inventé c2g qui les corrige en partie, mais ce sera dans un prochain article… à suivre donc !

Mots-clefs :, , 1 réaction


 

Une réaction à 'Le contraste local : Intro et méthodes simples'



Suivre les commentaires avec le flux RSS , faire un TrackBack.

  1. j’ai fait les maths… et ce wawelet est une transformée de fourier

    la transformée de fourier dit que toute fonction périodique est la somme de Ai * sin (2*pi*x/Ti)

    Ai amplitude
    Ti periode de chaque onde sinus.

    et on a des librairies pour calculer des transformées de fourier de plus en plus performantes.

    donc si je prends la premiere ligne les pixels sont transformés en fait A0 A1 A2 …. A50 et en périodes T0 T1 T2 etc…

    Le calque est relié à T0 T1 et les gris dans les calques sont les tracés des fonctions Ai sinus (.. x/Ti)

    et dupliquer le calque wavelette c’est pas ce qu’il y a de mieux coté finesse offerte par les ondelettes.

    On peut fort bien faire (mais peut etre que le greffon ne prévoit pas cela) de corriger le constrate uniquement sur une zone… (tiens pas de contraste sur les maisons).

    donc sur la ligne disons 1000 on augmente le constrate…donc de x = 500 à x = 700 on va modifier les ondes. mais uniquement pour une zone précise… et à l’exterieur rien ne doit changer.

    alors sur la ligne de l’image on ajoute 0 de x = 0 à 499 ensuite on ajoute une onde de 500 à 700 et on ajoute 0 de x = 701 à largeur de l’image.

    mais ca c’est une transformée de fourier et on va avoir Aj comme amplitude, et Tj les périodes pour la ligne de l’image.

    le dommage du module, à vous lire,
    c’est le mode de calcul de la transformée de fourier. apparemment en faisant du flou de rayons variables. ca existe des fonctions de transformées de fourier… fast fourier transforme. on rentre les valeurs dedans … et on a les coefficiens directs.

    par exemple j’ai 5x²+15x-10 entre x= 0 et x=1289 en envoie en transformée de fourier et ca donne les coefficient des ondelettes.

    j’espere que vous avez compris le principe. j’aime bien les maths mais je suis pas bon pour expliquer.

    patrick L

    5 sept 13 at 14:36

     

Réagir

    

Contrat Creative Commons Hébergé librement chez tuxfamily.org Propulsé par Wordpress !