Local Adjustments/fr: Difference between revisions

From RawPedia
Jump to navigation Jump to search
m (DrSlony moved page Local Lab controls/fr to Local Adjustments/fr: https://github.com/Beep6581/RawTherapee/issues/5283)
Line 520: Line 520:
La rotation possible du Spot, peut paraître nécessaire ''a priori'', mais:
La rotation possible du Spot, peut paraître nécessaire ''a priori'', mais:
* elle va compliquer le code
* elle va compliquer le code
* il n'est pas sûr que cet apport soit indispensable
* il n'est pas sûr que cet apport soit indispensable, sinon lorsque la taille du RT-spot est proche de l'image entière, et que l'axe du gradient est proche de X ou de Y.


===Et le "Spot removal" pour retirer les défauts===
===Et le "Spot removal" pour retirer les défauts===

Revision as of 11:45, 20 April 2019

Texte rédigé par Jacques Desmis (mise à jour 20 avril 2019)

Quel type de contrôle local?

Lorsqu'on observe les différents logiciels du marché on trouve plusieurs types de contrôles locaux

  1. les contrôles de type "lasso", associés à des calques et masques de fusion, comme par exemple dans Photoshop (c). Ce type de contrôle est majoritaire dans les logiciels (Photoshop, Gimp, Darktable...) et l'avis des utilisateurs est obligatoirement orienté vers ceux-ci au détriment du point 4. ci-dessous moins connu!
  2. les dispositifs de suppression de "yeux rouges", ou de "spot" (poussières...) liés aux imperfections du capteur
  3. les brosses qui permettent des mini corrections locales
  4. les contrôles de type U-points, utilisés jusque récemment dans Nikon Capture NX2 (c), ou comme complément à d'autres logiciels comme Nik Software (c), et récemment dans DxO ou Capture NXD. Pour qui a tâté de ces dispositifs (encore minoritaires aujourd'hui) il n'est pas question de revenir aux calques et masques de fusion! Ce type de contrôle nécessite un apprentissage différent de ceux de type lasso-calque et un désapprentissage cognitif de ceux-ci. De mon point de vue, ils sont globalement plus performants.

