加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

ENVI利用波段运算修改NaN(或Inf)的方法

(2020-07-18 15:38:56)
分类: 遥感

NaNNot a Number的缩写,在遥感图像中属于异常值。很多用户有修改NaN的需求,比如把0值修改为NaN,或把NaN修改为0值等。由于波段运算公式较为复杂,现归纳如下。

1.     直接利用波段运算进行

Ÿ   修改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

Ÿ   修改NaN0值(先按上面方法修改为-999或其他图像中不存在的值)

          (b1 ne -999)*b1

 

2.     利用扩展补丁进行调用

 

由于波段运算公式较为复杂,所以写成用户函数,编译为sav文件供ENVI调用。

Sav文件下载地址:http://vdisk.weibo.com/s/zrSeGYf9hiwZc

注:适用于ENVI4.85.0及以上版本,如果是其他版本,可以将源码自行编译为Sav文件。

下载后将sav文件拷贝到如下路径,重启ENVI即可。

Ÿ   ENVI 4.8

          C:\Program Files\ITT\IDL\IDL80\products\envi48\save_add

Ÿ   ENVI Classic

          C:\Program Files\Exelis\ENVI50\classic\save_add

Ÿ   ENVI 5.0

          C:\Program Files\Exelis\ENVI50\custom_code

 

补丁中函数功能和调用格式说明如下表所示:

函数名

功能

波段运算调用公式

NaN2Zero

修改NaN0

NaN2Zero(b1)

Zero2NaN

修改0值为NaN

Zero2NaN(b1)

DN2NaN

修改指定值为NaN

DN2NaN(b1,DN)

NaN2DN

修改NaN为指定值

NaN2DN(b1,DN)

注:公式中的DN为用户自定义DN值,比如将值为250的像元修改为NaN,公式可写为:DN2NaN(b1, 250)

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有