Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Fondu au noir de couleur RGB


Sujet :

Algorithmes et structures de données

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    mars 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2008
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Fondu au noir de couleur RGB
    Bonjour
    Je voudrais commander des LED strips RGB avec un arduino. En entrée j'ai une couleur RGB et une intensité i (disons une valeur entre 0 et 1).
    J'aimerais pouvoir utiliser une formule pour trouver la couleur intermédiaire entre le noir et cette couleur RGB qui corresponde à l'intensité i.
    J'ai essayé de simplement de multiplier:
    R2=R*i
    G2=G*i
    B2=B*i
    mais ça semble modifier la couleur plutôt que de faire une nuance de la couleur originale.
    Y a-t-il une formule qui donne vraiment un fondu naturel au noir d'une couleur RGB?
    Merci
    David

  2. #2
    Expert éminent Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    septembre 2005
    Messages
    4 061
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : septembre 2005
    Messages : 4 061
    Points : 9 998
    Points
    9 998
    Par défaut
    Bonjour

    • Pour moi, tu as la bonne méthode.
    • Les 3 composantes n'ont pas la même importance pour un oeil.
    • Nous n'avons pas tous les mêmes yeux.
    • De là à dire que la couleur change, c'est bizarre.
    • Es-tu sûr que vous parlez la même langue, ton ordi et toi ? R*i est un nombre à virgule puisque i est entre 0 et 1. Faudrait-il des entiers ?
    • As-tu un exemple concret ?
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  3. #3
    Membre chevronné

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    décembre 2010
    Messages
    998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : décembre 2010
    Messages : 998
    Points : 1 836
    Points
    1 836
    Billets dans le blog
    5
    Par défaut Fondu au noir de couleur RGB
    Bonjour,

    Citation Envoyé par zesinger Voir le message
    ... J'ai essayé de simplement de multiplier:
    R2=R*i
    G2=G*i
    B2=B*i
    mais ça semble modifier la couleur plutôt que de faire une nuance de la couleur originale.
    Y a-t-il une formule qui donne vraiment un fondu naturel au noir d'une couleur RGB? ...
    Si le fonctionnement du système ne dépend que d'un seul paramètre (tension d'alimentation ou intensité) tu ne disposes probablement d'aucune possibilité d'agir sur les tentes intermédiaires, à moins de bricoler le circuit.
    Les intensités des couleurs seront données par 3 fonctions caractéristiques du montage:
    r = Fr(u) ; v = Fv(u) ; b = Fb(u) .

    D'autre part, tu ne définis pas ce qu'est un "fondu naturel" allant du noir à une couleur quelconque (r°, v°, b°): dans le domaine [0 ; 255]3 , il y a une infinité de chemins reliant l'origine (0, 0, 0) au point (M°) représentant la couleur considérée.

    Si tu es en mesure de programmer les intensités relatives des 3 couleurs en fonction d'un paramètre (t) variant de zéro (pour le noir) à l'unité (lumière maximale), tu peux envisager plusieurs fonctions monotones croissantes:

    a) une relation de proportionnalité:
    r = Round(r°.t) ; v = Round(v°.t) ; b = Round(b°.t) ,
    qui conduit apparemment à un résultat décevant;

    b) une relation restreignant le domaine des couleurs sombres, peu attrayantes:
    r = Round(r°.Sqrt(t)) ; v = Round(v°.Sqrt(t)) ; b = Round(b°.Sqrt(t)) ;

    c) des fonctions linéaires par morceaux, permettant d'introduire une couleur intermédiaire (r1, v1, b1):

    r = Round(r1*t/t1) si (t < t1) sinon r = Round(r1 + (r° - r1)*(t - t1)/(1 - t1)) ;
    v = Round(v1*t/t1) si (t < t1) sinon v = Round(v1 + (v° - v1)*(t - t1)/(1 - t1)) ;
    b = Round(b1*t/t1) si (t < t1) sinon b = Round(b1 + (b° - b1)*(t - t1)/(1 - t1)) ,

    avec (t1 << 1), par exemple t1 = 0.1 ou 0.2; c'est à ce stade un choix personnel.

    PS1: Il y a aussi une variante (d) favorisant les couleurs les plus lumineuses:
    r = Round(r1*Sqrt(t/t1)) si (t < t1) sinon r = Round(r1 + (r° - r1)*(t - t1)/(1 - t1)) , etc

    PS2: Désolé de laisser transparaître une ignorance scandaleuse ...
    Je voudrais commander des LED strips RGB avec un arduino.
    qu'est-ce que c'est qu'un arduino ?


    Le français, notre affaire à tous
    Grand Dictionnaire Terminologique

  4. #4
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    juillet 2006
    Messages
    8 632
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : juillet 2006
    Messages : 8 632
    Points : 12 290
    Points
    12 290
    Par défaut
    Salut,
    Citation Envoyé par zesinger Voir le message
    [...] fondu naturel au noir d'une couleur RGB ?
    Il va te falloir 3 "i" différents, sauf dans le cas très particulier où R = G = B (et c'est donc du gris au départ).

    Ta demande sous-entend que tu vas baisser le rouge de R à 0, le vert de G à 0 et le bleu de B à 0, les trois baissant ensemble.

    Prenons un exemple avec R = 200, G = 100 et B = 20 (un beau marron clair).
    Il va te falloir jouer avec des règles de 3 car pendant que B "descend" de 20 à 0 R doit "descendre" de 200 à 0 et G de 100 à 0. On pourrait envisager, à la louche, que quand B est à 5 G est à 25 et R à 50, un marron foncé.

    Ou alors tu n'as qu'un seul "i" et il faudra partir de la valeur la plus élevée, soit R dans mon exemple, et la teinte va changer car quand R sera "descendu" à 180 B sera déjà à 0 donc plus de bleu, et idem à R = 100, il n'y aura plus de vert.
    Tu te retrouveras avec un rouge sombre, qui continuera à "descendre" au noir.

    EDIT : toujours les mêmes, quand on parle de couleurs,
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  5. #5
    Membre chevronné

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    décembre 2010
    Messages
    998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : décembre 2010
    Messages : 998
    Points : 1 836
    Points
    1 836
    Billets dans le blog
    5
    Par défaut Fondu au noir de couleur RGB
    Cela va sans dire mais encore beaucoup mieux en le disant, les indices de couleur (r1, v1, b1) sont inférieurs à (r°, v°, b°), mais relativement proches, par exemple en prenant:
    r1 = 0.8 * r° ; v1 = 0.8 * v° ; b1 = 0.8 * b° .

    Il y a ici trois rapports à choisir.


    Le français, notre affaire à tous
    Grand Dictionnaire Terminologique

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    septembre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Arts - Culture

    Informations forums :
    Inscription : septembre 2013
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    Par fondu naturel, je veux dire "la même couleur" (c'est sans doute subjectif si j'ai bien compris) avec une intensité différente.
    Je vais préciser ma demande. J'ai fabriqué un flipper virtuel (
    ). On utilise des LED strips pour plusieurs buts, dont 1 est l'undercab (les changements de couleurs sous le flipper quand on le voit de côté). J'aimerais récupérer le signal RGB de l'undercab ainsi que le son en entrée des hauts-parleurs dans un arduino, faire calculer à cet arduino une intensité du son (ça fait partie aussi des recherches à venir) ce qui fera mon "i" de la question initiale.
    Ainsi avec le RGB initial et le i calculé, mettre un LED strip derrière les caches des haut-parleurs et afficher la couleur undercab dont l'intensité varierait en fonction de la musique jouée sur les HP.

  7. #7
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    juillet 2006
    Messages
    8 632
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : juillet 2006
    Messages : 8 632
    Points : 12 290
    Points
    12 290
    Par défaut
    Citation Envoyé par zedrummer Voir le message
    [...] ce qui fera mon "i" de la question initiale.
    Ainsi avec le RGB initial et le i calculé, [...]


    Citation Envoyé par Jipété Voir le message
    Il va te falloir 3 "i" différents, sauf dans le cas très particulier où R = G = B (et c'est donc du gris au départ).
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    septembre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Arts - Culture

    Informations forums :
    Inscription : septembre 2013
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    Bah je n'ai qu'un i qui est l'intensité du son et je voudrais diminuer l'intensité de la couleur RGB en fonction de ce i

  9. #9
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    juillet 2006
    Messages
    8 632
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : juillet 2006
    Messages : 8 632
    Points : 12 290
    Points
    12 290
    Par défaut
    Citation Envoyé par zedrummer Voir le message
    Bah je n'ai qu'un i qui est l'intensité du son et je voudrais diminuer l'intensité de la couleur RGB en fonction de ce i
    Citation Envoyé par Jipété Voir le message
    Prenons un exemple avec R = 200, G = 100 et B = 20 (un beau marron clair).
    Il va te falloir jouer avec des règles de 3 car pendant que B "descend" de 20 à 0 R doit "descendre" de 200 à 0 et G de 100 à 0. On pourrait envisager, à la louche, que quand B est à 5 G est à 25 et R à 50, un marron foncé.
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    septembre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Arts - Culture

    Informations forums :
    Inscription : septembre 2013
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    Donc selon toi, multiplier par i, compris entre 0 et 1, ça devrait marcher ?
    Bizarre quand j'avais essayé ça, il y a quelques temps, ça dénaturait la couleur en la fonçant.

  11. #11
    Membre chevronné

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    décembre 2010
    Messages
    998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : décembre 2010
    Messages : 998
    Points : 1 836
    Points
    1 836
    Billets dans le blog
    5
    Par défaut Fondu au noir de couleur RGB
    Citation Envoyé par zedrummer Voir le message
    Bah je n'ai qu'un i qui est l'intensité du son et je voudrais diminuer l'intensité de la couleur RGB en fonction de ce i
    Je suppose que la luminosité augmente avec l'intensité sonore (i).

    Il te suffit donc de prendre l'une des fonctions qui ont été proposées - si elles te conviennent; il suffit de changer la notation.

    Il y a néanmoins deux questions concernant ce programme:
    a) souhaites-tu un simple affaiblissement des teintes à partir d'une couleur de luminosité maximale (r°, v°, b°), lorsque faiblit l'intensité sonore (cas précédemment envisagés), ou bien une évolution des couleurs comme l'a indiqué Jipété () ? on pourrait alors utiliser d'autres fonctions;
    b) y a-t-il trois sortes de diodes, dont les couleurs d'émission correspondent (au moins approximativement) aux couleurs primaires du système (RVB); tu n'a pas décrit le système, mais cela ne devrait soulever qu'une question d'ajustage des fonctions.


    Le français, notre affaire à tous
    Grand Dictionnaire Terminologique

  12. #12
    Expert éminent Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    septembre 2005
    Messages
    4 061
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : septembre 2005
    Messages : 4 061
    Points : 9 998
    Points
    9 998
    Par défaut
    Donc selon toi, multiplier par i, compris entre 0 et 1, ça devrait marcher ?
    Oui ! Vas-y. N'aie pas peur.

    ça dénaturait la couleur en la fonçant.
    Oui. C'est le principe d'un fondu au noir. Si tu as un problème avec cela, c'est que tu ne veux pas faire un fondu au noir.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  13. #13
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    juillet 2006
    Messages
    8 632
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : juillet 2006
    Messages : 8 632
    Points : 12 290
    Points
    12 290
    Par défaut
    Citation Envoyé par Flodelarab Voir le message
    Oui ! Vas-y. N'aie pas peur.
    Oui, tu as raison.
    Je me suis pris les pieds dans le tapis avec mon histoire de 3 "i" (la faute à l'hiver qui approche, les neurones sont moins agiles, ).
    Bah...
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    mars 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2008
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Oui je souhaites partir de la valeur max et définir une valeur entre 0 et ces R°, V° et B°.
    Le LED strip est de ce type https://www.amazon.fr/d%C3%A9clairag.../dp/B07C7GV2NH

  15. #15
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    décembre 2013
    Messages
    2 712
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : décembre 2013
    Messages : 2 712
    Points : 5 927
    Points
    5 927
    Par défaut
    Comme tout le monde : R1=i*R0, G1=i*G0 et B1=i*B0

    Si tu as un exemple de valeurs (R1 G1 B1) et (R0 G0 B0) où ça ne convient pas, partage ces valeurs. Mais ce sera très probablement un dysfonctionnement de la LED.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  16. #16
    Expert éminent Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    septembre 2005
    Messages
    4 061
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : septembre 2005
    Messages : 4 061
    Points : 9 998
    Points
    9 998
    Par défaut
    La théorie, tu l'as.
    Pour la pratique, je gardais une place au doute, jusqu'à ce que je trouve cette vidéo :



    Ou celle-ci


    Il y a un dégradé de couleur (+1) et une variation en intensité (+1).
    Donc c'est bon.

    À noter : il n'y a pas de noir. Le noir est juste l'absence de lumière. Important à considérer car j'imagine l'"écran" blanc.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  17. #17
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    septembre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen
    Secteur : Arts - Culture

    Informations forums :
    Inscription : septembre 2013
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    Merci à vous, je vais essayer tout ça.

Discussions similaires

  1. Réponses: 0
    Dernier message: 03/10/2007, 14h11
  2. Couleur RGB d'1 fenêtre window
    Par Minos2 dans le forum MFC
    Réponses: 15
    Dernier message: 20/07/2007, 16h27
  3. [VBA-E]palette couleurs RGB
    Par potili2 dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 20/03/2007, 16h29
  4. [Excel]: formatter en couleurs RGB
    Par doringen dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/03/2007, 17h54
  5. Liste des couleurs RGB?
    Par zorba49 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 06/12/2005, 16h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo