ENVI中处理图像遇到NaN时的处理方法

当图像中包含 NaN 等无效值时,在 ENVI 中进行某些处理可能会遇到类似下方的提示:
此时,可以有几种方法解决这个问题。
方法1:选择输入文件时掩膜NaN
以 PCA 变化为例,在工具箱双击 /Transform/PCA Rotation/Forward PCA Rotation New Statistics and Rotate,在弹出的对话框中,选中待处理图像,在 Mask Options 下拉列表中,如果 Mask NaNs [All Bands] 和 Mask NaNs [Any Band] 两个菜单可用,说明图像中包含NaN像元。
根据需要进行掩膜,一般建议选择 Mask NaNs [Any Band],表示任意一个波段 DN 值为 NaN 时便掩膜掉这个像元。然后点击 OK,将自动生成掩膜文件并对输入文件进行掩膜,最后弹出 PCA 面板,设置参数便可正常进行处理了。
这种方法不需要预先对输入图像进行掩膜处理。
方法2:使用 Apply Mask 工具
可以使用 Apply Mask 工具对输入图像进行掩膜处理,将 NaN 掩膜为 0 值或其他值。
ENVI 5.4.1 及以上版本移除了这个工具,大家可以在 ENVI App Store 中安装如下工具,重启 ENVI 即可使用。
操作方法如下:
在工具箱启动 Apply Mask 工具:
ENVI 5.4.1以下版本:Toolbox/anagement/Masking/Apply Mask
ENVI 5.4.1及以上版本:Toolbox/ENVI Classic/Apply Mask
注:ENVI 5.4.1及以上版本需要安装扩展工具
在弹出的 Apply Mask Input File 面板中,在 Mask Options 下拉列表中,如果 Mask NaNs [All Bands] 和 Mask NaNs [Any Band] 两个菜单可用,说明图像中包含 NaN 像元。根据需要进行掩膜,一般建议选择 Mask NaNs [Any Band],表示任意一个波段DN值为NaN时即掩膜掉这个像元。然后点击 OK 继续。
在弹出的面板中设置 Mask Value,即背景值。如图中所示,将会把值为 NaN 的像元掩膜为 0 值。然后再对掩膜后图像进行处理即可。
方法3:利用波段运算工具
请查看博文“ENVI扩展工具:利用波段运算修改NaN方法总结”:https://www.cnblogs.com/enviidl/p/16267337.html