Lorsque je crée un raster composite dans QGIS à l'aide de l'outil GRASS r.composite, puis que je clique sur une certaine cellule, j'obtiens ces valeurs dans les rasters bleu / vert / rouge / composite: bleu = 124 vert = 124 rouge = 172 composite = 15861.
Je sais que le bleu / vert / rouge représente les valeurs de luminosité des bandes données. Que représente le 15861 et comment est-il calculé?
-r
paramètre (Output color values as RRR:GGG:BBB
) pour interroger la combinaison RVB d'une cellule. Aussi regarder r.what.color . [Liens vers GRASS6, car il s'agit de la version utilisée par l'OP].Réponses:
Le nombre 124 sous forme d'octet binaire (huit chiffres) est 01111100. Pour représenter un triple RVB de trois octets, il faudrait trois fois huit, ou 24, de tels bits. Par défaut,
r.composite
réduit ce nombre à seulement 15 bits en supprimant les bits les moins significatifs de chaque bande. Ainsi, il coupe 01111100 à 01111, ce qui est 15. (De manière équivalente, il divise 124 par 8 et ignore le reste.) Apparemment, ces trois résultats de cinq bits sont concaténés dans l'ordre B, G, R pour former un nombre de 15 bits (représentant des valeurs comprises entre 0 et 2 ^ 15-1 = 32767, ce qui est suffisamment petit pour conserver la table des couleurs à une taille gérable). Ces valeurs représentent donc trois bandes d'images, chacune avec seulement cinq bits de précision plutôt que les huit originaux.Dans l'exemple de la question, les calculs se déroulent comme suit:
Bleu = 124 est converti en 124/8 = 15 (plus un reste négligé de 4). En binaire, c'est 01111.
Vert = 124 est converti en 124/8 = 15 (plus un reste négligé de 4). En binaire, c'est 01111.
Rouge = 172 est converti en 172/8 = 21 (plus un reste négligé de 4). En binaire, c'est 10101.
Les chiffres sont concaténés en 01111 01111 10101. Ce nombre binaire à 15 chiffres représente la valeur 15861 = (15 * 32 + 15) * 32 + 21.
r.composite
peut effectuer plus de traitement que cela, et il peut le faire légèrement différemment selon les options que vous fournissez, mais ces opérations montrent la manière de base de convertir un octet en une valeur de cinq bits.Vous pouvez approximativement inverser la procédure en utilisant des divisions successives par 32:
15861/32 = 495 plus un reste de 21. (Multiplié par 8, ce reste de 21 donne 168, ce qui n'est qu'un peu moins que le 172 original pour la bande rouge.)
495/32 = 15 plus un reste de 15. (Multiplié par 8, ce reste de 15 donne 120, ce qui n'est qu'un peu moins que le 124 d'origine pour la bande verte.)
Nous nous retrouvons avec 15, qui, multiplié par 8, donne 120, ce qui n'est qu'un peu moins que les 124 d'origine pour la bande bleue.
Référence
r.composite
page de manuel sur https://grass.osgeo.org/grass72/manuals/r.composite.html .la source