ENVI 逻辑运算符
1.band math
2.波段运算满足条件
- 必须符合IDL语言书写波段运算表达式
- 所有输入波段必须具有相同的空间大小
- 表达式中的所有变量都必须用Bn(或bn)命名
- 结果波段必须与输入波段的空间大小相同
3.数据类型
!!!关系运算符对真值(关系成立)返回值为1,对假值(关系不成立)返回值为0。
!!!最小值(<)和最大值(>)运算符,但与关系运算符或Boolean运算符不同的是:它们不返还真值或假值,而返还实际的最小值和最大值。
!!!例子1:
1.要找出所有负值像元并用值-999代替它们,可以使用如下的波段运算表达式:
(b1 lt 0)*(-999)+(b1 ge 0)* b1
系统读取表达式(b1 lt 0)部分后将返还一个与b1维数相同的数组,其中b1值为负的区域返回值为1;其他部分返回值为0,因此在乘以替换值-999时,相当于只对那些满足条件的像元有影响。第二个关系运算符(b1 ge 0)是对第一个的补充——找出那些值非负的像元,乘以它们的初始值,然后再加入替换值后的数组中。
!!!例子2:
在图像b1中,像元值大于200的像元被认为是云,希望用图像b2中的相应像元对它们进行替换。
(b1 gt 200)* b2 + (b1 le 200)* b1
用类似的运算表达式,可以将一幅图像的黑色背景变成白色背景:
(b1 eq 0)*255 + (b1 gt 0)*b1
b1等于0的部分返回值为1,1255=255,其他部分返回值为0,0255=0.b1大于0的部分返回1,1的部分*b1=b1的原始部分。
4.运算优先级
4.利用波段运算修改NaN
NaN为Not a Number的缩写,在遥感图像中属于异常值。
修改0值为NaN
float(b1)*b1/b1
修改特定值(250)为NaN
b1*float(b1 ne 250)/(b1 ne 250)
修改NaN为特定值(-999):
finite(b1, /nan)*(-999) or (~finite(b1, /nan))*b1
修改NaN为0值(先按上面方法修改为-999或其他图像中不存在的值)
(b1 ne -999)*b1
5.波谱运算(Spectral Math)!!!
ENVI Spectral Math是一种灵活的波谱处理工具,可以用数学表达式或IDL程序对波谱曲线(以及选择的多波段图像)进行处理。波谱曲线可以来自一幅多波段图像的Z剖面、波谱库或ASCII文件。
文章来源