Dans la version présente de Rawtherapee, l’algorithme développé est proche dans le principe du point 4. ci-dessus, les U-points avec quelques possibilités pour 2. Bien sûr, le code de Nik Software m'est inconnu, mais il y a quelques années j'ai été séduit par la facilité d'utilisation et les performances des U-points, et j'ai entrepris de développer un produit qui ne ferait pas appel, ni au lasso, ni aux calques, ni aux masques de fusion (même si j'en ai récemment ajouté en complément).

Bien sûr rien n'interdit d'avoir les 3 possibilités (Lasso-calque, retouches spot, U-points) !

Quels défis à résoudre?

Plusieurs problèmes généraux sont à résoudre afin d'obtenir un fonctionnement fluide :

  • permettre un nombre quasi illimité de RT-spot (spot de contrôles);
  • adapter les algorithmes locaux aux problèmes d'échelle, car beaucoup d'algorithmes tiennent compte de la taille de l'image - donc de la zone traitée. Cet aspect est fondamental, notamment avec les courbes qui agissent sur toute l'image;
  • adapter - lorsque c'est le cas - les algorithmes RGB du code principal, en mode L*a*b* utilisé par le contrôle local
  • minimiser l'occupation mémoire et les temps de traitement en sortie JPG et TIF;
  • permettre des mises à jour logicielles faciles en cas d’évolution des algorithmes ou d'évolution du nombre de méthodes ;
  • optimiser les écarts entre "preview" et sortie JPG / TIF;
  • etc.

Pour chaque RT-spot :

  • permettre selon le cas, une action dans la zone sélectionnée ou à l'extérieur de la zone sélectionnée;
  • permettre selon le cas une détection de forme pour délimiter l'action ou une action également répartie sur toute la zone sélectionnée;
  • assurer une transition entre le cœur de la zone traitée et le reste de l'image;
  • etc.

Actuellement, les RT-spot (spot de contrôles) sont opérationnels, pour le mode Lab, et pour les méthodes suivantes:

  1. Color and light : lightness, chrominance, contraste, Color correction, en mode normal avec quatre courbes L=f(L), L=f(H), C=f(C), H=f(H) avec possibilité de masques et inverse ;
  2. Exposure : en mode normal avec possibilité de masques et inverse;
  3. Shadows Highlight : en mode normal avec possibilité de masques et inverse;
  4. Local Contrast;
  5. Vibrance;
  6. Soft Light;
  7. Blur and Noise : en mode normal, inverse;
  8. Retinex : en mode normal et inverse, maintenant avec gestion de la courbe "transmission gain";
  9. Sharpening : en mode normal et inverse;
  10. Tone Mapping
  11. Contrast By Detail Levels : en mode normal avec possibilité de masques;
  12. Denoise : en mode normal.

Développement - Performance - Interface graphique - GUI

L'ensemble de l'équipe de Rawtherapee a contribué au développement, mais en particulier:

  1. Principe des algorithmes - code de base - Jacques Desmis
  2. Amélioration des performances (vitesse, mémoire...) - Ingo Weirich
  3. Interface GUI - Pierre Cabrera. Elle me semble simple et intuitive.

Aide - Tooltip

Vous pouvez désactiver l'aide qui apparaît pour certains sliders, expanders, comboBox,... et qui peut être gênante.

Aller dans "Preferences " - "General" - "Show locallab Tooltip"


Principes généraux

L'Objet RT-spot

Comme je l'ai évoqué, le système utilisé est proche de celui mis au point par Nik Software, avec de grandes différences :

  • chaque RT-spot, peut être considéré comme un objet qui comporte plusieurs champs - à ce jour environ 100 (Il y a 180 événements gérés!), constitués de curseurs, courbes, combobox, checkbox, mask;
  • chaque champ, regroupé en paquets peut être ou non activé, et peut avoir des valeurs variables selon sa nature ;
  • les paquets sont des ensembles cohérents pour l'utilisateur : color & light, exposure, local contrast, shadows highlight, soft light, tone mapping, vibrance, blur and noise, retinex, sharpening, contrast by detail level, denoise ;
  • l'ensemble des RT-spots fonctionne en mode L*a*b* - contrairement au mode pleine image qui est soit en mode "RGB" avant demosaicing, soit en mode "rgb", soit en mode L*a*b*
  • les "RT-spots objets" sont gérés - création, modification, suivi - dans une boucle "for";
  • il n'y a pas de duplication de code.

La délimitation des zones - l’aperçu de la zone RT-spot

Lorsque l’utilisateur sélectionne un RT-spot (spot de contrôle),l’image à l’écran montre:

  • un centre, constitué d'un cercle dont on peut faire varier : a) le diamètre, b) la position avec la souris ou les curseurs;
  • quatre "points" horizontaux ou verticaux dont on peut faire varier les positions avec la souris ou les curseurs.

On aboutit à 4 zones, dont on ne peut faire varier l'orientation. Ces 4 zones ont chacun de leurs sommets reliés par une ellipse imaginaire ou un rectangle (menu settings).

Il est possible de pointer les limites des zones en dehors de la zone "preview".

A terme, il doit être possible, même si l'utilité me semble discutable du fait de l'algorithme de détection de forme - à noter que DxO et Capture NXD n'ont qu'une sélection circulaire - , de remplacer l'ellipse ou le rectangle, par une courbe tracée à l'aide de la souris, à condition que la transformée homothétique de la courbe n'ait pas d'intersection avec la courbe originale. Cette "amélioration" intellectuellement satisfaisante, ne devrait être que d'un apport négligeable (sauf cas spécifiques) - dans le cas des RT-spots. Néanmoins il sera toujours possible de faire coexister les actuels RT-spot avec des contrôles par"lasso" de type Photoshop (c).

Les 3 types de gradient

L'objet RT-spot est conçu sur le principe de 3 gradients:

  • gradient du à la dissymétrie possible. En plaçant le centre du spot dans un angle du Spot et en faisant varier hauteur et largeur on crée naturellement un gradient différentiel avec les 2 gradients suivants :
  • gradient du à la transition - réglable - du centre vers la périphérie du Spot : 2 sliders permettent une variation différentielle
    • "Transition value" : jusque la valeur choisie "x" - l'algorithme est appliqué à 100% du centre jusque "x%" de la zone sélectionnée, puis une décroissance est assurée jusque 0, pour atteindre la périphérie du Spot.
    • "Transition weakening" : fait varier l'intensité géographique de la transition: 1 linéaire, jusque 8 transition à très forte décroissance (puissance 8).
  • gradient de couleur (en fait de deltaE) grâce à la fonction "Scope" (étendue) - cette fonction prend en compte le deltaE. Plus les valeurs sont faibles, moins les écarts de couleur (L, C, H) sont pris en compte, à partir de Scope=80, l'étendue augmente pour à 100 atteindre une action égale quelque soit les couleurs. 3 sliders permettent de faire varier le gradient
    • deltaE Weakening : intensité de l'action en fonction du deltaE - 1 linéaire - jusque 10 à très forte décroissance (puissance 10)
    • Threshold deltaE-scope  : interagit sur les valeurs de deltaE prises en compte et "scope" - réduit ou accroît la sensibilité - à utiliser selon l'image. Les images à fort gamut (fleurs, couleurs artificielles..) supportent des valeurs élevées de ce slider
    • balance deltaE ab-L : Pour une valeur de 1, le calcul du deltaE prend en compte de manière égale les 3 composantes L* , a* , b*. Les valeurs supérieures vont accroître l'action de la L* et réciproquement

Ainsi, tous les modules (y compris CBDL, Retinex, TM, etc.), ainsi que les modules agissant principalement sur la luminance (Color and Light, Exposure, Shadows Highlight...) réalisent de fait des gradients, croissants ou décroissants. Le centre du Spot étant toujours le point de référence.

Les 2 types de RT-spot

Deux types de RT-spot sont proposés:

  • Normal: chaque nouveau spot prend en compte les réglages des précédents - si bien sûr ils sont dans la zone d'action commune - on peut parler d'action récursive.
  • Excluding : chaque nouveau spot réinitialise, l'image à partir des données originales, mais garde pour les calculs, les références de l'image modifiée par les autres RT-spots.

Dans les deux cas, vous avez accès à la quasi totalité des réglages : Color and Light, CBDL, Blur, etc.

Commentaires sur le "Excluding spot":

  • il est dans le principe assez similaire au "Contre point" de Capture NX2(c) et permet de défaire des actions trop invasives par exemple une "bavure" non désirée, ou d'empêcher l'action sur une partie déterminée, par exemple si l'utilisateur souhaite accroître la saturation d'un portrait et qu'il veut exclure l’œil ou une partie avec une exposition différente.
  • l'algorithme que j'ai utilisé est très proche de ceux présents jusqu'ici dans "local adjustements", il est fondé sur les différences de deltaE et aussi sur la structure de l'image (via une transformée de Sobel Canny). Il n'est pas "parfait" mais devrait satisfaire 70% des cas.

Comment se servir de "Excluding spot"

  1. il suffit de placer le nouveau spot sur la zone à exclure
  2. choisir dans le menu "Settings", Spot method = "Excluding spot"
  3. Puis régler "Scope", "Transition", "Spot size" ainsi bien sûr que 4 limiteurs de zone, pour obtenir les effets désirés. Vous pouvez utiliser si nécessaire, des réglages complémentaires (comme pour le spot normal) par exemple "Color and Light", "Exposure", etc...
  4. dans certains cas (faible différence de deltaE...) il peut être nécessaire d'ajuster le curseur "Threshold deltaE-scope" - notamment en réduisant la valeur par défaut.
  5. dans le cas de zones avec aplats, vous pouvez utiliser "Structure" qui pourra aider dans certains cas à une meilleure délimitation de l'action.

Les références teinte, chroma, luminance et le principe de l'algorithme

Afin de mettre en œuvre un algorithme performant de détection de forme :

  • la zone du cercle central, sert de référence. En fonction du diamètre choisi par l'utilisateur, le système calcule, la moyenne de la teinte (hue), de la chroma, et de la luminance (lors de l'utilisation de Denoise, ou de Global quality = Enhanced + chroma denoise", ces différentes valeurs sont calculées après un léger floutage pour réduire l'impact du bruit) .
  • le choix du diamètre de la zone centrale dépend de l'usage. Par exemple pour un feuillage, l'utilisateur aura intérêt à choisir une valeur faible afin de ne sélectionner que le vert du feuillage; à l'inverse pour la peau l'utilisateur aura intérêt à accroître le diamètre afin d'éviter les prises en compte de données parasites (bruit, cils, etc.).
  • pour chaque quart, et en fonction du curseur "scope", le système prend en compte :
  1. en premier lieu de l'écart de deltaE (différence perçue entre 2 couleurs prenant en compte, la teinte, la chroma et la luminance)entre la zone centrale et le pixel courant) ;
  2. puis, un algorithme s'appuyant sur ce deltaE , atténue l'action en fonction de l'écart entre la zone centrale et le pixel courant.
  3. la modification d'action utilise soit une loi linéaire, soit une loi 'puissance' (parabolique, cubique,....) en fonction du réglage de "DeltaE weakening" dans settings (1 conduit à une loi linéaire, 2 parabolique, etc.)

Ceci va permettre de différencier l'action selon les critères énoncés ci-dessus, comme par exemple, si le cercle central se trouve dans un feuillage, de limiter l'action à l'ensemble du feuillage sans toucher à l'arrière plan (ce qui est impossible avec un lasso). De plus si un autre feuillage se situe dans la zone couverte, celui-ci sera également concernés par la modification.

  • l'action sur le curseur transition va permettre de faire varier l'action : si le curseur est réglé sur 50, la moitié (linéaire) de la zone concernée verra une application à 100% de l'effet, puis une transition agira régressivement jusqu'aux limites de la zone. Cette régression est par défaut "linéaire"; vous pouvez changer pour une régression parabolique ou une autre puissance, en agissant sur "transition weakening"
  • si on accroît la valeur de "scope", progressivement l’ensemble de la zone sélectionnée est prise en compte quelque soit la couleur, la chroma et la luminance.
  • si on réduit la valeur de "scope",l'action se limitera aux pixels très proches (en termes de deltaE) de la zone de référence.
  • si scope est supérieur à 80, progressivement l'ensemble de la zone est concernée de manière identique (pas du tout de prise en compte du deltaE). Ce mode de travail doit rester exceptionnel et n'est en général pas recommandé sauf par exemple pour créer des gradients de luminance .

L'algorithme de détection de forme est opérationnel en mode "normal" - son implantation en mode inverse s'accompagne de restrictions.

Cet algorithme va avoir ses performances modifiées, si l'utilisateur choisit : "Quality enhanced + chroma denoise". Ce second choix apporte une très légère réduction du bruit de chroma afin de supprimer les artefacts possibles liés à des images légèrement bruitées (à noter dans le cas + chroma denoise, un accroissement des besoins en mémoire et du temps de traitement).

Au dessus de la valeur de "scope" choisie, l'algorithme "deltaE" n'est pas pris en compte (voir ci-après).

Prévisualisation des zones sélectionnées

Dans "Mask and modifications", si vous sélectionnez "Preview selection deltaE", vous aurez un aperçu des zones de l'image affectée par la sélection.

Les zones sélectionnées - celles qui seront sujettes à être modifiées par la luminance, contraste, chroma,... - apparaissent généralement en jaune (il est possible si souhait de changer cette couleur pour du rouge, du bleu ou du vert..). ou une composition de la couleur initiale avec le jaune. L’ensemble apparaît sur un fond gris.

Les curseurs et courbes agissant sur la couleur sont sans effet avec cette sélection. Les curseurs et courbes agissant sur la luminance ont un effet avec cette sélection.

"Scope" est le réglage le plus sensible puisque il agit directement sur le deltaE.

Les 3 curseurs situés en "Settings": a) Threshold deltaE-scope, b) DeltaE weakening, c) Balance deltaE ab-L ont également un effet avec cette sélection.

