ENVI扩展补丁:快速坏点修复工具
更新日志
2022.06.30 —— 带来重大更新
- 自动获取数据覆盖区矢量,无需手动绘制,提高坏点修复效率,真正实现批处理
- 工具将进行多次尝试直至修复所有坏点
- 显示清晰日志消息,可了解修复进度、每一个波段的坏点个数等信息
- 修改使用窗口内有效像元的中值进行坏点填充,更合理
- 建议仔细阅读使用说明/重要提醒/负值处理章节内容,再使用此工具
旧版修复工具可参考博文:https://www.cnblogs.com/enviidl/p/16267249.html
几条坏消息
-
本工具仅支持ENVI标准格式数据。
-
本工具每次循环需读取1个波段数据到内存中,所以数据量有限制。
-
注:比如数据量 4GB,4个波段,每次读取数据量1GB,内存至少2倍以上。
-
-
本工具支持 ENVI 5.3 及更高版本。
几条好消息
-
本工具坏点修复堪称光速(对原始数据进行更新,不需要重新写出数据)。
-
注:如果原始数据有其他用处,请提前备份。
-
-
本工具可以进行批处理。
-
本工具支持输入矢量作为掩膜文件(当背景值较多时,一定要输入矢量掩膜文件)。
-
可同时处理0值、NaN、Inf等异常值。
效率对比
-
测试数据:3.34GB
-
数据类型:UINT
-
数据维度:21144×21256×4
-
旧版工具:60分钟
-
新版工具:3分钟
注:工具测试时设置参数相同,窗口大小均为3,均使用了掩膜文件。
安装方法
方法1:使用 ENVI App Store 进行 ENVI 扩展工具的安装与管理。
App Store 下载地址:envi.geoscene.cn/appstore
方法2:手动下载 https://envi.geoscene.cn/appstore/repabpeast
下载 zip 压缩包并解压,将得到的 extensions 和 custom_code 文件夹拷贝到如下 ENVI 安装路径,覆盖同名文件夹即可:
-
ENVI 5.3 - C:\Program Files\Exelis\ENVI53\
-
ENVI 5.4 及以上 - C:\Program Files\Harris\ENVI5x\
重启 ENVI 即可使用。
使用说明
1)重新启动 ENVI,选择工具箱 /Extensions/Replace Bad Pixels [Fast];
2)第一次启动工具时,会弹出如下提示:
3)在弹出的对话框中设置如下参数,单击 OK。
-
Input Rasters:支持多选栅格数据,即批处理。只支持 ENVI 标准格式(即dat+hdr)
-
Kernel Size:修复窗口大小。若坏洞较大,建议适当调大窗口,可提高修复效率,减少修复次数
- Fill Value:填充值。若不设置,将只使用窗口内有效像元均值进行填充,如果窗口内无有效像元,则不修复此坏点;若设置为 2,在窗口内无有效像元时,将使用 2 填充坏点
-
Data Ignore Value:设定背景值(或需要修复的值)。以数据自带 Data Ignore Value 为优先,若数据不含 DIV,则以输入值为准;若不设置,则默认为 0
-
Mask Vector:矢量掩膜文件。新版工具已支持自动生成此矢量(当图像只包含一个区域时可精确自动生成矢量,若图像中存在不相邻的几个区域时,请手动绘制矢量,因为自动生成的矢量会包含几个区域之间的背景区域)
-
Inverse Mask:是否反转掩膜(仅在手动设置 Mask Vector 时有效)
-
Display Results:是否显示结果
4)将显示详细的日志消息,如下图所示:
5)修复效果如下:
重要提醒
当图像中存在多个不相邻的区域时(如下图所示),请手动绘制有效范围矢量,并设置为 Mask Vector 参数。
负值处理
若错误提示为“多次修复无效,请检查图像中是否存在负值”,请检查图像中是否存在负值。有可能因为窗口有效像元均值正好为0,导致无法修复。
此时需要对原始数据进行负值去除。
下面方法仅适用于背景值为0、负值为异常值的情况。可以将负值像元赋值于特定值,比如2
步骤如下:
1)在工具箱打开波段运算工具,Toolbox/Band Algebra/Band Math
2)输入公式:(b1 lt 0)*2+(b1 ge 0)*b1
此公式可以将负值像元赋值为2,若有其他需求请自行修改公式
3)点击 Add to List,点击 OK
4)在弹出的对话框中点击 Map Variable to Input File,可以对整个文件所有波段进行处理。在弹出对话框中选择输入文件即可
5)回到波段运算界面后,设置输出文件路径,点击 OK 即可
6)然后再使用坏点修复工具对波段运算结果进行修复。