波谱运算(Spectral Math)工具

Spectral Math是一种灵活的波谱处理工具,可以用数学表达式或IDL程序对波谱曲线(以及选择的多波段图像)进行处理。波谱曲线可以来自一幅多波段图像的Z剖面、波谱库或ASCII文件。

如图15.5为波谱运算的简单示意图——求三个波谱曲线的和。在表达式s1+s2+s3中(波谱运算中的变量是以s开头),可以分别给s1、s2、s3指定为一条波谱曲线,得到的结果是一条波谱曲线(x值与s1、s2、s3一样,y值是三者之和);也可以s1是一个多波段图像文件(其实是每个像素点的Z-剖面),s2和s3分别是两条波谱曲线,得到的结果是一个与输入的多波段图像一样波段数和行列数的图像。

图15.5波谱运算示意图

下面以求表达式(s1+s2+s3)/3为例介绍Spectral Math工具的使用。输入数据源为ENVI自带的波谱库文件。

  • 在主界面中,选择Display→Spectral Library Viewer,启动波谱库浏览器。
  • 在Spectral Library Viewer面板左侧,自动加载了ENVI自动波谱库文件。选择veg_lib文件夹里的“sli”波谱库文件。
  • 点击波谱列表中的地物名称,其光谱曲线将显示在面板右侧的视图中,任意选择三个光谱曲线(图15.6),可以点击右侧中间的三角箭头浏览已选的波谱列表。

图15.6 Spectral Library Viewer面板

  • 在Toolbox工具箱中,双击Spectral/Spectral Math工具,打开Spectral Math面板。
  • 在打开的Spectral Math面板中,在文本框Enter an expression中输入表达式(s1+s2+s3)/3,点击Add to List按钮将公式添加到上面的列表中,选中列表中的公式,点击OK;

提示:由于波谱库中的光谱数据类型为浮点型,所以不需要进行数据类型转换。如果输入光谱数据类型为字节型、整型等,需要进行数据类型转换。

  • 在弹出的Variables to Spectra Pairings面板中,为s1、s2、s3指定波谱曲线。Output Result to可以选择Same Window或New Window,这里选择New Window,将结果输出到新窗口中。可通过鼠标左键将输入三条曲线拖拽到新的窗口中,结果如图所示,红绿蓝三条曲线为输入波谱,紫色为输出波谱。
  • 在Variable to Spectra Pairings 面板中(图15.7),为每个变量指定波谱曲线。或者可以单击Map Variable to Input File按钮指定输入文件。

图15.7 Variable to Spectra Pairings 面板

  • 输出结果(Output Result to):New Window。
  • 单击OK按钮执行,结果是一条波谱曲线。

    在波谱运算中也可以使用IDL的数组运算符,以及数据类型转换函数。详细如表15.4所示。

表15.4 波谱运算常用函数和运算符(括号中所示)

一般数学运算符

三角函数

其它的波谱数学选项

加法(+)

正弦(sin(x))

关系运算(EQ,NE,LE,LT,GE,GT)

减法(-)

余弦(cos(x))

布尔运算(AND,OR,XOR,NOT)

乘法(*)

正切(tan(x))

类型转换函数(byte(), fix(), long(), float(), double(), complex())

除法(/)

反正弦(atan(x))

返回数组结果的IDL函数

小于(<)

反余弦(acos(x))

返回数组结果的IDL程序

大于(>)

反正切(atan(x))

用户自定义的IDL函数和程序

绝对值(abs(x))

双曲正弦(sinh(x))

 

平方根(sqrt(x))

双曲余弦(cosh(x))

 

指数(^)

双曲正切(tanh(x))

 

自然指数(exp(x))

 

 

自然对数(alog(x))

 

 

在波谱运算中也可以使用IDL程序和函数,操作步骤与波段运算基本一样。如下自定义函数格式。

FUNCTION sm_func, s1, [s2,..., sn, parameters and keywords]

   processing steps 

   RETURN, result 

END

编译和使用可参考前面章节的波段运算。

摘自《ENVI遥感图像处理方法 第二版》高等教育出版社

posted @ 2022-05-17 12:05  ENVI-IDL技术殿堂  阅读(1242)  评论(0编辑  收藏  举报