Couleur claire ou foncée

Démarré par Dormeur74, Mars 27, 2020, 16:34:17

« précédent - suivant »

Dormeur74

Dans un espace colorimétrique donné, quand peut-on dire qu'une couleur est claire ou foncée  (à partir de ses composantes RVB) ?

Gilala

hello,
intuitivement je dirai lorsque que l'addition de R+V+B n'excède pas 350

tkosak

La notion de clair/foncé, c'est comme le chaud/froid, trop/pas assez salé, etc... Ce sont des appréciations relatives à une valeur de référence qui est propre à chaque individu : ma femme a toujours froid avant moi, elle ne met jamais assez de sel dans les plats, etc... Qui est "normal" : elle ou moi? Ou bien la norme (température, salinité, teinte, etc..) n'est elle qu'une illusion, une commodité pour l'esprit cartésien?

Dormeur74

J'ai bien peur Gilles que les choses ne soient pas aussi linéaires. Regarde la différence de luminosité entre deux couleurs dont la somme R+V+B est la même. Les caractères blancs sont plus contrastés à gauche. Les couches doivent être pondérées, mais avec quels coefs ?



Un bleu (0-0-255) est plus sombre qu'un vert (0-255-0).

Mes hommages à ta femme tkosak.

FredEspagne

La perception des couleurs est moins bonne chez les hommes que chez les femmes (1 homme sur 6 a une perception anormale des couleurs). On a trouvé récemment une mutation chez une femme qui a une vision quadrichromique. La notion de sombre ou clair est très variable suivant les individus. Les nyctalopes n'éclairent jamais la nuit pour aller de leur chambre aux toilettes.
35 ans de film et labo argentique , 21 de numérique

Jean-Claude

A l'œil Il n'est pas évident déjà de faire la différence entre clair/foncé et saturé/désaturé.

Si je prends l'exemple d'un vert pur , en codage RVB

0,5,0 est un vert foncé saturé
0,200,0 est un vert clair saturé

150,200,150 est vert clair très désaturé
10,20,10 est un vert foncé très désaturé

etc...

tkosak

Citation de: Dormeur74 le Mars 27, 2020, 18:37:52
Mes hommages à ta femme tkosak.
je ne doute pas qu'elle y sera sensible

VentdeSable

Citation de: Dormeur74 le Mars 27, 2020, 16:34:17
Dans un espace colorimétrique donné, quand peut-on dire qu'une couleur est claire ou foncée  (à partir de ses composantes RVB) ?

oui... mais pas en RVB ;-)

Dans l'espace LAB, le L veut dire Luminosity A&B caractérisant la couleur sur les axes bleu-jaune & vert-rouge. Donc, si vous isolez une couleur, en regardant son L vous en connaissez la luminosité. Comme elle va sur une échelle de 1 à 100 ; vous pouvez déterminer de manière assez objective si elle est foncée ou non. Wiki

J

Dormeur74

Bonne réponse VentdeSable, mais mon problème est que l'API de Photoshop fournie avec l'ExtendScript ne permet pas (à ma connaissance) d'extraire les composantes Lab ou TSL d'une couleur. Donc si j'applique sur une zone de l'image le filtre "Atténuation moyenne" qui permet de connaître la couleur moyenne de la zone sélectionnée, je ne peux en connaître que les valeurs RVB, ce qui est dommage puisque seule la Luminosité du Lab suffirait. Alors, comment faire ?

Je précise le but de la question : c'est d'automatiser la couleur d'un texte : blanc lorsque l'arrière-plan est plutôt foncé et inversement noir s'il est plutôt clair.

Verso92

#9
Citation de: Dormeur74 le Mars 27, 2020, 20:39:33
Bonne réponse VentdeSable, mais mon problème est que l'API de Photoshop fournie avec l'ExtendScript ne permet pas (à ma connaissance) d'extraire les composantes Lab ou TSL d'une couleur.

