2017-03-02 2 views
1

Est-il possible de représenter une couleur RGBA à une seule valeur qui ressemble à la stimulation rétinienne? L'idée est quelque chose comme:Une représentation plus naturelle des couleurs: est-il possible de convertir la couleur RGBA en une seule valeur flottante?

  • 0,0 valeur pour le noir (pas de stimulation)
  • 1.0 pour le blanc (stimulation complète)

Les couleurs RGBA entre les deux devraient être représentés par des valeurs qui saisissent le montant de la stimulation qu'ils causent à l'œil comme:

  • un jaune très léger devrait avoir une valeur très élevée
  • très dar k brun doit avoir une valeur faible

Des idées à ce sujet? Convertir en niveaux de gris est la seule solution?

Merci d'avance!

Répondre

1

Affectez des bits spécifiques d'un seul nombre à chaque partie de RGBA pour représenter votre numéro. Si chaque partie est de 8 bits, les 8 premiers bits peuvent être affectés à R, les 8 derniers à G, les 8 derniers à B et les 8 derniers bits à A.

Disons que vos valeurs RGBA sont = 15,4,2,1. Et chacun a 4 bits. En binaire, R est 1111, G est 0100, B est 0010, A est 0001. Dans une concaténation simple, votre nombre final serait 1111010000100001 en binaire, ce qui est 62497. Pour obtenir G sur ce, 62497/256, arrondir à un nombre entier, puis modulo 16. 256 est 16 à la deuxième puissance parce que c'est la deuxième position après la première à partir de la droite (R aurait besoin de la troisième puissance, B aurait besoin de la première puissance). 16 est 2 à la quatrième puissance parce que j'ai utilisé 4 bits. 62497/256 = 244, 244% 16 = 4.

+0

Merci pour la réponse rapide et la promptitude à aider. Ce processus de codage et de décodage capture-t-il l'essence des "couleurs plus foncées ayant des valeurs plus faibles" et des "couleurs claires ayant des valeurs élevées"? – thecritter

+0

La variété de couleur dépend du nombre de bits utilisés. C'est autant que je sache. Pour Java, au moins, darker est associé à des nombres inférieurs. – ProgrammersBlock