Cuando hago un ráster compuesto en QGIS usando la herramienta GRASS r.composite y luego hago clic en una celda determinada, obtengo estos valores en los rásteres azul / verde / rojo / compuesto: azul = 124 verde = 124 rojo = 172 compuesto = 15861.
Sé que el azul / verde / rojo representa los valores de brillo de las bandas dadas. ¿Qué representa el 15861 y cómo se calcula?
-r
parámetro (Output color values as RRR:GGG:BBB
) para consultar la combinación RGB de una celda. También para mirar r.what.color . [Enlaces a GRASS6, ya que esta es la versión que usa el OP].Respuestas:
El número 124 como un byte binario (ocho dígitos) es 01111100. Para representar un triple RGB de tres bytes requeriría tres veces ocho, o 24, tales bits. Por defecto,
r.composite
reduce esto a solo 15 bits descartando los bits menos significativos en cada banda. Por lo tanto, recorta 01111100 a 01111, que es 15. (Equivalente, divide 124 por 8 e ignora el resto). Aparentemente, estos tres resultados de cinco bits se concatenan en el orden B, G, R para formar un número de 15 bits. (que representa valores entre 0 y 2 ^ 15-1 = 32767, que es lo suficientemente pequeño como para mantener la tabla de colores en un tamaño manejable). Por lo tanto, estos valores representan tres bandas de imágenes, cada una con solo cinco bits de precisión en lugar de las ocho originales.En el ejemplo de la pregunta, los cálculos proceden así:
Azul = 124 se convierte a 124/8 = 15 (más un resto descuidado de 4). En binario esto es 01111.
Verde = 124 se convierte en 124/8 = 15 (más un resto descuidado de 4). En binario esto es 01111.
Rojo = 172 se convierte en 172/8 = 21 (más un resto descuidado de 4). En binario esto es 10101.
Los dígitos se concatenan en 01111 01111 10101. Este número binario de 15 dígitos representa el valor 15861 = (15 * 32 + 15) * 32 + 21.
r.composite
puede procesar más que esto, y puede hacerlo de manera ligeramente diferente dependiendo de las opciones que proporcione, pero estas operaciones muestran la forma básica en que un byte puede convertirse en un valor de cinco bits.Puede revertir aproximadamente el procedimiento usando divisiones sucesivas por 32:
15861/32 = 495 más un resto de 21. (Multiplicado por 8, este resto de 21 da 168, que es solo un poco menos que el 172 original para la banda roja).
495/32 = 15 más un resto de 15. (Multiplicado por 8, este resto de 15 da 120, que es solo un poco menos que el 124 original para la banda verde).
Nos quedan 15, que cuando se multiplica por 8 da 120, que es solo un poco menos que el 124 original para la banda azul.
Referencia
r.composite
página del manual en https://grass.osgeo.org/grass72/manuals/r.composite.html .fuente