一、 掩膜的介绍
掩膜(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)*1
- 如果
b1 < 0
,结果为0
- 如果
0 <= b1 < 1
,结果为b1
(即保持b2
的值) - 如果
b1 >= 1
,结果为1
五、 常见比较操作符:
-
· 用于比较两个值是否相等。例如,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。
【注:本文使用的软件为ENVI 5.6】