¿Qué significa el valor de celda en un ráster compuesto?

9

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?

Jim O'Leary
fuente
1
Es probable que sea un valor entero que represente el compuesto alfa: docstore.mik.ua/orelly/java-ent/jfc/ch04_07.htm
WhiteboxDev
1
¿Qué versión de QGIS y Grass estás usando? Además, indique su configuración ya que afecta la operación (y por lo tanto el cálculo de r.composite). Curiosamente, siempre obtengo RGB y ninguna banda compuesta en 2.4.
MappaGnosis
Estoy usando QGIS 2.2 en Windows 7 con la GUI GRASS 6.4.3. Para la configuración, estoy usando 32 para la cantidad de valores para rojo, verde y azul. El tutorial que estoy usando es el curso FOSS4G Academy sobre Teledetección. El documento tutorial está en foss4geo.files.wordpress.com/2014/08/module-3-lab2.pdf .
Jim O'Leary
2
Por favor, lea el manual de r.composite . Si utiliza los niveles de intensidad "predeterminados" para cada componente (es decir, 32), debería obtener valores RGB ligeramente diferentes en comparación con el RGB "de entrada". Es posible que desee usar r.what con el -rpará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].
Nikos Alexandris
1
Consulte también este hilo: lists.osgeo.org/pipermail/grass-user/2015-January/071739.html .
Nikos Alexandris

Respuestas:

1

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.compositereduce 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í:

  1. Azul = 124 se convierte a 124/8 = 15 (más un resto descuidado de 4). En binario esto es 01111.

  2. Verde = 124 se convierte en 124/8 = 15 (más un resto descuidado de 4). En binario esto es 01111.

  3. Rojo = 172 se convierte en 172/8 = 21 (más un resto descuidado de 4). En binario esto es 10101.

  4. 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:

  1. 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).

  2. 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).

  3. 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.compositepágina del manual en https://grass.osgeo.org/grass72/manuals/r.composite.html .

whuber
fuente