当我使用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
Answers:
作为二进制字节(八位数字)的数字124为01111100。要表示三字节的RGB三倍,将需要三乘八或24个这样的位。默认情况下,r.composite
通过丢弃每个频带中的最低有效位将其减少到仅15位。因此,它会将01111100修剪为01111(即15)。(等效地,它将124除以8,然后忽略余数。)显然,这三个5位结果以B,G,R的顺序连接在一起,形成一个15位数字(表示0到2 ^ 15-1 = 32767之间的值,该值足够小,可以将颜色表保持在可管理的大小)。 因此,这些值代表三个图像带,每个图像带仅具有5位精度,而不是原始的8位。
在问题的示例中,计算过程如下:
蓝色= 124转换为124/8 = 15(加上被忽略的4的余数)。二进制为01111。
绿色= 124转换为124/8 = 15(加上忽略的余数4)。二进制为01111。
红色= 172转换为172/8 = 21(加上忽略的4余数)。二进制形式是10101。
这些数字被链接为01111 0111110101。此15位二进制数字表示值15861 =(15 * 32 + 15)* 32 + 21。
r.composite
可能会做更多的处理,并且可能会有所不同,具体取决于您提供的选项,但是这些操作的确显示了将字节转换为五位值的基本方法。
您可以使用连续除以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。