Heu ?


Un coup de pipette sous Photoshop CS6, et voilà ce que j'obtiens :

tkosak

et le mode de fusion du calque, ça peut pas le faire?

VentdeSable

Citationl'API de Photoshop fournie avec l'ExtendScript

;-) Je ne sais pas bien ce que c'est...

Le mode LAB n'est pas un filtre. C'est un espace colorimétrique. Donc pour avoir l'information il vous faudrait changer d'espace colorimétrique.

Une autre possibilité est d'ouvrir le panneau d'informations. Là pas besoin de changer d'espace. Et en plus à priori vous l'avez puisque vous avez les infos RGB. Dans ce panneau il vous faut aller dans les paramètres et lui demander d'afficher les infos LAB. L'une des deux pipettes reste en RVB et l'autre passe en LAB.

J

Dormeur74

L'Extendscript de Photoshop permet d'automatiser des tâches complexes en VBScript, Applescript ou Javascript.

Exemple :
- traiter à la volée toutes les photos se trouvant dans un dossier et ses sous-dossiers dans tous les formats de PS (PSD, JPEG, GIF, PNG, TIF, etc.)
- mettre une signature, un logo ou un watermark redimensionné en fonction de la largeur des images traitées,
- mettre un cadre lui aussi proportionnel autour des photos,
- etc.
Bref tout ce qu'on ne peut pas faire avec des actions en traitement par lot.

Voici un exemple de traitement dont je viens de terminer l'écriture.



Il suffit pour cela de télécharger le script et de l'exécuter sur un dossier contenant des photos retaillées au format carré.

#Verso92 : on n'utilise pas l'interface graphique de Photoshop, on n'a donc pas accès à certaines données pourtant très utiles comme les valeurs Lab d'une couleur.

frmfrm

Ben, tu as la solution de transformer tes coordonnées RGB dans l'espace XYZ et de prendre en compte la composante Y :-)

https://fr.wikipedia.org/wiki/CIE_XYZ#

Sinon, pour un travail à la louche, tu dois pouvoir prendre la formule pour le BT 709 qui donne la luma :

Y' = 0.21R' + 0.71 G' + 0.07 B' . 

Les valeurs Y' R' G' et B' sont les valeurs non linéaires ( donc avec le gamma appliqué, ce qui sera plus simple).

Dormeur74

#frmfrm

Super. Le travail à la louche sera suffisant pour ce que je veux faire. Sais-tu pourquoi ppmpgm (Netpbm) utilise une autre pondération ?
y  = .299R + .587G + .114B

Col Hanzaplast


frmfrm

Citation de: Dormeur74 le Mars 28, 2020, 07:18:57
.... Sais-tu pourquoi ppmpgm (Netpbm) utilise une autre pondération ?
y  = .299R + .587G + .114B

Ils ont l'air de partir d'un autre espace RGB . Cà semble être du NTSC qui a un illuminant et des primaires différentes du Rec709 / sRGB.

http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html


Jean-Claude

Bon sang qu'es ce qu'on n'entend pas ici !

chaque valeur RGB à un et un seul pendant en Lab

cela ne change rien à la définition d'une couleur qui reste unique que l'on code en RGB ou en Lab,
Après le type d'espace fait qu'une même valeur RGB ou Lab correspond à une autre couleur quand on change d'espace et c'est poir cela que l'on fait des conversions d'espace plus ou moins destructives.

Verso92

Citation de: frmfrm le Mars 28, 2020, 13:43:04
Ils ont l'air de partir d'un autre espace RGB . Cà semble être du NTSC qui a un illuminant et des primaires différentes du Rec709 / sRGB.

http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html

Là, ce serait normal : NTSC = Never Twice the Same Colour...

frmfrm

Citation de: Jean-Claude le Mars 28, 2020, 13:54:32
Bon sang qu'es ce qu'on n'entend pas ici !

