Co oznacza wartość komórki w złożonym rastrze?

9

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?

Jim O'Leary
źródło
1
Prawdopodobnie jest to liczba całkowita reprezentująca kompozyt alfa: docstore.mik.ua/orelly/java-ent/jfc/ch04_07.htm
WhiteboxDev
1
Jakiej wersji QGIS i Grass używasz? Proszę również podać swoje ustawienia, ponieważ wpływają one na działanie (a tym samym obliczenie r.composite). Co ciekawe, konsekwentnie otrzymuję tylko RGB i brak pasma kompozytowego w 2.4.
MappaGnosis
Używam QGIS 2.2 na Windows 7 z GUI GRASS 6.4.3. Do ustawień używam 32 dla liczby wartości dla czerwonego, zielonego i niebieskiego. Samouczek, którego używam, to kurs Akademii FOSS4G na temat teledetekcji. Dokument samouczka znajduje się na stronie foss4geo.files.wordpress.com/2014/08/module-3-lab2.pdf .
Jim O'Leary
2
Proszę przeczytać instrukcję dla r.composite . Jeśli użyjesz „domyślnych” poziomów intensywności dla każdego komponentu (to jest 32), powinieneś uzyskać nieco inne wartości RGB w porównaniu do „wejściowego” RGB. Możesz użyć r.what z -rparametrem ( 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].
Nikos Alexandris
1
Sprawdź także ten wątek: lists.osgeo.org/pipermail/grass-user/2015- stycznia 071739.html .
Nikos Alexandris

Odpowiedzi:

1

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

  1. Niebieski = 124 jest konwertowany na 124/8 = 15 (plus zaniedbana reszta 4). W systemie binarnym jest to 01111.

  2. Zielony = 124 jest konwertowany na 124/8 = 15 (plus zaniedbana reszta 4). W systemie binarnym jest to 01111.

  3. Czerwony = 172 jest konwertowany na 172/8 = 21 (plus zaniedbana reszta 4). W systemie binarnym jest to 10101.

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

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

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

  3. Pozostaje nam 15, które pomnożone przez 8 daje 120, czyli tylko trochę mniej niż oryginalne 124 dla niebieskiego pasma.

Odniesienie

r.compositestrona podręcznika na https://grass.osgeo.org/grass72/manuals/r.composite.html .

Whuber
źródło