Kiedy tworzę kompozytowy raster w QGIS za pomocą narzędzia GRASS r.composite, a następnie klikam określoną komórkę, otrzymuję te wartości w niebieskich / zielonych / czerwonych / kompozytowych rastrach: niebieski = 124 zielony = 124 czerwony = 172 kompozyt = 15861.
Wiem, że niebieski / zielony / czerwony reprezentują wartości jasności podanych pasm. Co oznacza 15861 i jak jest obliczany?
-r
parametrem (Output color values as RRR:GGG:BBB
) do zapytania o kombinację RGB komórki. Również, aby spojrzeć na r.what.color . [Odsyła do GRASS6, ponieważ jest to wersja używana przez OP].Odpowiedzi:
Liczba 124 jako bajt binarny (osiem cyfr) to 01111100. Reprezentacja potrójnej trzy bajty RGB wymagałaby trzy razy osiem lub 24 takich bitów. Domyślnie
r.composite
zmniejsza to do zaledwie 15 bitów, odrzucając najmniej znaczące bity w każdym paśmie. W ten sposób przycina 01111100 do 01111, czyli 15. (Odpowiednio dzieli 124 przez 8 i ignoruje resztę). Najwyraźniej te trzy pięciobitowe wyniki są łączone w kolejności B, G, R, tworząc liczbę 15-bitową (reprezentujące wartości od 0 do 2 ^ 15-1 = 32767, co jest wystarczająco małe, aby utrzymać tabelę kolorów w możliwym do zarządzania rozmiarze). Wartości te reprezentują zatem trzy pasma obrazu, z których każdy ma zaledwie pięć bitów dokładności, a nie osiem pierwotnych.W przykładzie pytania obliczenia przebiegają w następujący sposób:
Niebieski = 124 jest konwertowany na 124/8 = 15 (plus zaniedbana reszta 4). W systemie binarnym jest to 01111.
Zielony = 124 jest konwertowany na 124/8 = 15 (plus zaniedbana reszta 4). W systemie binarnym jest to 01111.
Czerwony = 172 jest konwertowany na 172/8 = 21 (plus zaniedbana reszta 4). W systemie binarnym jest to 10101.
Cyfry są łączone w 01111 01111 10101. Ten 15-cyfrowy numer binarny reprezentuje wartość 15861 = (15 * 32 + 15) * 32 + 21.
r.composite
może wykonać więcej przetwarzania niż to i może zrobić to nieco inaczej w zależności od podanych opcji, ale te operacje pokazują podstawowy sposób, w jaki bajt może zostać przekształcony w wartość pięciobitową.Możesz w przybliżeniu odwrócić procedurę za pomocą kolejnych podziałów o 32:
15861/32 = 495 plus reszta 21. (Pomnożona przez 8, ta reszta z 21 daje 168, czyli tylko nieco mniej niż oryginalna 172 dla czerwonego pasma).
495/32 = 15 plus reszta równa 15. (Pomnożona przez 8, ta reszta równa 15 daje 120, czyli tylko trochę mniej niż oryginalne 124 dla zielonego pasma).
Pozostaje nam 15, które pomnożone przez 8 daje 120, czyli tylko trochę mniej niż oryginalne 124 dla niebieskiego pasma.
Odniesienie
r.composite
strona podręcznika na https://grass.osgeo.org/grass72/manuals/r.composite.html .źródło