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?
-r
parâ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].Respostas:
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.composite
reduz 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:
Azul = 124 é convertido em 124/8 = 15 (mais um restante negligenciado de 4). Em binário, este é 01111.
Verde = 124 é convertido em 124/8 = 15 (mais um restante negligenciado de 4). Em binário, este é 01111.
Vermelho = 172 é convertido em 172/8 = 21 (mais um restante negligenciado de 4). Em binário, este é 10101.
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:
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.)
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.)
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.composite
manual em https://grass.osgeo.org/grass72/manuals/r.composite.html .fonte