GRASS r.compositeツールを使用してQGISで複合ラスターを作成し、特定のセルをクリックすると、青/緑/赤/複合ラスターで次の値が表示されます:青= 124緑= 124赤= 172コンポジット= 15861。
青/緑/赤が特定のバンドの輝度値を表すことを知っています。15861は何を表しており、どのように計算されますか?
-r
Output color values as RRR:GGG:BBB
GRASS r.compositeツールを使用してQGISで複合ラスターを作成し、特定のセルをクリックすると、青/緑/赤/複合ラスターで次の値が表示されます:青= 124緑= 124赤= 172コンポジット= 15861。
青/緑/赤が特定のバンドの輝度値を表すことを知っています。15861は何を表しており、どのように計算されますか?
-r
Output color values as RRR:GGG:BBB
回答:
バイナリバイト(8桁)としての数値124は01111100です。3バイトのRGBトリプルを表すには、そのようなビットの3倍の8(24)が必要です。デフォルトでr.composite
は、各帯域の最下位ビットを破棄することにより、これを15ビットに減らします。したがって、01111100を15である01111にトリミングします(同等に、124を8で除算し、剰余を無視します)。これらの3つの5ビットの結果は、B、G、Rの順に連結され、15ビットの数値を形成します。 (0と2 ^ 15-1 = 32767の間の値を表します。これは、カラーテーブルを扱いやすいサイズに保つのに十分小さい値です)。 したがって、これらの値は3つの画像バンドを表し、それぞれが元の8つではなく5ビットの精度しかありません。
質問の例では、計算は次のように行われます。
青= 124は124/8 = 15に変換されます(残りの4は無視されます)。バイナリでは01111です。
緑= 124は124/8 = 15に変換されます(残りの4は無視されます)。バイナリでは01111です。
赤= 172は172/8 = 21に変換されます(残りの4は無視されます)。バイナリでは、これは10101です。
数字は01111 01111 10101に連結されます。この15桁の2進数は、値15861 =(15 * 32 + 15)* 32 + 21を表します。
r.composite
はこれよりも多くの処理を行う場合があり、指定するオプションに応じて少し異なる場合がありますが、これらの操作は、バイトを5ビット値に変換できる基本的な方法を示しています。
32による連続除算を使用して、手順をほぼ逆にすることができます。
15861/32 = 495に残りの21を加えます(8を掛けると、この21の残りは168になります。これは、赤いバンドの元の172よりも少し少ないだけです)。
495/32 = 15に15の余りを加えたもの(8を掛けると、この15の余りは120になります。これは、緑のバンドの元の124よりも少し少ないだけです)。
15のままにして、8を掛けると120になります。これは、青いバンドの元の124よりも少し少ないだけです。
r.composite
https://grass.osgeo.org/grass72/manuals/r.composite.htmlのマニュアルページ。