O que o valor da célula em uma varredura composta significa?

9

Quando faço uma varredura composta no QGIS usando a ferramenta GRASS r.composite e clico em uma determinada célula, obtenho esses valores nas rasters azul / verde / vermelho / composto: azul = 124 verde = 124 vermelho = 172 composto = 15861.

Eu sei que o azul / verde / vermelho representam os valores de brilho das bandas especificadas. O que o 15861 representa e como é calculado?

Jim O'Leary
fonte
11
É provável que um valor de número inteiro que representa o composto alfa: docstore.mik.ua/orelly/java-ent/jfc/ch04_07.htm
WhiteboxDev
11
Qual versão do QGIS e Grass você está usando? Além disso, indique suas configurações conforme elas afetam a operação (e, portanto, o cálculo do r.composite). Curiosamente, eu sempre recebo RGB e nenhuma banda composta no 2.4.
MappaGnosis
Estou usando o QGIS 2.2 no Windows 7 com a GUI do GRASS 6.4.3. Para configurações, estou usando 32 para o número de valores para vermelho, verde e azul. O tutorial que estou usando é o curso da FOSS4G Academy em Sensoriamento Remoto. O documento do tutorial está em foss4geo.files.wordpress.com/2014/08/module-3-lab2.pdf .
Jim O'Leary
2
Por favor, leia o manual para r.composite . Se você usar os níveis de intensidade "padrão" para cada componente (ou seja, 32), deverá obter valores RGB ligeiramente diferentes em comparação com o RGB "entrada". Você pode usar r.what com o -rparâmetro ( Output color values as RRR:GGG:BBB) para consultar a combinação RGB de uma célula. Também veja r.what.color . [Links para o GRASS6, pois esta é a versão que o OP usa].
Nikos Alexandris
11
Verifique também este tópico: lists.osgeo.org/pipermail/grass-user/2015-January/071739.html .
Nikos Alexandris

Respostas:

1

O número 124 como um byte binário (oito dígitos) é 01111100. Para representar um triplo RGB de três bytes, seria necessário três vezes oito ou 24 bits. Por padrão, r.compositereduz isso para apenas 15 bits descartando os bits menos significativos em cada banda. Assim, ele apara 01111100 a 01111, que é 15. (Equivalentemente, divide 124 por 8 e ignora o restante.) Aparentemente, esses três resultados de cinco bits são concatenados na ordem B, G, R para formar um número de 15 bits. (representando valores entre 0 e 2 ^ 15-1 = 32767, que é pequeno o suficiente para manter a tabela de cores em um tamanho gerenciável). Portanto, esses valores representam três bandas de imagem, cada uma com apenas cinco bits de precisão, em vez dos oito originais.

No exemplo da pergunta, os cálculos procedem da seguinte maneira:

  1. Azul = 124 é convertido em 124/8 = 15 (mais um restante negligenciado de 4). Em binário, este é 01111.

  2. Verde = 124 é convertido em 124/8 = 15 (mais um restante negligenciado de 4). Em binário, este é 01111.

  3. Vermelho = 172 é convertido em 172/8 = 21 (mais um restante negligenciado de 4). Em binário, este é 10101.

  4. Os dígitos são concatenados em 01111 01111 10101. Este número binário de 15 dígitos representa o valor 15861 = (15 * 32 + 15) * 32 + 21.

r.composite pode fazer mais processamento do que isso e pode ser um pouco diferente, dependendo das opções fornecidas, mas essas operações mostram a maneira básica pela qual um byte pode ser convertido em um valor de cinco bits.

Você pode aproximadamente reverter o procedimento usando divisões sucessivas em 32:

  1. 15861/32 = 495 mais um restante de 21. (Multiplicado por 8, esse restante de 21 fornece 168, que é apenas um pouco menos que o 172 original da faixa vermelha.)

  2. 495/32 = 15 mais um restante de 15. (Multiplicado por 8, esse restante de 15 fornece 120, que é apenas um pouco menos do que o 124 original para a faixa verde.)

  3. Ficamos com 15, que, quando multiplicados por 8, dão 120, o que é apenas um pouco menos que o 124 original da banda azul.

Referência

r.compositemanual em https://grass.osgeo.org/grass72/manuals/r.composite.html .

whuber
fonte