Vous pouvez régler l'intensité de la sélection en changeant la valeur "Previewselection=5" dans le fichier "options" : des valeurs comprises entre 1 et 40 sont possibles.

DeltaE utilisé

J'ai choisi la version la plus simple du deltaE.

Si on évalue les valeurs L*a*b* dans l'intervalle : L [0..100] a [-128..+128] b [-128..+128]

  • Si Lc, ac, bc sont les valeurs du pixel courant
  • Si Lr, ar, br sont les valeurs de la référence (converties des valeurs LCH de base)
  • deltaE = sqrt(SQR(Lc - Lr) + SQR(ac - ar) + SQR (bc - br))

Correspondance avec la valeur de "scope":

  • il y a une relation entre scope et deltaE et l'affaiblissement (weakening), et "threshold deltaE-scope"
  • threshold deltaE-scope agit sur l'étendue de prise en compte
    • par défaut threshold deltaE-scope = 2 conduit à des valeurs de deltaE prises en compte de 2 à 155
    • si vous réduisez threshold deltaE-scope, la valeur maximale va être réduite jusque 130, à l'inverse si vous augmentez au maximum, le maximum deltaE sera de 230. De mon point de vue il faut réserver cette situation aux images avec de très grosses variations de gamut, par exemple des fleurs aux couleurs éclatantes. Par contre accroître légèrement threshold deltaE-scope (3 à 5) permet un rendu différent du système.
      • un deltaE de 230 ne peut se rencontrer que dans des cas extrêmes, par exemple 80 d'écart sur L, 158 sur a, 145 sur b... (uniquement accessible pour les très grands espaces de travail, avec des couleurs de base telles fleurs éclatantes ou couleurs artificielles, et action importante sur les sliders chroma et luma)

