Local Adjustments/fr

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)
 * 2) les dispositifs de suppression de "yeux rouges", ou de "spot" liés aux imperfections du capteur
 * 3) 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)

Dans la version présente de Rawtherapee, l’algorithme développé est proche dans le principe du point 3) ci-dessus, les U-points. Bien sûr, le code de Nik Software 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.

La version actuelle est très certainement perfectible, au niveau de l'interface graphique - GUI - notamment: Cependant, ces deux points n'affectent pas ni l’utilisation courante, ni la portabilité.
 * pour le suivi et repérage des points de contrôle à l'écran
 * pour les réglages des différents curseurs qui gagneraient à être intégrés au point de contrôle, comme le fait Nik Software (c).

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 points 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;
 * 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 point de contrôle :
 * 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;
 * assurer une transition entre le cœur de la zone traitée et le reste de l'image;
 * etc.

Actuellement, les points de contrôles sont opérationnels, pour le mode Lab, et pour les méthodes suivantes:
 * 1) Color and light : lightness, chrominance, contraste en mode normal et inverse;
 * 2) Blur and Noise : en mode normal et inverse;
 * 3) Retinex : en mode normal et inverse;
 * 4) Sharpening : en mode normal et inverse;
 * 5) Contrast By Detail Levels : en mode normal;
 * 6) Denoise : en mode normal.

Le découpage en quatre zones
Lorsque l’utilisateur sélectionne un point de contrôle,l’image à l’écran montre:
 * un centre, constitué d'un cercle dont on peut faire varier la position avec la souris ou les curseurs;
 * quatre lignes horizontales ou verticales 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 (angle d'inclinaison obligatoirement à zéro). Ces 4 zones ont chacun de leurs sommets reliés par une ellipse.

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, de remplacer l'ellipse, 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.

Les références teinte, chroma, luminance et le principe de l'algorithme en mode "normal"
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.
 * 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 teinte entre la zone centrale et le pixel courant ;
 * 2) puis, un algorithme complexe, s'appuyant sur la notion de deltaE (différence perçue entre 2 couleurs prenant en compte, la teinte, la chroma et la luminance), 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 parabolique selon le cas.

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.
 * 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.

L'algorithme de détection de forme est opérationnel en mode "normal" - son implantation en mode inverse n'a pas de sens - pour tous les modules excepté Denoise.

Cet algorithme va avoir ses performances accrues, si l'utilisateur choisit : "Quality Enhanced" ou "Qualty 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 à l'utilisation de "enhanced" (à noter dans le cas + chroma denoise, un accroissement des besoins en mémoire et du temps de traitement).

L'algorithme utilise toutes ses capacités, si les valeurs de "scope" sont inférieures à 20.

Le fonctionnement en mode inverse
Lorsqu'il est proposé, le fonctionnement en mode inverse est extrêmement simplifié, seul le curseur "transition" permet de moduler l'action.

Nombre maximum de points de contrôle
Par défaut le nombre de points de contrôle est de 8. Vous pouvez choisir n'importe quelle valeur entre 2 et 499. Pour cela il suffit de changer la variable Nspot dans le fichier "option"; par exemple Nspot=12. Il est indispensable de relancer Rawtherapee après cette modification.

Les fichiers *.mip
Afin de permettre le fonctionnement - enregistrement des valeurs pour chaque point de contrôle - un fichier de type texte, assez proche des fichiers pp3 est enregistré à côté du fichier à traiter. Si par exemple vous traitez le fichier ASC4509.NEF, un fichier ASC4509.NEF.mip sera enregistré dans le même dossier. Ce fichier mip contient les données qui seront ensuite passées au programme, via d'une part les processus de type "procparams" et d'autre part des LUT qui permettent le fonctionnement en mode zoom. Lors de la mise à jour d'une nouvelle version, il sera probablement demandé d'effacer les fichiers *.mip afin d'éviter un crash.

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.
 * Le mode inverse, peut servir pour l'essentiel, à réaliser des cadres dégradés. Si vous souhaitez par exemple renforcer un sujet en réduisant la luminosité du fond, il est préférable de réduire lightness de façon globale avec "Lab adjustements", puis d'ajouter un point de contrôle, autour du sujet et accroitre la "lightness" de la même valeur.

Blur and Noise
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.

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.

Sharpening
Seul le mode "RL deconvolution" est proposé.

Contrast By Detail Levels

 * 5 niveaux au lieu de 6 pour le mode pleine image.
 * pas de curseurs pour la gestion de la peau; le système utilisé par les points de contrôle le remplace.

Denoise

 * par rapport au mode pleine image, seul l'outil wavelet est utilisé: donc pas de fonction de Fourier, ni de medians
 * 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 ou coarse.

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 points de contrôles, de leur taille, et du type de traitement.

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

Deux réglages agissent fortement sur les temps de traitement et le besoin en mémoire :
 * denoise qui ajoute selon la taille du point de contrôle de l'ordre de 1 seconde et 1 M de mémoire.
 * quality enhanced and chroma denoise, qui ajoute environ selon le point de contrôle de l'ordre de 0.5 secondes et 0.6 M.

Évolutions
En dehors des habituelles mises aux points, bug, améliorations, réglages, interface, etc. Il serait souhaitable :
 * d'améliorer le GUI, pour pouvoir créer / sélectionner / modifier chaque point de contrôle.
 * de rendre la gestion des fichiers "mip" plus robuste.

Actuellement, je ne sais pas utiliser / sauvegarder les données des courbes dans le fichier "mip" (je sais le faire pour les autres données!). Si ce problème est résolu, les autres modules Lab, de Rawtherapee pourraient eux aussi avoir leurs contrôles locaux (par exemple color toning).

Il doit être également possible, de réaliser un deuxième module "Local RGB"!