如何在ENVI中使用掩膜提取&去除遥感影像中的异常值以及在Band Math中实现相同操作效果的方法
本文介绍了如何在ENVI中使用掩膜功能处理遥感影像。介绍了掩膜的与其实现方法,有利于用户更好的了解掩膜原理和流程,提取很感兴趣的数值和区域,减少异常值对实验结果的影响。并介绍了如何在ENVI或ENVI Classic的Band Math功能中通过公式计算得到相同的操作效果以及常见的比较操作符含义及其相关运算。
一、 掩膜的介绍
掩膜(Masking),主要用于选择或隐藏图像中的某些区域。掩膜的原理简单来说就是通过对图像进行条件筛选,通过设置范围(如0-1),在原图的基础上将不在这个范围的区域提取出来,生成掩膜图层。掩膜图层通常是一个二值图像,其中掩膜区域的像素值为 1(有效区域),而非掩膜区域的像素值为 0(无效区域)。将掩膜图像叠加在原始图像上导出后,就可以利用掩膜图像,将原始图像上不在范围内的值全部变为0,而其他值保持不变。
可以认为,掩膜就是一张0,1二值膜,0值完全不透过,将该区域的值也变为0;1值完全透过,保留影像的原始值。
掩膜可以应用于图像的任何类型数据(如反射率、温度、NDVI 等),其目的是对数据进行精细化处理,避免不感兴趣的区域干扰分析。
二、 掩膜的制作
2.1 在ENVI中导入图像后,找到Toolbox的搜索栏,输入Build Raster Mask:

2.2 选择需要进行处理的原始影像:

2.3 选择Options->Import Data Rang,仍然选择原始影像作为import

2.4 输入值的范围(这里的范围示例为0-1)

2.5 选择掩膜的保存路径

三、 掩膜处理
生成的掩膜:(其中白色值为1,黑色值为0)

在原来的图像中存在许多异常负值,可以在Quick Stats中查看:

打开File->Save As->Save As (ENVI……):

选中需要导出的原始影像后添加掩膜:

然后选择输出格式和储存路径将新图像导出即可,如果不想取到0,或者其他特定值,则在Data Ignore Value中输入0或者其他特定值。这个空为非必填项。

现在当我们利用Quick Stats查看新图像的信息时,可以发现经过处理,影像的值变为0-1之间,且超出范围的部分被赋值为0:(这样就取出了(0,1]范围内的值)

四、Band Math中实现让图像在[0,1]区间取值
有关于Band Math的介绍,可以参考我的另一篇博客:
如何在ENVI和ENVI Classic中使用Band Math进行波段运算
ENVI中Band Math的位置位于Toolbox的Band Algebra->Band Math(也可以在Toolbox搜索框中直接搜索);

ENVI Classic中Band Math位于单栏Basic Tools->Band Math

在Band Math中输入公式:(将影像的DN值限制在[0,1],b1代表你要处理的波段)
(b1 lt 0)*0+((b1 ge 0)and (b1 lt 1))*b1 +(b1 ge 1)*0
- 如果
b1 < 0,结果为0 - 如果
0 <= b1 < 1,结果为b1(即保持b1的值) - 如果
b1 >= 1,结果为 0
五、 常见比较操作符:
-
· 用于比较两个值是否相等。例如,eq:等于(equal to)b2 eq 0表示b2是否等于 0。 -
· 用于比较两个值是否不相等。例如,ne:不等于(not equal to)b2 ne 0表示b2是否不等于 0。 -
· 比较两个值,左边的值是否小于右边的值。例如,lt:小于(less than)b2 lt 0表示b2是否小于 0。 -
· 比较两个值,左边的值是否小于或等于右边的值。例如,le:小于或等于(less than or equal to)b2 le 0表示b2是否小于或等于 0。 -
· 比较两个值,左边的值是否大于右边的值。例如,gt:大于(greater than)b2 gt 0表示b2是否大于 0。 -
· 比较两个值,左边的值是否大于或等于右边的值。例如,ge:大于或等于(greater than or equal to)b2 ge 0表示b2是否大于或等于 0。
六、 常见的二值化公式
以0为阈值分割,大于0的取1,小于等于0的取0:
(b1 gt 0)*1+(b1 le 0)*0
【注:本文使用的软件为ENVI 5.6】
更多推荐

所有评论(0)