![]() |
|
Contrôle des écrêtages en temps réel - Version imprimable +- Affinity-Forum (https://www.affinity-forum.fr) +-- Forum : Affinity Photo V1/V2 (https://www.affinity-forum.fr/forumdisplay.php?fid=125) +--- Forum : Tutoriels (https://www.affinity-forum.fr/forumdisplay.php?fid=147) +--- Sujet : Contrôle des écrêtages en temps réel (/showthread.php?tid=7281) |
Contrôle des écrêtages en temps réel - Andre - 04-03-25 Lorsque les tons ou les couleurs sont écrêtés, on perd de l’information dans l’image. Comme en retouche, on se base souvent sur ce que l’on voit à l’écran on peut se tromper car on est pas forcément dans les conditions qui permettent de juger de manière optimale. Pour éviter ces écueils, on a l’histogramme et l’étendue qui nous apportent des éléments plus objectifs.
Les alarmes de l’écrêtage sont des outils qui facilitent aussi l’obtention d’une image qui garde le maximum d’information.
1)La situation actuelle
Develop Persona:
Sur Affinity Photo on a des alarmes d’écrêtage dans Develop Persona sous la forme de 3 boutons dans la barre d’outils en haut à droite :
Avec l’outil Courbes, la courbe Maître agit essentiellement sur l’écrêtage des tons clairs et sombres ce qui se manifeste par des alertes rouges et bleues tandis que les courbes qui modifient les couleurs provoquent des alertes jaunes.
L’avantage de ces alertes c’est que l’image est préservée et les écrêtages sont bien localisés on peut donc juger de leur pertinence et décider d’en tenir compte ou non.
L’inconvénient des alertes jaunes c’est qu’on ne sait pas quelle couleur est concernée, il faut donc jouer avec les courbes couleurs pour savoir quelle couleur agit sur l’alerte jaune.
Photo Persona:
Dans Photo Persona, il faut lancer le Réglage Niveaux et maintenir la touche ALT lorsqu’on modifie le niveau de noir ou de blanc.
On obtient alors pour :
les tons clairs les couleurs opposées des couleurs écrêtées sur un fond blanc
les tons foncés les couleurs écrêtées sur un fond noir
On a donc ici plusieurs inconvénients qui sont :
1- Il faut utiliser le Réglage Niveaux
2- L’affichage de l’écrêtage ne se fait pas en temps réel mais uniquement si on modifie le niveau de noir ou de blanc .
3- Les écrêtages ne sont pas bien localisés puisque l’image est cachée par un fond noir ou blanc.
2)La solution proposée
Pour pallier à tous ces inconvénients, j’ai créé des filtres Texture procédurale.
Ces filtres ont les avantages suivants:
a)Ecretage_Luminosite ou Ecretage_Luma
Ce filtre Ecretage_Luminosite fonctionne comme les alertes dans Develop Persona. Dans ce filtre Ecretage_Luminosite on a les choix suivants :
On peut modifier les seuils d’écrêtages en modifiant les valeurs de a et de b. Ces valeurs peuvent être modifiées et aussi enregistrées dans un Préréglage.
Dans le cas du filtre Ecretage_Luma c’est le critère qui change, on a alors dans la formule :
var L=0.30*R+0.59*G+0.11*B au lieu de var L=(max(R,G,B)+min(R,G,B))/2
b)Ecretage_RGBA ![]() Ce filtre Ecretage_RGBA fonctionne comme les alertes dans le réglage Niveaux de Photo Persona. Pour les tons clairs :
Pour les tons sombres :
Afficher l’écrêtage des couleurs dans les tons sombres et clairs en même temps peut dans certains cas rendre l’image illisible, c’est pour cette raison que j’ai prévu 2 options supplémentaires notées 1 et 2 dans la copie d’écran. Ces options permettent de choisir de cacher les couleurs écrêtées dans les tons sombres ou clairs.
4)Comment utiliser ces filtres
Utilisation dans Photo Persona
Dans la suite de mon exposé je considère que vous avez utilisé le lien situé à la fin de ce texte pour télécharger et installer les macros et les filtres.
Lorsque le filtre est inactif, il suffira d’activer le calque pour le rendre actif et désactiver le calque pour le rendre inactif.
Les paramètres a et b sont modifiables. Ces paramètres compris entre [0 et 255[ (255 est exclu) définissent les seuils au-delà desquels une alerte est déclenchée.
Utilisation dans Develop Persona
Il faut activer 1 des 3 filtres avant de rentrer dans Develop Persona. Dans celui-ci il faudra cocher la case Afficher tous les calques pour rendre les alertes visibles et inversement pour supprimer les alertes. Si la case Afficher tous les calques est désactivée, on pourra toujours utiliser les alertes de Develop Persona. C’est pour cette raison que cette démarche est surtout intéressante pour le filtre Ecretage_RGBA.
On peut maintenant faire tous les ajustements que l’on veut dans Develop Persona et les couleurs écrêtées vont s’afficher en temps réel.
On peut ainsi par exemple choisir les Points noirs et Les Points Blancs pour chaque canal R,V,B dans Develop Persona avec le réglage Courbes ou modifier les Tons foncés et les tons clairs ou la balance des blancs.
![]() 5)Un exemple d’utilisation de ces filtres ![]() Sur cette photo de 2 escrimeurs, la salle était éclairée par la lumière jaune des lampes et les lumières blanches ( ou bleues ) de petites baies vitrées situées à gauche et à droite de la photo. J’ai procédé de la manière suivante :
![]()
![]() Il y a bien sûr de nombreuses manières de procéder selon les goûts de chacun. Je me dois cependant de faire les remarques suivantes :
![]() Je joins dans ce lien :
ECRETAGE :https://drive.google.com/file/d/1mShXracjzfKo_yw5Ve3ZsQd7v-D0rw44/view?usp=sharing
J’espère que ce travail vous sera utile.
Je remercie Ldina du forum officiel (serif) qui a fait naître chez moi l’idée de cette réalisation.RE: Contrôle des écrêtages en temps réel - ch22 - 04-03-25 Très bel effort, que je lirai à tête reposée pour les détails techniques — ma culture sur les filtres de Texture procédurale est nulle. Mais j'ai d'ores et déjà quelques remarques à te transmettre. Tous d'abord, le mot même d'écrêtage est quelque peu trompeur, car il suggère qu'on a perdu quelque chose dans une opération sur l'image et c'est la possibilité même de cette perte qui a poussé à créer ces alertes pour prévenir quand ça arrive. En fait cette alerte annonce simplement qu'une ou plusieurs des composantes RVB est à 0 ou à 255, mais ce n'est pas forcément qu'on a perdu quelque chose. Par exemple, toutes les couleurs complètement saturées, ça se rencontre, et elles sont toutes partiellement écrêtées à 0 (c.à.d. une ou deux composantes RVB nulle). Le même reproche s'applique au terme anglais clipping. Je proposerais ensuite quelques retouches à ta description de la situation actuelle. Dans le Develop Persona — l'alerte jaune signale une ou deux composantes écrêtée, mais pas les trois — le fonctionnement annoncé ne fonctionne pas toujours, ou pas correctement, selon qu'on utilise tel ou tel réglage. Voir mon tuto http://www.ch22.fr/numeric/affinity_photo/ouvre2_tutoAP.html?7b2 Dans le Photo Persona, dire que les écrêtages ne sont pas bien localisés est un peu excessif, puisqu'l suffit de libérer la tache ALT et on voit alors très bien où ça se passe. C'est moins commode, ça, oui : on ne voit pas au premier coup d'oeil, il en faut deux. Enfin... last but not least, il y a des pionniers qui avaient déjà proposé des palliatifs à ces faiblesses que tu déplores dans les alertes actuelles. Moi-même, enfin, il y a cinq ans... http://www.ch22.fr/numeric/affinity_photo/ouvre2_tutoAP.html?3c Cela dit, j'accorde que ta proposition a de l'élégance.
RE: Contrôle des écrêtages en temps réel - Andre - 09-03-25 Bonjour, Merci Ch22 pour toutes ces remarques. Dans le rappel de la situation actuelle, je voulais surtout mettre en avant les points que je voulais améliorer. Pour le petit bouton jaune, je connaissais sa fonction c'est pour cette raison que j'avais utilisé le singulier et des virgules, j'ai corrigé maintenant en remplaçant les virgules par "ou".Ce qui nos donne: Le bouton jaune pour indiquer si un canal (R ou V ou B) est écrêté. Ce bouton jaune est utilisable mais comme je le disais: "L’inconvénient des alertes jaunes c’est qu’on ne sait pas quelle couleur est concernée, il faut donc jouer avec les courbes couleurs pour savoir quelle couleur agit sur l’alerte jaune". Tu constates aussi pour Develop Persona que: "Le fonctionnement annoncé ne fonctionne pas toujours, ou pas correctement, selon qu'on utilise tel ou tel réglage." En ce qui concerne les formules que j'utilise, j'ai constaté que cela fonctionne avec a=0 mais b=255 ne fonctionne pas, il faut utiliser b=254,99 par exemple et là cela fonctionne. Il faut aussi tenir compte des remarques que j'ai faites à la fin de l'article qui engendre des artéfacts de dysfonctionnement. En ce qui concerne la localisation des écrêtages, j'ai maintenant le problème inverse: J'ai tendance à oublier l'utilisation de ces filtres, ce qui fait qu'il m'est arrivé de les laisser actifs lors de l'exportation. J'ai constater ensuite des petits pixels d'alerte sur la photo exportée. Pour le reste tu as entièrement raison. J'ai aussi mis à jour les filtres disponibles en uniformisant les formules et j'en exposerai le contenu très prochainement. Merci encore pour tes interventions et ton implication.
RE: Contrôle des écrêtages en temps réel - Andre - 10-03-25 Bonjour, Additif et mise à jour Dans cette dernière version j’ai uniformisé les formules et rajouté quelques filtres. ![]() Cette photo représente une statue réalisée par France&Hughes Siptrott. J’ai optimisé et uniformisé toutes les formules et j’ai rajouté quelques filtres pour améliorer le repérage des écrêtages ainsi que la possibilité de s’affranchir complètement de l’utilisation du réglage Niveaux…
Dans le cadre bleu on a les filtres qui concernent le contrôle de la luminosité et dans le cadre rouge ceux qui analysent spécifiquement les écrêtages dans chaque canal de couleur. Bien sûr cette pléthore de filtres ne signifie pas qu’il faille les utiliser pour chaque photo mais on a le choix et on peut choisir ce qui convient le mieux en fonction du contexte ou modifier certains filtres pour les adapter à ses exigences.![]() Filtre Ecretage_TousTGB Ce filtre met en évidence les zônes où les trois canaux R,V,B sont écrêtés :
![]() Le filtre Ecretage_TousRGB_Noir Il fait la même chose que le filtre précédent mais avec un fond noir.
![]() Le filtre Ecretage_RGBA nous l’avons déjà décrit précédemment: Il met en évidence chaque canal R,V,B écrêté avec un code couleur différent pour chaque situation. ![]() Le filtre Ecretage_RGBA _ColPrim. Ce filtre fait la même chose que le filtre précédent Ecretage_RGBA mais avec un code couleur différent :
Pour chaque canal écrêté R,V ou B c’est la couleur écrêtée qui apparaît. Cela signifie par exemple qu’une tache Rouge indique que le canal Rouge est écrêté dans les Tons foncés ou dans les Tons clairs et idem pour le Vert ou le Bleu.
![]() Le filtre Ecretage _RGBA_FdNoir utilise le même code couleur que le filtre précédent mais avec un Fond Noir. Lorsque les trois canaux R,V et B sont écrêtés on obtient Blanc. ![]() Le filtre Ecretage _RGBA_FdBlanc fait la même chose que le filtre précédent mais avec un code couleur inverse. On a ainsi :
Les règles d’addition sont toujours les mêmes ainsi :
Comment comprendre et modifier ces formules :
ex: var L=(max(R,G,B)+min(R,G,B))/2; var nb=roundup(b/255-L); var na=roundup(L-a/255); var Y=na*nb; Y*R+(1-Y)*(1-nb)
« var » définit les variables
L représente le critère (Luminosité, canal R ou V ou B,…...)
a et b sont des paramètres modifiables qui représentent l’intervalle au-delà duquel le critère L est écrêté. Pour normaliser ces variables, on utilise a/255 et b/255 dans les formules.
Les valeurs de ces variables normalisées sont comprises entre 0 et 1.
*A noter: on peut utiliser la valeur b=254.9 mais on ne peut pas utiliser la valeur b=255
Les autres variables servent à des calculs intermédiaires pour simplifier l'écriture et ne prennent que 2 valeurs 0 ou 1.
Ainsi on aura :
La dernière expression qui n’est pas précédée par var représente la formule finale dont le résultat sera affecté au canal sélectionné. (R,V,B,A).
A noter que V dans l’interface correspond à G dans les formules.
Exemple : Je souhaite l’affichage de Ecretage_Luminosité sur un fond noir .
Ici le noir va remplacer l’affichage des pixels non écrêtés de l’image. Ce qui correspond à L dans l’intervalle[a/255,b/255] et donc à Y=1
Dans la formule on a Y*R ou Y*G ou Y*B.
var L=(max(R,G,B)+min(R,G,B))/2; var nb=roundup(b/255-L); var na=roundup(L-a/255); var Y=na*nb; Y*R+(1-Y)*na
Il suffit donc de supprimer ces expressions dans chaque ligne on obtient ainsi la formule :
var L=(max(R,G,B)+min(R,G,B))/2; var nb=roundup(b/255-L); var na=roundup(L-a/255); var Y=na*nb; (1-Y)*na
Tous ces filtres mis à jour sont disponibles à l’adresse suivante :
ECRETAGE :https://drive.google.com/file/d/1mShXracjzfKo_yw5Ve3ZsQd7v-D0rw44/view?usp=sharing
Remerciements :
Remerciements à Ldina qui m’a transmis le lien vers l’article de Lisbon que je ne connaissais pas. Cet article m’a donné l’idée de compléter cette petite contribution avec d’autres filtres :
Petit conseil:
Ne pas oublier de désactiver les filtres avant d’exporter une image pour éviter de se retrouver avec des pixels colorés pas toujours visibles au premier coup d’œil.
RE: Contrôle des écrêtages en temps réel - suhaib - 20-03-25 Salut, merci pour le tuto c'est super !! RE: Contrôle des écrêtages en temps réel - leblancmichel1457 - 27-03-25 Super travail, merci, à lire et relire pour bien assimiler: BRAVO!!! |