web-dev-qa-db-fra.com

Pourquoi divisons-nous toujours les valeurs RVB par 255?

Pourquoi nous divisons toujours nos valeurs RVB par 255?
Je sais que la plage est de [0-1]. Mais pourquoi seulement avec 255? Quelqu'un peut-il m'expliquer s'il vous plaît les concepts de valeurs RVB? Merci d'avance.

15
Tabish Sohail

Les couleurs RVB (rouge, vert et bleu) sont de 8 bits chacune.
La plage de chaque couleur est comprise entre 0 et 255 (sous forme de 2 ^ 8 = 256 possibilités).
La plage de combinaison est 256 * 256 * 256.

En divisant par 255, la plage 0-255 peut être décrite avec une plage 0.0-1.0 où 0.0 signifie 0 (0x00) et 1.0 signifie 255 (0xFF).

21
Tarun Chaudhary

C'est une question un peu générique car elle peut être spécifique à la plate-forme et même à la méthode. Cela revient vraiment aux mathématiques et à obtenir une valeur comprise entre 0 et 1. Puisque 255 est la valeur maximale, la division par 255 exprime une représentation 0-1. 

Chaque canal (les canaux rouge, vert et bleu sont chacun) est de 8 bits, de sorte qu'ils sont limités à 256, dans ce cas, 255 puisque 0 est inclus. Comme le montre la référence, les systèmes utilisent généralement des valeurs comprises entre 0 et 1 lorsqu'ils utilisent des valeurs à virgule flottante.

http://en.wikipedia.org/wiki/RGB_color_model

Voir Représentations numériques.

Ces fourchettes peuvent être quantifiées de différentes manières: de 0 à 1, avec une valeur fractionnaire entre les deux. Cette représentation est utilisée dans analyses théoriques et dans les systèmes utilisant la virgule flottante représentations. Chaque valeur de composant de couleur peut également être écrite en tant que pourcentage, de 0% à 100%. Sur les ordinateurs, les valeurs de composant sont souvent stockés sous forme de nombres entiers compris entre 0 et 255, intervalle que un seul octet de 8 bits peut offrir. Ceux-ci sont souvent représentés par soit nombres décimaux ou hexadécimaux. Les équipements d’image numérique haut de gamme sont souvent capable de traiter des plages entières plus grandes pour chaque couleur primaire, tels que 0..1023 (10 bits), 0..65535 (16 bits) ou même plus, par extension des 24 bits (trois valeurs de 8 bits) à 32 bits, 48 ​​bits ou Unités 64 bits (plus ou moins indépendantes de la taille de Word de l'ordinateur particulier).

5
Chris

La valeur RVB va de 0 à 255 car elle occupe exactement un octet de données. Un octet est égal à 8 bits et chaque bit représente un 0 ou un 1. Cela rend le binaire 0 sur 8 bits: 00000000 et 255 11111111. Le dernier bit indique s'il y a un 1 dans la valeur. L'avant-dernier dit s'il y a un 2 dans la valeur. Le troisième dernier indique s'il y a un 4 dans la valeur, et ainsi de suite en doublant à chaque fois. Si vous additionnez toutes les petites valeurs présentes, vous obtenez la valeur totale. Par exemple, 

    =10110101
    =1*128 + 0*64 + 1*32 + 1*16 + 0*8 + 1*4 + 0*2 + 1*1
    =128 + 32 + 16 + 4 + 1
    =181

Cela signifie que 10110101 en binaire est égal à 181 en forme décimale.

3
ThePiMan

Les valeurs RVB sont généralement stockées sous forme d'entiers pour économiser de la mémoire. Mais faire des mathématiques sur les couleurs se fait généralement en float car c'est plus facile, plus puissant et plus précis. Le fait de convertir des flottants en nombres entiers s’appelle "quantification" et jette la précision.

En règle générale, les valeurs RVB sont codées sous forme d'entiers de 8 bits, compris entre 0 et 255. Il est courant de penser que 0,0f est noir et 1,0f, blanc (luminosité maximale). Pour convertir [0, 255] en [0.0f, 1.0f], tout ce que vous avez à faire est de diviser par 255.0f.

Si vous y tenez, voici la formule pour reconvertir en entier: (int) floor (x * 255.0f + 0.5f). Mais fixez d'abord x à [0.0f, 1.0f] si nécessaire.

1
James Stanard

Étant donné que chaque Ocket est actuellement composé de 8 bits ( bi nary digi t

Supposons que nous ayons un Ocket rempli comme ceci:

1   0   1   0   0   1   0   1

pour chaque bit vous avez 2 possibilités: 0 ou 1

2 x 2 x 2 x 2 x 2 x 2 x 2 x 2    = 2^8 = 256

total: 256 

And for hexadecimal colors :
given that you have 3 couples of characters, dash excluded => ex: #00ff00
0, 1, 2, 3, 4 , 5, 6, 7, 8, 9, a, b, c, d, e, f = 16 possibilities 

16 x 16 = 256

R      V     B   = color
256  x 256 x 256 = 16 777 216 colors)
0
marcdahan