Cas avec threshold deltaE-scope = 2 (défaut)

  • les deltaE pris en compte varient de 2 (scope=0) à 155 (scope=100). Bien sûr ce choix est arbitraire on peut changer les 2 seuils mini et maxi (voir ci-dessus), mais il semble fonctionner dans une majorité de cas.
  • 2 n'est pas perceptible par l'oeil (mais ici ce n'est pas l'objectif recherché)
  • 155 correspond à des valeurs très élevées, par exemple 80 d'écart sur "a" (composante rouge vert), 80 sur "b" (composante bleu jaune"), 80 sur "L" ou autre exemple 50 sur "L", 105 sur "a" et 100 sur "b"

Par exemple lorsque "scope" est réglé sur 15, ceci signifie que toutes les couleurs telles que deltaE < 3 seront traitées telles quelles sans atténuation. Celles avec deltaE > 27.5 seront ignorées, les valeurs intermédiaires sont affaiblies d'autant plus qu'on se rapproche de deltaE = 27.5, par exemple:

  • un deltaE de 3 correspond par exemple à (il y a d'autres combinaisons...):
    • delta L = 2
    • delta a = 1
    • delta b = 2
  • un deltaE de 15 correspond par exemple à (il y a d'autres combinaisons...) :
    • delta L = 10
    • delta a = 9
    • delta b = 6.6
  • ou encore un deltaE de 27.5 par exemple à (il y a d'autres combinaisons...) :
    • delta L = 15
    • delta a = 14
    • delta b = 18.3

Lorsque on augmente "scope", par exemple à 50, toutes les couleurs telles que deltaE < 4.5 seront traitées telles quelles sans atténuation. Celles avec deltaE > 80 seront ignorées, les valeurs intermédiaires sont affaiblies d'autant plus qu'on se rapproche de deltaE = 80, par exemple:

  • un deltaE de 80 correspond par exemple à (il y a d'autres combinaisons...):
    • delta L = 20
    • delta a = 62
    • delta b = 44,7

Etc.

Algorithme complémentaire - détection de structure

L'algorithme de Sobel-Canny permet en association avec le filtre "Guide Filter" qui lisse les irrégularités, d'utiliser la différence entre la référence (cercle central) et la valeur de la structure en chaque point de l'image.

Cet "écart" est ajouté au calcul de deltaE pour mieux déterminer les contours et les zones à réduire l'effet. Ce système est efficace, si:

  • la référence est dans une zone avec une assez importante structure
  • la zone à affaiblir est un aplat ou avec une structure faible.

Structure est implanté dans "Color and Loght" et "Exposure" ainsi que dans "Excluding spot". Dans le sens Aplats vers structure vous pouvez agir si nécessaire, sur "Threshold structure" (Settings), la valeur est fonction du niveau de bruit.

Il est possible d'utiliser "structure" lorsque :

  1. les différences de deltaE sont très faibles et qu'on souhaite une différenciation
  2. et lorsque que se trouve accolée une zone avec structure et une autre avec aplats

Algorithme complémentaire - Soft process (Soft radius)

Certains algorithmes peuvent être agressifs:

  • Color and light
  • Exposure
  • Tone Mapping
  • Contrast By Detail Level
  • Retinex

L'utilisation de "GuideFilter" sur la variation de luminance entre l'image originale et l'image modifiée, va permettre d'adoucir le résultat.

Nota : Shadows-Highlight possède par conception cet algorithme.

Actuellement seule la luminance est traitée... rien ne s'oppose à traiter la dimension "couleur" soit sous la forme de "Chroma" (C*) soit sous la forme des 2 composantes a* et b*

Algorithme complémentaire - Mask

Les 4 modules "Color and Light" , "Exposure", "Shadows Highlight", "CBDL" ont la possibilité d'utiliser un masque. Celui-ci vise 2 objectifs:

  1. augmenter la sensibilité de détection et donc permettre une meilleure sélection des objets (objectif principal), sans modifier l'image, lorsque l'algorithme deltaE n'est pas suffisamment pertinent (rare).
  2. aboutir à des effets spéciaux en combinant l'image du masque et celle originale.

Dans les 2 cas, l'image est modifiée avant le traitement par les algorithmes de "Color and Light", "Exposure", "Shadows Highlight", "CBDL" mais ces modifications sont prises en compte par les algorithmes de "locallab" que ce soit la détection de forme, les transitions, ... L'utilisateur dispose de 3 courbes qui sont au démarrage toutes positionnées à 1 (maximum) :

  • C=f(C) la chrominance varie en fonction de la chrominance, l'utilisateur peut ainsi diminuer la chroma pour améliorer la sélection
  • L=f(L) la luminance varie en fonction de la luminance, l'utilisateur peut ainsi diminuer la luminosité pour améliorer la sélection
  • L et C = f(H) la luminance et la chrominance varient en fonction de la teinte, l'utilisateur peut ainsi diminuer la luminosité et la chroma pour améliorer la sélection

De plus, un curseur "radius" - utilisant "GuideFilter" permet de diminuer les artefacts et adoucir les transitions. Vous pouvez modifier le masque - avec bien sûr l'incidence inverse sur l'image - à l'aide de 3 curseurs qui jouent:

  • sur la chroma en adaptant sa force à la valeur réelle rencontrée qui dépend de plusieurs facteurs dont la grandeur de l'espace de travail (sRGB, Prophoto, ...)
  • sur le gamma et la pente (même principe par exemple que le gamma sRGB) en agissant uniquement sur la luminance L*, avec une courbe sans discontinuité.

Comment procéder, pour l'essentiel pour l'objectif n°1 ?

  • pour satisfaire l'objectif n°1 il est impératif de ne pas (ou peu) modifier la zone où se trouve le "spot". A ce jour (un travail sur le GUI est en cours qui permet de visualiser sur la courbe elle même la valeur de L, C ou H à éviter de modifier) c'est à l'utilisateur de positionner correctement le point des courbes qui ne sera pas modifié. pour cela sous la ligne "Mask and modification" apparaît les 3 valeurs (en mode linaire) de la chroma, de la luminance et de la teinte correspondant à la "référence", il suffit de positionner le sommet de la courbe à chacun de ces points selon le cas.
  • ensuite en examinant le masque, vous pouvez réduire très raisonnablement les valeurs de chroma, ou luma, selon le cas. Des valeurs de 0.8 à à.9 doivent être suffisante dans la majorité des cas
  • pour satisfaire l'objectif n°1, il est souhaitable que le(s) curseur(s) "blend" soi(en)t à zéro.

Pour l'objectif n°2, tout est fonction de ce que l'on veut faire, mais je recommande quand même d'appliquer le même processus que ci-dessus, sinon que les valeurs d'affaiblissement peuvent être plus importante. A noter que le masque utilisé dans n°2, sera aussi utilisé pour accroître la sélection.

  • pour satisfaire l'objectif n°2, il est souhaitable que les curseur "blend" ne soient pas à zéro: si vous réglez blend avec des valeurs négatives, l'image complémentaire au masque sera soustraite de l'image originale, et ajoutée avec des valeurs positives de "blend".

Plusieurs assistances sont proposées pour aider aux processus :

  • visualisation du masque
  • visualisation des modifications sans le masque
  • visualisation des modifications avec le masque

et également pour l'action sur la structure, l’aperçu d'un masque de structure. Il n'est - ceci peut paraître évident - pas possible d'utiliser plusieurs masques en même temps...

A noter la consommation importante de mémoire liée à ces masques lors de la sélection de zones étendues.

Le fonctionnement en mode inverse

Lorsqu'il est proposé, le fonctionnement en mode inverse est simplifié, certaines fonctions ne sont pas implémentées (mask, certaines courbes,...).

Avoid color shift

Cette case à cocher vise deux objectifs :

  • mettre les couleurs dans le gamut de l'espace de travail courant (working profile) en utilisant une colorimétrie relative ;
  • ajuster les couleurs à l'aide d'une correction "Munsell" - notamment les rouges-orangés et les bleus-pourpres, lorsque la saturation dans le domaine L*a*b* a évolué notablement.

Quelques particularités du mode local (par rapport à Lab adjustements)

Voici quelques informations qui peuvent intéresser l'utilisateur. Ces informations sont souvent des particularités du mode local

Color and Light

  • Les algorithmes utilisés pour la luminance et le contraste sont différents de ceux utilisés par "Lab adjustements", ce qui peut amener quelques différences de rendu.
Original
Avec Color correction grid
  • Vous disposez d'une fonction "Color correction grid" qui peut être selon le cas :

Deux méthodes sont possibles: Color Toning et Direct

  • Color Toning
  1. Dans ce cas, la luminance est prise en compte dans la variation de la chroma
  2. l'équivalent d'une fonction H=f(H) si le "point blanc" de grid reste à zéro et si vous ne faites varier que le "point noir"
  3. l’équivalent d'un "Color toning" si vous faites varier les 2 points.
  • Direct
  1. Dans ce cas, il y a action directe sur la chroma


Vous pouvez agir sur l'effet souhaité avec "strength", mais aussi avec les autres fonctions notamment "scope" qui permet de délimiter l'action, par exemple en isolant une couleur parmi d'autres.
















  • Le mode inverse, est maintenant doté de la fonction "scope", il peut servir pour l'essentiel, à réaliser des dégradés (gradient), simulation de vignettage, ou de cadres dégradés, ou générer des effets spéciaux. Dans le cas de cadres dégradés, si vous sélectionnez -100 pour "lightness", et réduisez la chrominance, et sélectionnez une valeur de "scope" supérieure à 75, la "bordure" sera noire.


Courbes

  • Une courbe L=f(L) et une C=f(C) permet de moduler la luminance ou la chrominance pour chaque RT-spot (spot de contrôle) en fonction de la luminance ou de la chrominance.
  • Une courbe L=f(H) permet de moduler la luminance pour chaque RT-spot en fonction de la teinte.
  • Une courbe H=f(H) permet de moduler la teinte pour chaque RT-spot en fonction de la teinte.

Pour les rendre actives, il est nécessaire d'activer la combobox "Curves type".

Color and Light dispose de deux améliorations : mask et structure.

En mode "inverse" les courbes L=f(H) et H=f(H) ne sont pas implémentées ainsi que les masques et l’aperçu des modifications.

Exposure

Ce module "ressemble" à celui en mode global RGB, mais :

  • il fonctionne entièrement en mode L*a*b*, d'où des différences de rendu;
  • il n'a pas les curseurs "lightness, chroma et contraste" dont les fonctions sont déjà présentes dans "Color and Light"
  • un curseur "chroma compensation" est une particularité du mode L*a*b* : il permet d'éviter une variation de saturation apparente - le réglage par défaut devrait convenir dans une majorité de cas.
  • il y a une seule courbe "contraste", similaire à celle de L=F(L) présente dans "Color and Light". Il est évident que le rendu de cette courbe est différent de "Tonecurve" qui agit en mode RGB. Vous pouvez si vous le souhaitez activer les 2 courbes L=f(L) dans "Color and Light" et "Exposure"
  • ne pas hésiter à utiliser modérément "highlight compression" qui améliorera la sélection.

Exposure dispose de deux améliorations "mask" et "structure".

Il peut servir de gradient (graduated filter), dans ce cas choisir des valeurs de "scope" élevées.

Shadows-Highlight est une alterantive possible, notamment si le RT-spot est dans une zone d'ombre importante.

Warm - Cool

Un curseur permet :

  • de faire varier la "chaleur" de la zone sélectionnée.
  • de réduire ou supprimer certains artefacts de couleurs, par exemple dus à de multiples illuminants,...

A noter que l'algorithme ne correspond pas à une balance des blancs - même si cela en a l'apparence. L'algorithme utilise une partie de CIECAM02, le processus CAT02 qui est probablement la meilleure adaptation chromatique disponible. Par rapport à la référence D50, lorsque vous souhaitez réchauffer l'image, le curseur va au contraire abaisser la température des "viewings conditions", et bien sûr l'accroître lorsque vous souhaitez "refroidir" la zone concernée. A noter que vous pouvez obtenir un résultat similaire pour l'image entière en utilisant le module CIECAM02, avec :

  • "Scene conditions" : WP model ==> free temp + green + cat02, temperature = 5000K, Surround = average, CAT02 adpatation = 100, Yb=18, Scene absolute luminance = 400
  • aucun réglage dans "Image adjustements"
  • "Viewing conditions" : CAT02 adaptation = 100, Viewing absolute luminance = 400, Surround = average, Yb=18, et bien sûr réglage de la température souhaitée.

Shadows Highlight

Seul le mode "Lab" est disponible.

Cet algorithme associé à la notion de RT-spot et de "scope" est une alternative à Exposure.

Il est doté d'un module "inverse" et de masques.

Il peut servir de gradient (graduated filter), dans ce cas choisir des valeurs de "scope" élevées.

Dans les cas d'importants débouchage des ombres, l'utilisation de "Local denoise" peut être nécessaire.

Vibrance

Module similaire à celui du menu principal.

Tone Mapping

Module similaire à celui du menu principal.

Blur and Noise

Blur n'est actif que si Radius supérieur ou égal à 2.

En réduisant notablement la valeur par défaut de "scope" et en agissant éventuellement sur "Luminance only" il est possible d'obtenir des flous différenciés selon la teinte.

Vous disposez de 2 méthodes :

  • "normal" : l'algorithme de détection de forme a été amélioré. Il se rapproche de celui utilisé dans les autres modules.
  • "inverse" : ce nouvel algorithme utilise les mêmes processus que "normal" et par l'utilisation de "scope" l'utilisateur peut cibler plus précisément l'action.

Attention:

  • travailler en mode inverse, va flouter des zones importantes qui ne pourront pas être corrigées ensuite
  • l'action de "scope" peut être déroutante dans certains cas : par exemple pour un portrait les yeux - différents de la peau - seront floutés si "scope" est trop faible.

Retinex

Le nombre de réglages est réduit, par rapport au mode standard. D'autre part, "Retinex local" agit en fin de processus contrairement au mode standard qui est au début du processus Raw. Vous disposez en plus du module "raw" Retinex pleine image

  • un curseur "Chroma" qui permet d'agir sur la couleur en plus de la luminance
  • un curseur "dehaze" qui utilise l'algorithme dehaze pleine image. La combinaison des 2 algorithmes de réduction du voile atmosphérique (Retinex et Dehaze) permet une résolution élevée du traitement du voile atmosphérique, chacun des algorithmes ayant ses points forts - en particulier Retinex permet de différencier avant et arrière plan et Dehaze est globalement plus facile et pertinent dans l'action.

Par exemple pour traiter une image fortement brumeuse

  • en première étape agir dans le menu principal avec la fonction "dehaze", dans certains cas l'arrière plan ne sera pas ou peu impacté et restera brumeux
  • puis sélectionner "locallab" et "Retinex", positionner le spot dans la zone brumeuse puis
    • agir sur "dehaze"
    • puis régler "radius" avec une valeur élevée (supérieure à 100 ou 150)
    • régler contraste avec une valeur faible (inférieure à 100)
    • agir sur "scope", strength et chroma pour obtenir l'effet souhaité.

Sharpening

Seul le mode "RL deconvolution" est proposé, vous devez travailler en mode 1:1 (zoom 100%) .

Contrast By Detail Levels

  • 5 niveaux au lieu de 6 pour le mode pleine image.
  • à utiliser de préférence en mode 1:1 (zoom 100%)
  • pas de curseurs pour la gestion de la peau; le système utilisé par les RT-spot le remplace.
  • ajout d'un curseur pour la chroma
  • ajout de "image résiduelle" avec 2 possibilités - "Clarity" - et contraste
  • ajout d'un curseur "Blur levels" qui va permettre :
    • de flouter le résultat lors du traitement des défauts de capteur
    • d'opérer un flou sélectif par niveau, par exemple pour simuler un Bokeh

Cet algorithme permet plusieurs améliorations "locales"

  • par exemple réduire les défauts de la peau
  • accroître les perspectives et le relief sur des zones de couleurs et de structure (comme le wavelet), mais en limitant l'action (par scope) à des zones délimitées.
  • retirer des défauts (tâches étendues grises ou de couleurs) sur le capteur

Rappel - si la zone sélectionnée est grande et comprends plusieurs objets similaires en "teinte", "chroma", luma" et 'contrast", l'algorithme ne sélectionnera que celles-ci, laissant le reste de l'image inchangée.

Denoise

Cette fonction permet 6 usages et doit être utilisé en mode 1:1 (zoom 100%):

  1. grâce à la sélection "Global quality" - enhanced + chroma denoise, elle réduit très légèrement sans intervention de l'utilisateur le bruit de chroma pour améliorer la sélection dans des images légèrement bruitées
  2. Ne sélectionner qu'une zone à débruiter (par couleur...) et laisser le reste de l'image bruitée
  3. Débruiter une zone qui aura vu le bruit s'accroître notamment à cause d'un accroissement important de l'exposition, ou de débouchage des ombres
  4. Venir en complément de l'algorithme principal. Par exemple faire un réglage général a minima, puis dans certaines zones choisies réduire le bruit plus profondément.
  5. Comme le traitement "local" est plutôt en fin de processus (le module Denoise principal est en début), il va autoriser une réduction du bruit généré par les traitements intermédiaires.
  6. apporter un flou gaussien par niveau (pour les faibles niveaux 0, 1 et 2) pour simuler un bokeh


  • Zone minimum d'action pour les ondelettes (wavelet) : 128 pixels * 128 pixels
  • moins de curseurs et de courbes
  • par contre, vous pouvez différencier l'action sur la luminance et la chrominance en fonction de la grosseur du bruit - fine (3 niveaux pour la luminance) ou coarse.
  • de plus vous avez à votre disposition, 1 curseur "DCT"
    • l'algorithme utilise pour la luminance une transformée de Fourier (FFT - fast fourier transformed - DCT discrete Cosinus transformed)
    • les curseurs à 0, l'action de la DCT est maximum, si vous souhaitez restituer des détails, accroissez les valeurs.
  • Un curseur "Scope" permet de faire varier - avec un algorithme simplifié - l'action selon le deltaE du sujet, par exemple renforcer l'action sur la peau et laisser le fond bruité (luminance et chrominance). Au delà de "scope=80", progressivement - jusque 100 - toute la zone sélectionnée aura la même intensité de dé-bruitage, bien sûr en tenant compte de la transition.
  • Un très léger accroissement de la saturation est exécuté, si vous actionnez l'un ou l'autre des curseurs "chroma".

Qualité améliorée

  • Si vous déplacez le curseur "coarse" à 1, aussi bien pour la luminance que pour la chrominance un algorithme "amélioré" est utilisé - en réalité il fait "2 passes".
  • A la position "1" l'algorithme améliore seulement l'algorithme "fine"
  • A partir de "2" l'algorithme "coarse" est activé.

Equalizer

Vous disposez de 2 "equalizers", aussi bien pour la luminance que la chrominance.

  • Le premier renforce (par défaut) l'action sur les basses lumières. A "0" l'action sur les lumières hautes / moyennes / basses est identique.
  • Le second équilibre la force d'action sur le canal "rouge -vert" ou sur le canal "bleu - jaune"

Bilateral filter

Ce dispositif est la réplique du "Impulse denoise" des rubrique générales. de mon point de vue son action va au delà du bruit d'impulsion.


Nota : vous pouvez exclure, ou moduler l'action à l'intérieur d'une première zone sélectionnée, en ouvrant un RT-spot "Excluding spot" et en agissant sur Scope.

Cas d'usage spécifique : réduction des défauts (capteur sale, yeux rouges, ...)

Par conception "Local Adjustements" n'a pas été conçu pour éliminer ces défauts. Néanmoins par effet de bord, certains défauts apparents et gênant en photographie peuvent être réduits voire supprimés. Ceci bien sûr n'est pas incompatible avec d'autres modules plus spécialisés incorporés ou non à "Local adjustements"... Au moins 3 fonctions présentes, en adaptant l'usage, peuvent être utilisées, séparément ou ensemble :

  • "Color and light" pour des défauts ponctuels ;
  • "Contrast by detail level" pour des défauts répartis ;
  • "Blur and Noise" en complément éventuel : attention cette action est assez destructrice - à utiliser avec modération.

Vous pouvez agir soit:

  • directement, cas général, sur le fichier "raw", ou "TIF", etc.
  • soit sur le fichier flat-field si vous en avez élaboré un.

Utilisation avec le module "Color and Light"

  • Activez "Color and Light"
  • Vous pouvez utiliser l'équivalent d'une fonction "yeux rouges" en choisissant un encadrement assez serré de l’œil - sélecteur circulaire centré sur le rouge, délimiteurs de spot proches de l’œil - une valeur de scope réduite, puis agir sur réduction "lightness" -100, et réduction chrominance -100.
  • De la même manière vous pouvez réduire les défaut du capteur de type "Spot IR", en choisissant un encadrement assez serré du défaut - sélecteur circulaire centré sur le défaut, délimiteurs de spot proches du défaut - puis agir sur "chrominance" en réduisant la valeur, agir éventuellement sur "scope" pour réduire l'étendue de l'action.
  • Vous pouvez dans des cas simples, réduire les défauts de type "capteur encrassé" notamment lorsque celui-ci est gras. Ceci se traduit par des taches qui apparaissent sur les fonds unis. Pour cela choisissez un encadrement assez serré du défaut - sélecteur circulaire centré sur le défaut (adaptez la taille du spot) , délimiteurs de spot pas trop proches du défaut pour permettre une transition peu visible. Puis: a) réduisez "Transition" à des valeurs faibles; b) agissez sur "luminance" et éventuellement sur "chrominance" pour approcher le rendu de la zone polluée à celui de la zone saine; c) agir modérément sur "scope" pour moduler l'action souhaitée.

Utilisation avec le module "Contrast by detail levels"

Dans le cas de capteur encrassé (de type "graisse"), et lorsque la zone est importante ou pour une série de petits défauts, Il peut être utile d'utiliser "Contrast by details levels" qui va agir comme un outil "wavelet" sur la luminance et aussi si nécessaire sur la chrominance. Dans ce cas:

  1. mettez le Spot de sélection sur un défaut prononcé (en adaptant sa taille si nécessaire);
  2. choisissez une zone de sélection large pour couvrir la majorité de la surface concernée par les défauts;
  3. Sélectionnez une valeur de transition assez importante;
  4. Activez "Contrast by detail levels" et agissez sur les niveaux 3 et 4 ou plus faibles en réduisant le contraste (valeurs inférieures à 100) et en agissant si nécessaire sur le curseur chroma.
  5. Agissez éventuellement sur "Blur levels" (qui fonctionne par niveaux) pour flouter le résultat.

Temps de traitement et utilisation de la mémoire

Lorsqu'on utilise la sortie JPG ou TIF, et pour le mode "normal", l'algorithme n'effectue les calculs que pour la zone délimitée. En ce sens les temps de traitement et l'occupation mémoire sont réduits. Bien sûr le temps de traitement va dépendre du nombre de spots de contrôles, de leur taille, et du type de traitement.

Si on exclue "Denoise" et "Sharp", les temps de traitement sont de l'ordre de quelques dixièmes de seconde par spot de contrôle, et le besoin en mémoire de l'ordre de quelques centaines de M.

Trois réglages agissent fortement sur les temps de traitement et le besoin en mémoire :

  • denoise qui ajoute selon la taille du spot de contrôle de l'ordre de 1 seconde et 1 M de mémoire.
  • quality "enhanced + chroma denoise", qui ajoute environ selon le spot de contrôle de l'ordre de 0.5 seconde à 1 seconde et 0.6 M.
  • "mask" ("Color and Light", "Exposure", "Shadows Highlight", "CBDL") accroît nettement les besoins en mémoire. Attention si votre machine a des capacités limitées et si vous sélectionnez une grande zone.

Aspects logiciels

Comme le traitement est itératif pour chaque Rt-spot, il est important de connaître l'ordre

  • Blur and noise, Denoise, Vibrance, Tone mapping, Contrast By Detail Level, Shadow Highlight, Soflight, Local contrast, Sharp, Retinex, Exposure, Color and light, Avoid clor shift
  • Comme évoqué dans le texte, certaines fonctions ont été réécrites, soit pour s'adapter à l'échelle, soit par qu'elle fonctionne en mode Lab au lieu de RGB

Quelques questions ?

Et le détourage des objets ?

C'est une question fréquemment posée !

  • Dans une majorité de cas, l'algorithme de détection de forme sera largement suffisant pour ne sélectionner que ce qui est nécessaire, avec à la fois la commande "scope" et les curseurs prévus dans "settings" - shape detection et transition
  • l'utilisation de "exclude spot" doit permettre de résoudre les cas délicats
  • les masques prévus dans 4 modules - Color and Light, Exposure, Shadows Highlight", CBDL doivent aussi permettre d'améliorer la sélection dans quelques cas

Si un spécialiste GUI est capable par exemple d'agir sur les 4 ellipses et les transformer en courbes de Beziers (chacune inscrite dans le rectangle centre X Y), alors avec une simple LUT on pourrait simuler un détourage... pour les irréductibles des détourages, calques...

Comment réaliser un gradient de luminance (graduated filter) ?

La réponse peut étonner, mais avec quasiment tous les modules ! Plus sérieusement 3 modules permettent seuls - ou combinés entre eux - de réaliser ce gradient de luminance

  1. shadows-highlight (celui que je recommande)
  2. exposure
  3. Color and light

Pour cela :

  • utiliser la dissymétrie possible de la forme du Spot, en plaçant le centre proche soit de la zone sombre dont doit partir le gradient - en évitant si possible le point le plus sombre lorsque la luminance est très faible, soit de la zone lumineuse - en évitant si possible le point le plus lumineux lorsque la luminance est très forte
  • par exemple si la zone sombre est en bas à gauche et qu'on souhaite éclaircir l'image en diagonale, placer le spot en bas à gauche et ouvrir le spot vers le haut et à droite avec l'angle souhaité pour le gradient
  • agir sur "shadows" ou "highlight" - avec le module 1. ou "exposure" avec le module 2., ou les sliders et courbes du module 3.
  • régler - accroître la valeur de "scope" pour obtenir l'effet souhaité (exclusion ou non de certaines couleurs...)
  • agir éventuellement sur les curseurs "Shape detection" pour accrôitre ou réduire l'effet - selon la valeur de "scope"
  • régler la transition, et transition weakening pour obtenir l'affaiblissement souhaité

Essayez aussi les fonctions "inverse" !

La rotation possible du Spot, peut paraître nécessaire a priori, mais:

  • elle va compliquer le code
  • il n'est pas sûr que cet apport soit indispensable, sinon lorsque la taille du RT-spot est proche de l'image entière, et que l'axe du gradient est proche de X ou de Y.

Et le "Spot removal" pour retirer les défauts

En consultant les paragraphes précédents, je pense qu'une majorité de défauts peuvent être traités avec les modules actuels:

  • yeux rouges
  • défauts - poussière sur le capteurs
  • Spot IR (Infrarouge)
  • graisse

Avec 2 modules - Color and lght, CBDL.

Peut être faut-il une "adaptation" du GUI pour cibler une forme (taille de la zone) et l'emplacement de la zone à traiter, et faciliter le process.

Mais bien sûr ceci n'est pas incompatible avec un futur module "classique" à base de "brosse"...

A quoi sert l'association Retinex - Dehaze ?

Chacun des 2 algorithmes a ses points forts

  • Dehaze est très performant globalement, mais "ignore" les arrières plans
  • Retinex est performant sur la différenciation avant - arrière plan, mais peut produire du halo

La combinaison des 2 : Dehaze à partir de l'image globale (ou locale) et Retinex pour la partie locale de l'arrière plan, peremt de résoudre la quasi totalité des cas

Pourquoi y a-t-il un "masque" pour chacun des modules concernés et pas un "masque global" ?

Simplement parce que chacun des modules "Exposure" , "Color and "Light", "Shadows highlight", "CBDL" subit les traitement récursif des autres modules - exactement comme l'ensemble des modules de Rawtherapee, interagissent l'un sur l'autre.

Avoir un masque global, revient par comparaison à n'avoir qu'une seule courbe pour gérer l'ensemble des courbes de Rawtherapee.

Bien sûr, par simplification, il n'y a que 4 modules avec "masques", rien n'interdit de l'étendre aux autres...ce n'est qu'une question de temps...si la demande s'en fait sentir

Pourquoi n'y a-t-il pas toutes les fonctions de Rawtherapee avec le mode "local" ?

Le mode local est fondé et articulé autour du concept "L*a*b*" et de la notion de deltaE (Lab nécessaire), une majorité de modules "principal" ont leur équivalent "local"

Par contre, les modules "rgb" après démosaicing ou "RGB" avant demosaicing nécessiterait une autre approche que le concept du deltaE. Donc rien d'impossible, par exemple pour réaliser un module "balance des blancs locale"...

Comment modifier uniquement l'ensemble des feuillages d'une image ?

L'algorithme permet de ne sélectionner qu'une couleur, par exemple les feuilles d'un arbre.

Pour cela:

  • la taille du spot doit être déduite pour ne cerner que la couleur concernée.
  • Ajuster "scope" sur des valeurs faibles.
  • Étendre l'action du RT-spot pour prendre en compte - si vous le souhaitez - l’ensemble des feuillages de l'image (par exemple si il y a plusieurs arbres)
  • Agir sur les champs que vous souhaitez modifier (luminance, saturation, etc.)