IDL下的颜色模式

IDL中有两种不同的颜色模式:

  1. 分解模式(decomposed color):    Decomposed=1
  2. 索引模式(indexed color):     Decomposed=0

默认情况(24位真彩)下为IDL使用decomposed color

每个颜色最终由表示红绿蓝的三个值决定,值范围从0到255.称为色彩三元组(color triple),每个值的大小决定了色分量的强弱,0表示最弱,255表示最强。

decomposed模式直接从真彩色中给出RGB的三个值,然后选出色彩。

而indexed模式则是先从真彩中选出256色的子集,然后使用0到255的一个index从256色子集中选取颜色。

如果决定直接选取颜色,须先定义RGB三元组。在绘图系统下,先创建一个24位的值,然后把这个值分解为三个8位的值[R, G, B],这个过程称作颜色分解(color decomposition),例如:

某绿色在真彩中的位置为5479477 -> [53, 156, 83]([B, G, R]) (可以验证,53 + 156*2^8 + 83*2^16 = 5479477,写成二进制,5479477 -> 10100111001110000110101 -> 01010011 10011100 00110101 -> 83 156 53,注意二进制表示的时候是逆序的)。

而如果想在indexed模式下使用这个绿色,首先要把它加载到颜色表/调色板上并指定它的index(这里假定是100):

TVLCT, 53, 156, 83, 100 greenColor = 100

所以,在两种不同的模式下greenColor有不同的表述:
在decomposed模式下,greenColor=5479477L
在indexed模式下,greenColor=100

这就可以解释为什么有时会有一些奇怪的现象发生,例如图像结果全部是红色。这是默认使用decomposed模式,但赋值给的却是index的缘故,例如:

Device, Decomposed=1 ;(decomposed model)
Plot, FindGen(1), Color=100

正确使用应该是:

Device, Decomposed=0 ;(indexed模式)
Plot, FindGen(1), Color=100

或者

Device, Decomposed=1 ;(decomposed模式)
Plot, FindGen(1), Color=5479477L
IDL创建数组函数整理 IDL调用ENVI函数进行栅格转矢量操作

作者:,GIS爱好者。
分享本文,请您带上本文链接
分享到:

已有 2 条评论

  1. wkl7123
    1#
    wkl7123  · 2015-03-30 05:02

    TVLCT, 53, 156, 83, 100 greenColor = 100这里少了一个分号吧

      1. 麻辣GIS
        麻辣GIS  · 2015-04-04 04:20

        你好,这个我有点记不清楚了,需要验证一下。

发表评论