2017-02-11 5 views
1

J'essaie de générer des couleurs RVB avec la même luminosité perçue. On dit que la fonction R * 0.2126 + G * 0.7152 + B * 0.0722 calcule la luminosité perçue (ou la couleur équivalente en niveaux de gris) pour une couleur RGB donnée.Comment calculer les valeurs RVB avec la même luminosité perçue

En supposant que nous utilisons l'intervalle [0,1] pour toutes les valeurs RVB, nous pouvons calculer les éléments suivants:

  • jaune = RGB (1,1,0) => Luminosité = 0,9278
  • bleu = RGB (0,0,1) => luminosité = 0,0722

Donc, afin de rendre le ton jaune aussi pâle que le bleu je peux simplement effectuer ce simple calcul sur jaune pour chacun des RGB composants:

  • dim_yellow = jaune * 0,0722/0,9278

Cependant, lorsque vous faites la chose en face, donc « mise à l'échelle » la couleur bleue à la même luminosité perçue comme composant B jaune, original dépasse évidemment 1, ne peut pas être affiché sur un écran d'ordinateur. Je suppose que la luminosité manquante du composant B en excès pourrait être "redistribuée" aux composants R et G, simulant une couleur bleue plus claire. Alors, quelle est la meilleure méthode générale pour calculer ces valeurs RVB finales?

Répondre

0

Je vous recommande d'utiliser le modèle de couleur HSV au lieu de RVB puisque vous pouvez facilement réaliser ce que vous voulez seulement modifier le composant Valeur (Luminosité). La page wiki contient également comment convertir RVB à HSV et le dos

EDIT: Essayez d'utiliser CIELAB espace couleur puisqu'elle vision de l'homme environ

+0

Je sais à propos HSL et HSV, mais ils ne font pas ce que vous suggérer. Une teinte bleue avec une saturation et une valeur complètes semblera toujours être "plus sombre" ou "plus sombre", puis une teinte jaune avec une saturation et une valeur complètes. Donc, votre réponse ne résout pas mon problème. – Askaga

+0

Avez-vous essayé des espaces non linéaires comme CIELAB? –