Bonjour,
Dans les tutos précédents, j’ai abordé la question de la décomposition des images sous l’angle des réglages. Maintenant je vais étendre la démarche avec les formules que l’on trouve dans la littérature ou les vidéos.
Cela est beaucoup plus simple qu’il y parait lorsqu’on utilise un outil comme le filtre dynamique Texture procédurale.
Avant de voir les formules il est intéressant de les comprendre. Pour comprendre ces formules, nous allons utiliser le réglage des couleurs avec les « Glissières » qui sont représentées ci-dessous.
Chaque pixel est représenté par des valeurs R,V,B dont chacune varie entre 0 et 255 en mode 8 bits et entre 0 et 65535 en mode 16 bits.
On peut aussi choisir comme ici de représenter ces valeurs en pourcentage.
![[Image: 1-glissiere.jpg]](https://i.postimg.cc/68bZJSzm/1-glissiere.jpg)
Dans l’exemple qui est développé ici les composantes R,V,B sont classées selon leurs valeurs on a ainsi :
Max(R,V,B)=200, Med(R,V,B)=150, Min(R,V,B)=100
A mon avis, ce schéma est essentiel pour comprendre ce qui suit.
![[Image: 2-0-Intervalles.png]](https://i.postimg.cc/sQLGQ0vN/2-0-Intervalles.png)
Les formules utilisent des valeurs normalisées entre 0 et 1, d’où l’intérêt de cette représentation en pourcentage. Autre particularité les formules sont en minuscules et utilisent une notation anglaise pour les 3 canaux: R,G,B au lieu de R,V,B
Ce qui nous donne ici :
max(R,G,B)=0,78 ; med(R,G,B)=0,59 ; min(R,G,B)=0,39 ;
On peut donc distinguer ici 3 intervalles :
Intervalle 1 :
Les 3 composantes RVB occupent tout l’intervalle ce qui a pour conséquence de rajouter du Blanc à la couleur du pixel. Donc Min représente la quantité de Blanc ajoutée à la couleur du pixel.
Min détermine la pureté de la couleur.
Intervalle 2 :
C’est l’intervalle qui va déterminer la Couleur, la Saturation et la Teinte.
Min n’intervient pas sur la teinte, puisqu’il est à 0 au début de l’intervalle.
Max et Med sont les composantes qui définissent la Teinte sur le cercle chromatique. Ici, dans notre exemple, on part du Rouge qui est dominant et on se déplace en direction du Vert sur le cercle chromatique.
Max et Med déterminent la teinte et l’intensité de la couleur.
Intervalle 3 :
Les composantes RVB sont absentes de tout l’intervalle ce qui rajoute du Noir à la couleur.
Dans le cas où MAX=MIN, tous les curseurs sont alignés et Max-Min=0.
Les informations qui déterminent la couleur n’existent pas et on obtient des valeurs de GRIS entre le NOIR (=0) et BLANC (=1) qui dépendent de la valeur R,V,B.
Nous avons maintenant toutes le informations pour comprendre les formules
https://en.wikipedia.org/wiki/HSL_and_HSV
(Il faut utiliser ce lien qui aboutit à la version anglaise et lancer un traducteur. La version francaise de l'article est différente)
Pour implémenter les formules, nous allons utiliser le filtre dynamique Texture procédurale.
Pour simplifier la lecture des formules qui suivent nous avons écrit :
Max pour max(R,G,B) et Min pour min(R,G,B)
La fonction med(R,G,B) n’existe pas, mais on peut s’en passer. En effet lorsque la même opération est appliquée aux 3 composantes Max,Med,Min on peut les remplacer par les 3 canaux R,G,B comme dans la formule de la couleur ou de la teinte par exemple.
1)La Saturation (absolue)
La saturation dépend de la taille de l’intervalle 2 (voir le schéma précédent).
On a donc la formule :
Saturation= Max-Min
2)La Couleur (Couleur_N)
Elle est composée de R,V,B diminués de la quantité de Blanc (Min)
Couleur(R,G,B) = (R-Min, G-Min, B-Min)
3)La Teinte
Elle correspond à la couleur rapportée à la valeur maximale de la couleur.
Cette valeur maximale de la couleur = d = (Max-Min)
Teinte(R,G,B) = Couleur/d
= Couleur(R,G,B)/Saturation
= ((R-Min)/d, (G-Min)/d, (B-Min)/d)
4)La Couleur_B
C’est la couleur où le noir est remplacé par du blanc. On rajoute donc l’intervalle 3 (1-Max) à chaque composante R,V,B ainsi les intervalles 1 et 3 apparaissent en blanc.
Couleur_b(R,G,B)=(1-Max+R, 1-Max+G,1-Max+B)
5)La Luminosité
La luminosité correspond à la LUMA. Cette luminosité est différente pour le Rouge, le Vert ou le Bleu.
![[Image: 2-11-Luma.jpg]](https://i.postimg.cc/XG3P5wQM/2-11-Luma.jpg)
Pour trouver les coefficients à affecter à chaque canal, on peut adopter la méthode suivante :
Après avoir tracé 3 rectangles remplis des 3 couleurs primaires (R:100 %; V:100 % et B:100 % ) on applique un « Réglage Courbes » en mode de fusion « Couleur » (1,2). Avec ce réglage, on supprime la couleur (3) et on obtient un gris qui correspond à la luminosité de chaque canal.
Avec l’outil Pipette ou la case Infos en mode TSL (4) on peut lire la valeur en % de la Luminosité. On obtient ici R:30 ; V:59 ; B:11
Si on applique alors ces coefficients dans la formule on obtient:
Luma(R,G,B) = 0,30*R+0,59*G+0,11*B
[b]Saisie des formules.[/b]
L’accès au filtre « Texture procédurale dynamique » se fait par le bouton « Filtres dynamiques ».
1- Cliquer le bouton « + »
2- Saisir au clavier la formule dans la fenêtre « équations »
3- Sélectionner les canaux auxquels sera affecté le résultat de la formule
4- Inscrire dans la fenêtre « préréglages » le nom choisi si vous voulez conserver ce préréglage pour une utilisation ultérieure dans un autre fichier.
Dans ce cas il suffira de dérouler le menu « Préréglage » pour accéder au préréglage stocké.
Pour tout complément d’information, on trouvera l’aide dans
« Aide Affinity Photo/Filtres et effets/Filtres de couleur/Texture procédurale/…... »
![[Image: 3-Texture.png]](https://i.postimg.cc/fSdwBG6t/3-Texture.png)
![[Image: 4-Formules.jpg]](https://i.postimg.cc/hJrRs9pB/4-Formules.jpg)
Comparaison des résultats des différentes méthodes
Comme la décomposition l’image doit conserver celle-ci (ce qui est le cas dans les tutos précédents) nous allons donc utiliser la même méthode.
Nous avons 3 calques
du haut vers le bas de la pile)
Le calque LUMINOSITE qui correspond à la LUMA avec un mode de fusion « Luminosité »,
Le calque SATURATION avec le mode de fusion « Produit ». Ce calque est un calque N&B qui est utilisé comme masque de saturation. Cette saturation correspond à ce que certains auteurs (voir Wikipedia) appellent la CHROMA ou SATURATION ABSOLUE. Cette saturation ne correspond pas à la saturation mesurée par la pipette*.
Le calque TEINTE avec le mode de fusion « teinte ». Ce calque doit être en-dessous du calque SATURATION puisque c’est le produit de ces 2 calques qui nous donne la COULEUR.
Les formules utilisées vérifient bien la relation :
Au lieu de TSL (Teinte,Saturation,Luminosité), cette décomposition pourrait aussi se nommer ainsi (Teinte,Chroma,Luma). C’est ce système qui est à l’œuvre dans Affinity Photo (et d’autres logiciels aussi) avec les modes de fusion Luminosité, Couleur, Saturation, Teinte.
*La pipette mesure une luminosité et une saturation différentes avec les formules :
Luminosité: (Max+Min)/2
Saturation (relative): (Max-Min)/(1- |Max+Min-1|)
Je reviendrai sur ce sujet plus tard.*
Nous allons comparer les résultats obtenus par les formules et la méthode des réglages du tuto précédent.
![[Image: 5-Comparaison-Formule-Reglages.jpg]](https://i.postimg.cc/qg8bfk2m/5-Comparaison-Formule-Reglages.jpg)
On a donc ici la parfaite concordance des résultats des 2 méthodes.
Conclusion
Nous avons donc démontré que la luminosité correspond à la Luma, cad que la luminosité est différente selon les teintes.
La saturation ici correspond à la Saturation absolue.
La couleur est bien le résultat du produit de la Saturation absolue par la Teinte.
Les formules utilisées permettent de comprendre la relation entre la représentation en RVB et la perception TSL.
Application
Aide visuelle instantanée
De la même manière que pour les "réglages" du tutoriel précédent (T3) on peut obtenir une aide visuelle instantanée. Cette aide peut être obtenue de 3 manières :
1 - Utiliser les filtres stockés lors de saisie des formules.
2 - Les formules peuvent être importées sous forme de fichier *.aftoolpresets avec le menu gestionnaire de préréglages.
3 - Lorsqu'on lance la macro "Aide_Visuelle_TexPro" il suffit de cliquer sur chaque calque de texture procédurale pour faire apparaitre la fenêtre qui permet de "nommer le préréglage"
![[Image: 6-importation-aftoolpresets.jpg]](https://i.postimg.cc/BXm8YVQh/6-importation-aftoolpresets.jpg)
Une fois importés ou saisis ou nommés, les filtres sont disponibles en permanence dans Affinity Photo.
Peut-on trouver d’autres formules pour décomposer les images ?
La réponse est oui.
Les formules employées ici nous en donnent un exemple pour la couleur Couleur=(R,V,B)-Min.
Dans ce cas pour retrouver l’image de départ il suffit de rajouter Min au calque Couleur.
On a alors : Image(R,V,B)=Min+Couleur.
Donc à la place du calque LUMINOSITE(Luminosité) on place au-dessus du calque COULEUR un calque MIN(Addition) avec le mode de fusion Addition.
On retrouve bien le calque initial. Tout se passe alors comme si le calque MIN apporte la lumière nécessaire pour éclairer le calque COULEUR(noir).
Que se passe-t-il lorsque Max=Min ?
Lorsque la saturation est nulle on obtient ainsi du gris puisque Max=Min=R=G=B ce que vérifie cette la formule : Max-Min.
Pour le calcul de la teinte, il faut choisir car d’après la formule on obtient la division de 0/0 . Après essai, le logiciel refuse de la calculer et laisse la teinte inexistante inchangée. (Le noir reste noir, le blanc reste blanc, etc..).
On peut donc ignorer le problème car le logiciel le gère et cela n’a aucune incidence sur le traitement de l’image.
+++++++++++++++++++++++++++++++++++++++++++
Liens pour télécharger :
T4_Separation_TSL_TexPro
https://drive.google.com/file/d/1jerHwgY...sp=sharing
+Les macros :
LST_TexPro Cette macro fusionne tous les calques visibles puis crée le groupe « LST_TexPro » qui contient l’image décomposée.
Aide_Visuelle_TexPro qui produit le groupe avec tous les réglages.
ENFANT produit un calque pixelisé du même nom en position « enfant détaché » du calque sélectionné et permet de rendre « non destructives » les opérations sur la Luminosité, la Couleur, la Saturation ou la Teinte.
+Le fichier TSL_TexPro.aftoolpresets qui contient toutes les formules utilisées ici et qui peut être importé dans le menu « Importer des préréglages »
++++++++++++++++++++++++++++++++++++++++++++++++++
Liens utiles:
https://www.youtube.com/@inaffinityforaffinityphoto3220/search?query=saturation
https://www.youtube.com/watch?v=S056ur3UYPU
http://www.oitregor.com/numeric/affinity_photo/ouvre2_tutoAP.html?6h2
http://www.oitregor.com/numeric/affinity_photo/ouvre2_tutoAP.html?6h3
Dans les tutos précédents, j’ai abordé la question de la décomposition des images sous l’angle des réglages. Maintenant je vais étendre la démarche avec les formules que l’on trouve dans la littérature ou les vidéos.
Cela est beaucoup plus simple qu’il y parait lorsqu’on utilise un outil comme le filtre dynamique Texture procédurale.
Avant de voir les formules il est intéressant de les comprendre. Pour comprendre ces formules, nous allons utiliser le réglage des couleurs avec les « Glissières » qui sont représentées ci-dessous.
Chaque pixel est représenté par des valeurs R,V,B dont chacune varie entre 0 et 255 en mode 8 bits et entre 0 et 65535 en mode 16 bits.
On peut aussi choisir comme ici de représenter ces valeurs en pourcentage.
![[Image: 1-glissiere.jpg]](https://i.postimg.cc/68bZJSzm/1-glissiere.jpg)
Dans l’exemple qui est développé ici les composantes R,V,B sont classées selon leurs valeurs on a ainsi :
Max(R,V,B)=200, Med(R,V,B)=150, Min(R,V,B)=100
A mon avis, ce schéma est essentiel pour comprendre ce qui suit.
![[Image: 2-0-Intervalles.png]](https://i.postimg.cc/sQLGQ0vN/2-0-Intervalles.png)
Les formules utilisent des valeurs normalisées entre 0 et 1, d’où l’intérêt de cette représentation en pourcentage. Autre particularité les formules sont en minuscules et utilisent une notation anglaise pour les 3 canaux: R,G,B au lieu de R,V,B
Ce qui nous donne ici :
max(R,G,B)=0,78 ; med(R,G,B)=0,59 ; min(R,G,B)=0,39 ;
On peut donc distinguer ici 3 intervalles :
Intervalle 1 :
Les 3 composantes RVB occupent tout l’intervalle ce qui a pour conséquence de rajouter du Blanc à la couleur du pixel. Donc Min représente la quantité de Blanc ajoutée à la couleur du pixel.
Min détermine la pureté de la couleur.
Intervalle 2 :
C’est l’intervalle qui va déterminer la Couleur, la Saturation et la Teinte.
Min n’intervient pas sur la teinte, puisqu’il est à 0 au début de l’intervalle.
Max et Med sont les composantes qui définissent la Teinte sur le cercle chromatique. Ici, dans notre exemple, on part du Rouge qui est dominant et on se déplace en direction du Vert sur le cercle chromatique.
Max et Med déterminent la teinte et l’intensité de la couleur.
Intervalle 3 :
Les composantes RVB sont absentes de tout l’intervalle ce qui rajoute du Noir à la couleur.
Dans le cas où MAX=MIN, tous les curseurs sont alignés et Max-Min=0.
Les informations qui déterminent la couleur n’existent pas et on obtient des valeurs de GRIS entre le NOIR (=0) et BLANC (=1) qui dépendent de la valeur R,V,B.
Nous avons maintenant toutes le informations pour comprendre les formules
https://en.wikipedia.org/wiki/HSL_and_HSV
(Il faut utiliser ce lien qui aboutit à la version anglaise et lancer un traducteur. La version francaise de l'article est différente)
Pour implémenter les formules, nous allons utiliser le filtre dynamique Texture procédurale.
Pour simplifier la lecture des formules qui suivent nous avons écrit :
Max pour max(R,G,B) et Min pour min(R,G,B)
La fonction med(R,G,B) n’existe pas, mais on peut s’en passer. En effet lorsque la même opération est appliquée aux 3 composantes Max,Med,Min on peut les remplacer par les 3 canaux R,G,B comme dans la formule de la couleur ou de la teinte par exemple.
1)La Saturation (absolue)
La saturation dépend de la taille de l’intervalle 2 (voir le schéma précédent).
On a donc la formule :
Saturation= Max-Min
2)La Couleur (Couleur_N)
Elle est composée de R,V,B diminués de la quantité de Blanc (Min)
Couleur(R,G,B) = (R-Min, G-Min, B-Min)
3)La Teinte
Elle correspond à la couleur rapportée à la valeur maximale de la couleur.
Cette valeur maximale de la couleur = d = (Max-Min)
Teinte(R,G,B) = Couleur/d
= Couleur(R,G,B)/Saturation
= ((R-Min)/d, (G-Min)/d, (B-Min)/d)
4)La Couleur_B
C’est la couleur où le noir est remplacé par du blanc. On rajoute donc l’intervalle 3 (1-Max) à chaque composante R,V,B ainsi les intervalles 1 et 3 apparaissent en blanc.
Couleur_b(R,G,B)=(1-Max+R, 1-Max+G,1-Max+B)
5)La Luminosité
La luminosité correspond à la LUMA. Cette luminosité est différente pour le Rouge, le Vert ou le Bleu.
![[Image: 2-11-Luma.jpg]](https://i.postimg.cc/XG3P5wQM/2-11-Luma.jpg)
Pour trouver les coefficients à affecter à chaque canal, on peut adopter la méthode suivante :
Après avoir tracé 3 rectangles remplis des 3 couleurs primaires (R:100 %; V:100 % et B:100 % ) on applique un « Réglage Courbes » en mode de fusion « Couleur » (1,2). Avec ce réglage, on supprime la couleur (3) et on obtient un gris qui correspond à la luminosité de chaque canal.
Avec l’outil Pipette ou la case Infos en mode TSL (4) on peut lire la valeur en % de la Luminosité. On obtient ici R:30 ; V:59 ; B:11
Si on applique alors ces coefficients dans la formule on obtient:
Luma(R,G,B) = 0,30*R+0,59*G+0,11*B
[b]Saisie des formules.[/b]
L’accès au filtre « Texture procédurale dynamique » se fait par le bouton « Filtres dynamiques ».
1- Cliquer le bouton « + »
2- Saisir au clavier la formule dans la fenêtre « équations »
3- Sélectionner les canaux auxquels sera affecté le résultat de la formule
4- Inscrire dans la fenêtre « préréglages » le nom choisi si vous voulez conserver ce préréglage pour une utilisation ultérieure dans un autre fichier.
Dans ce cas il suffira de dérouler le menu « Préréglage » pour accéder au préréglage stocké.
Pour tout complément d’information, on trouvera l’aide dans
« Aide Affinity Photo/Filtres et effets/Filtres de couleur/Texture procédurale/…... »
![[Image: 3-Texture.png]](https://i.postimg.cc/fSdwBG6t/3-Texture.png)
![[Image: 4-Formules.jpg]](https://i.postimg.cc/hJrRs9pB/4-Formules.jpg)
Comparaison des résultats des différentes méthodes
Comme la décomposition l’image doit conserver celle-ci (ce qui est le cas dans les tutos précédents) nous allons donc utiliser la même méthode.
Nous avons 3 calques
du haut vers le bas de la pile)Le calque LUMINOSITE qui correspond à la LUMA avec un mode de fusion « Luminosité »,
Le calque SATURATION avec le mode de fusion « Produit ». Ce calque est un calque N&B qui est utilisé comme masque de saturation. Cette saturation correspond à ce que certains auteurs (voir Wikipedia) appellent la CHROMA ou SATURATION ABSOLUE. Cette saturation ne correspond pas à la saturation mesurée par la pipette*.
Le calque TEINTE avec le mode de fusion « teinte ». Ce calque doit être en-dessous du calque SATURATION puisque c’est le produit de ces 2 calques qui nous donne la COULEUR.
Les formules utilisées vérifient bien la relation :
COULEUR = SATURATION x TEINTE
On a :
Teinte = ((R,V,B)-Min) / (Max-Min)
Saturation = Max-Min
Couleur = (R,V,B)-Min
En remplaçant les termes dans la formule de la teinte, on obtient :
Teinte = Couleur / Saturation
dont on peut déduire :
Couleur = Saturation x Teinte
Au lieu de TSL (Teinte,Saturation,Luminosité), cette décomposition pourrait aussi se nommer ainsi (Teinte,Chroma,Luma). C’est ce système qui est à l’œuvre dans Affinity Photo (et d’autres logiciels aussi) avec les modes de fusion Luminosité, Couleur, Saturation, Teinte.
*La pipette mesure une luminosité et une saturation différentes avec les formules :
Luminosité: (Max+Min)/2
Saturation (relative): (Max-Min)/(1- |Max+Min-1|)
Je reviendrai sur ce sujet plus tard.*
Nous allons comparer les résultats obtenus par les formules et la méthode des réglages du tuto précédent.
![[Image: 5-Comparaison-Formule-Reglages.jpg]](https://i.postimg.cc/qg8bfk2m/5-Comparaison-Formule-Reglages.jpg)
On a donc ici la parfaite concordance des résultats des 2 méthodes.
Conclusion
Nous avons donc démontré que la luminosité correspond à la Luma, cad que la luminosité est différente selon les teintes.
La saturation ici correspond à la Saturation absolue.
La couleur est bien le résultat du produit de la Saturation absolue par la Teinte.
Les formules utilisées permettent de comprendre la relation entre la représentation en RVB et la perception TSL.
Application
Aide visuelle instantanée
De la même manière que pour les "réglages" du tutoriel précédent (T3) on peut obtenir une aide visuelle instantanée. Cette aide peut être obtenue de 3 manières :
1 - Utiliser les filtres stockés lors de saisie des formules.
2 - Les formules peuvent être importées sous forme de fichier *.aftoolpresets avec le menu gestionnaire de préréglages.
3 - Lorsqu'on lance la macro "Aide_Visuelle_TexPro" il suffit de cliquer sur chaque calque de texture procédurale pour faire apparaitre la fenêtre qui permet de "nommer le préréglage"
![[Image: 6-importation-aftoolpresets.jpg]](https://i.postimg.cc/BXm8YVQh/6-importation-aftoolpresets.jpg)
Une fois importés ou saisis ou nommés, les filtres sont disponibles en permanence dans Affinity Photo.
Peut-on trouver d’autres formules pour décomposer les images ?
La réponse est oui.
Les formules employées ici nous en donnent un exemple pour la couleur Couleur=(R,V,B)-Min.
Dans ce cas pour retrouver l’image de départ il suffit de rajouter Min au calque Couleur.
On a alors : Image(R,V,B)=Min+Couleur.
Donc à la place du calque LUMINOSITE(Luminosité) on place au-dessus du calque COULEUR un calque MIN(Addition) avec le mode de fusion Addition.
On retrouve bien le calque initial. Tout se passe alors comme si le calque MIN apporte la lumière nécessaire pour éclairer le calque COULEUR(noir).
Que se passe-t-il lorsque Max=Min ?
Lorsque la saturation est nulle on obtient ainsi du gris puisque Max=Min=R=G=B ce que vérifie cette la formule : Max-Min.
Pour le calcul de la teinte, il faut choisir car d’après la formule on obtient la division de 0/0 . Après essai, le logiciel refuse de la calculer et laisse la teinte inexistante inchangée. (Le noir reste noir, le blanc reste blanc, etc..).
On peut donc ignorer le problème car le logiciel le gère et cela n’a aucune incidence sur le traitement de l’image.
+++++++++++++++++++++++++++++++++++++++++++
Liens pour télécharger :
T4_Separation_TSL_TexPro
https://drive.google.com/file/d/1jerHwgY...sp=sharing
+Les macros :
LST_TexPro Cette macro fusionne tous les calques visibles puis crée le groupe « LST_TexPro » qui contient l’image décomposée.
Aide_Visuelle_TexPro qui produit le groupe avec tous les réglages.
ENFANT produit un calque pixelisé du même nom en position « enfant détaché » du calque sélectionné et permet de rendre « non destructives » les opérations sur la Luminosité, la Couleur, la Saturation ou la Teinte.
+Le fichier TSL_TexPro.aftoolpresets qui contient toutes les formules utilisées ici et qui peut être importé dans le menu « Importer des préréglages »
++++++++++++++++++++++++++++++++++++++++++++++++++
Liens utiles:
https://www.youtube.com/@inaffinityforaffinityphoto3220/search?query=saturation
https://www.youtube.com/watch?v=S056ur3UYPU
http://www.oitregor.com/numeric/affinity_photo/ouvre2_tutoAP.html?6h2
http://www.oitregor.com/numeric/affinity_photo/ouvre2_tutoAP.html?6h3
Vos applications :
- > Affinity Photo Windows
- > Affinity Designer Windows
- > Affinity Publisher Windows
- > Affinity by Canva Windows

