Wenn ich in QGIS mit dem Werkzeug GRASS r.composite ein zusammengesetztes Raster erstelle und dann auf eine bestimmte Zelle klicke, werden diese Werte in den blau / grün / rot / zusammengesetzten Rastern angezeigt: blau = 124 grün = 124 rot = 172 zusammengesetzt = 15861.
Ich weiß, dass Blau / Grün / Rot die Helligkeitswerte der angegebenen Bänder darstellen. Was repräsentiert der 15861 und wie wird er berechnet?
-r
Parameter (Output color values as RRR:GGG:BBB
) verwenden, um die RGB-Kombination einer Zelle abzufragen. Auch auf r.what.color zu schauen . [Links zu GRASS6, da dies die vom OP verwendete Version ist].Antworten:
Die Zahl 124 als binäres Byte (acht Ziffern) ist 01111100. Um ein RGB-Tripel von drei Bytes darzustellen, wären dreimal acht oder 24 solcher Bits erforderlich. Standardmäßig
r.composite
wird dies auf nur 15 Bit reduziert, indem die niedrigstwertigen Bits in jedem Band verworfen werden. Somit werden 01111100 auf 01111 gekürzt, was 15 ist. (Entsprechend teilt es 124 durch 8 und ignoriert den Rest.) Anscheinend werden diese drei Fünf-Bit-Ergebnisse in der Reihenfolge B, G, R verkettet, um eine 15-Bit-Zahl zu bilden (repräsentiert Werte zwischen 0 und 2 ^ 15-1 = 32767, was klein genug ist, um die Farbtabelle auf einer überschaubaren Größe zu halten). Diese Werte repräsentieren daher drei Bildbänder mit jeweils nur fünf Genauigkeitsbits anstelle der ursprünglichen acht.Im Beispiel der Frage laufen die Berechnungen folgendermaßen ab:
Blau = 124 wird in 124/8 = 15 umgewandelt (plus einen vernachlässigten Rest von 4). In der Binärdatei ist dies 01111.
Grün = 124 wird in 124/8 = 15 umgewandelt (plus einen vernachlässigten Rest von 4). In der Binärdatei ist dies 01111.
Rot = 172 wird in 172/8 = 21 umgewandelt (plus einen vernachlässigten Rest von 4). In der Binärdatei ist dies 10101.
Die Ziffern werden zu 01111 01111 10101 verkettet. Diese 15-stellige Binärzahl repräsentiert den Wert 15861 = (15 * 32 + 15) * 32 + 21.
r.composite
Je nach den von Ihnen bereitgestellten Optionen wird möglicherweise mehr verarbeitet, und dies kann je nach den von Ihnen angegebenen Optionen geringfügig anders sein. Diese Vorgänge zeigen jedoch die grundlegende Art und Weise, wie ein Byte in einen Fünf-Bit-Wert konvertiert werden kann.Sie können den Vorgang mit aufeinanderfolgenden Unterteilungen durch 32 ungefähr umkehren :
15861/32 = 495 plus ein Rest von 21. (Multipliziert mit 8 ergibt dieser Rest von 21 168, was nur ein wenig weniger ist als das ursprüngliche 172 für das rote Band.)
495/32 = 15 plus ein Rest von 15. (Multipliziert mit 8 ergibt dieser Rest von 15 120, was nur ein wenig weniger ist als die ursprünglichen 124 für das grüne Band.)
Wir haben noch 15 übrig, was multipliziert mit 8 120 ergibt, was nur ein bisschen weniger ist als die ursprünglichen 124 für das blaue Band.
Referenz
r.composite
Handbuchseite unter https://grass.osgeo.org/grass72/manuals/r.composite.html .quelle