chaque valeur RGB à un et un seul pendant en Lab

cela ne change rien à la définition d'une couleur qui reste unique que l'on code en RGB ou en Lab,
Après le type d'espace fait qu'une même valeur RGB ou Lab correspond à une autre couleur quand on change d'espace et c'est poir cela que l'on fait des conversions d'espace plus ou moins destructives.
Gnééé ? ... houla ... aie ...  <- rayer les mentions inutiles ;-)

Sinon JC, retouve la bonne matrice dans le lien donné avant ... Pour t'aider :

0.6068909  0.1735011  0.2003480
0.2989164  0.5865990  0.1144845
0.0000000  0.0660957  1.1162243

Ensuite regarde ce que donne la 2de ligne et enfin tu peux regarder comment on passe de l'espace XYZ à l'espace Lab.

ChatOuille

Citation de: Dormeur74 le Mars 27, 2020, 20:39:33
Bonne réponse VentdeSable, mais mon problème est que l'API de Photoshop fournie avec l'ExtendScript ne permet pas (à ma connaissance) d'extraire les composantes Lab.

J'arrive un peu tard ici car beaucoup a été déjà dit. Le canal L de Lab est extrait des valeurs RVB. Bien entendu pondéré : beaucoup pour le vert, moins pour le rouge et bien moins pour le bleu. Je n'ai pas les chiffres en tête mais cela ressemble vraisemblablement à ce qui a été dit. Si besoin je peux chercher car je dispose de ces chiffres, mais vous trouverez cela chez Gggl.

Je veux ajouter quelque chose car toi Dormeur tu parles de la notion clair/foncé, qui est relative. Etant donné que Verso rode par ici il va me contredire ou trouver que les termes ne sont pas justes, mais je m'en fiche éperdument. L'œil humain est bien plus sensible aux légers changements de luminosité qu'au changements de tonalité. Je veux dire que si tu as deux couleurs de composantes RVB proportionnellement identiques, mais de luminosité légèrement différente, l'œil apercevra plus facilement la différence que si tu as deux couleurs de même luminosité mais de proportions RVB légèrement différentes.

Dormeur74

#Chatouille

Je veux bien, mais que proposes-tu pour qu'un programme décide s'il faut que la police soit blanche ou noire (le traitement automatique porte une photothèque plutôt musclée) ? Pour le moment, c'est la solution proposée par  frmfrm qui est la plus satisfaisante. En tout cas merci pour certains éclairages.

Tonton-Bruno

Bonjour.
Si je comprends bien, ton problème est de déposer automatiquement du texte lisible quelle que soit la luminosité d'une image.

Je suis confronté à ce problème tous les jours et je l'ai résolu depuis longtemps en utilisant un liseré ombré autour du texte.

Cela marche pour toutes les images, claires ou sombres.

Quelques extraits d'une conférence, d'abord en petit format puis à taille 100% pour un écran HD.

ChatOuille

Citation de: Dormeur74 le Mars 28, 2020, 18:26:57
Je veux bien, mais que proposes-tu pour qu'un programme décide s'il faut que la police soit blanche ou noire (le traitement automatique porte une photothèque plutôt musclée) ? Pour le moment, c'est la solution proposée par  frmfrm qui est la plus satisfaisante. En tout cas merci pour certains éclairages.

Maintenant j'ai compris ton problème. Oui, la solution de frmfrm me paraît correcte.

Je ne connais pas le langage JavaScript en détail mais je pense qu'il s'agit d'octroyer una valeur à une variable Luminosité en fonction des valeurs RVB (que tu dois avoir). Puis attribuer la couleur du texte en fonction de la valeur Luminosité du font.

Dormeur74

#Chatouille

C'est ça.

#Tonton-Bruno

J'avais évoqué cette possibilité ici il n'y a pas très longtemps, c'est aussi ce que j'utilise, mais le "client" n'aime pas ! C'était trop facile  :)