[ENVI56 APP] 添加自定义光谱指数工具——以NDWI和NDBSI为例

文摘   2024-07-26 17:03   北京  


本工具适用于 ENVI 5.6 及以上版本(本人测试最低版本为 5.6.3)。


ENVI内置了上百种指数公式,但是大家在使用过程中肯定会有自定义指数的需求。在之前只能通过波段运算工具实现指数计算,现在可以使用本工具方便的添加自定义光谱指数,然后通过如下工具或API计算新指数:
  • 光谱指数工具:Toolbox/Band Algebra/Spectral Indices
  • 虚拟栅格 API:ENVISpectralIndexRaster
  • ENVITask API:SpectralIndex、SpectralIndices


1
安装工具

方法1:使用 ENVI App Store 进行 ENVI 扩展工具的安装与管理。App Store 下载地址:

https://envi.geoscene.cn/appstore



方法2:手动下载安装

https://envi.geoscene.cn/appstore/addssclces






提供三个工具,均位于Toolbox/Band Algebra/Custom Spectral Indices/,分别为:
  • Add Spectral Indices(添加光谱指数):利用编辑好的json文件,导入自定义光谱指数。详细说明参考“2 以NDWI为例”和“3 以NDBSI为例”章节内容。
  • View Band Names and Wavelengths(查看波段名称和波长):由于在编辑指数公式时,需要用到波段名称(波段标识),此工具展示了可用的波段标识列表。详细说明参考“4 其他工具”章节内容。
  • View Spectral Indices Information(查看光谱指数信息):可以浏览所有内置和自定义的光谱指数列表和信息,可复制、保存指数信息,然后在此基础上修改为自定义指数,再导入ENVI中使用。详细说明参考“4 其他工具”章节内容。







2
以 NDWI 为例


2.1
添加指数


NDWI指数有个,都是在1996年提出的,虽然名字一样,但是目的不一样。


ENVI中内置了一个NDWI(植被水分指数),公式如下。该指数用于植被含水量研究,对植被冠层含水量的变化很敏感,因为857nm和1241nm的反射率具有相似但略有不同的液态水吸收特性。植被冠层对光的散射增强了1241nm处的弱液态水吸收。该指数可应用于森林冠层应力分析、密集叶状植被的叶面积指数研究、植物生产力建模和火灾敏感性研究。



还有另一个NDWI(归一化差分水体指数),该指数一般用来提取影像中的水体信息,效果较好,但是阴影对结果影响较大。


NDWI = (green-nir)/(green+nir)


下面介绍添加NDWI指数的方法。


新建一个文本文件,重命名为NDWI2.json,内容为JSON格式,包含如下信息(建议严格区分大小写):


{

    "NDWI2": {

        "name": "Normalized Difference Water Index 2",

        "type": ["Normalized"],

        "equation": "(green - nir) / (green + nir)",

        "bands": ["green", "nir"]

    }

}


或者可以直接下载NDWI2.json文件:

https://envi.geoscene.cn/spectral_indices


其中:
  • NDWI2:指数缩写,保持唯一(不能与ENVI内置指数缩写一样)
  • name:指数名称,保持唯一(不能与ENVI内置指数name一样),将显示在Spectral Indices工具面板中,建议尽量规范。
  • type:指数类型,本字段内容对于结果计算没有影响。可选项为Broadband Greenness、Canopy Nitrogen、Canopy Water Content、Dry or Senescent Carbon、Gas、Leaf Pigments、Light Use Efficiency、Mineral、Narrowband Greenness、Normalized、Vegetation。其中Normalized表示归一化指数。
  • equation:指数公式,运算符(加减乘除等)前后必须加空格。变量名使用波段标识(双击运行Toolbox/Band Algebra/Custom Spectral Indices/View Band Names and Wavelengths,查看可用的波段标识、波长范围、中心波长)。
  • bands:列出公式中使用的所有波段标识

 

在Toolbox中,双击运行/Band Algebra/Custom Spectral Indices/Add Spectral Indices,在弹出的对话框中选择刚才编辑好的NDWI2.json文件,点击OK,自动添加指数并弹出提示。


注:本工具可一次性选择多个json文件,每个json文件中也可包含多个指数信息。



2.2
使用指数


2.2.1 工具中使用


启动工具 Toolbox/Band Algebra/Spectral Indices,选择多光谱图像,选择新添加的 Normalized Difference Water Index 2 指数,设置输出路径,点击OK执行。



如下图所示,左图为多光谱图像,右图为NDWI计算结果。



2.2.2 调用虚拟栅格接口



2.2.3 调用ENVITask接口


可以调用SpectralIndexSpectralIndices两个Task计算NDWI2,语法类似。



3
以 NDBSI 为例

干度指标(NDBSI)可由裸土指数SI建筑指数IBI合成,常用于RSEI生态环境监测中。公式如下:



式中,b2、b3、b4、b8、b11分别为哨兵2数据B2(490nm - blue)、B3(560nm - green)、B4(665nm - red)、B8(842nm - nir)、B11(1610nm – swir1)波段的反射率。


为了在json文件中更清晰的编辑公式,把公式修改为如下格式:


SI = (tmp1 - tmp2) / (tmp1 + tmp2)

tmp1 = b11 + b4

tmp2 = b8 + b2

IBI = (tmp3 - tmp4) / (tmp3 + tmp4)

tmp3 = 2.0 * b11 / (b11 + b8)

tmp4 = b8 / (b8 + b4) + b3 / (b3 + b11)


替换为波段标识,整理最终公式如下:


NDBSI = ((tmp1 - tmp2) / (tmp1 + tmp2) + (tmp3 - tmp4) / (tmp3 + tmp4)) / 2.0

tmp1 = swir1 + red

tmp2 = nir + blue

tmp3 = 2.0 * swir1 / (swir1 + nir)

tmp4 = nir / (nir + red) + green / (green + swir1)

 

新建一个文本文件,重命名为NDBSI.json,内容为JSON格式,包含如下信息(建议严格区分大小写):


{

    "NDBSI": {

        "name": "Normalized Difference Built-Up and Soil Index",

        "type": ["Vegetation", "Normalized"],

        "equation": "((tmp1 - tmp2) / (tmp1 + tmp2) + (tmp3 - tmp4) / (tmp3 + tmp4)) / 2.0; tmp1 = swir1 + red; tmp2 = nir + blue; tmp3 = 2.0 * swir1 / (swir1 + nir); tmp4 = nir / (nir + red) + green / (green + swir1)",

        "bands": ["blue", "green", "red", "nir", "swir1"]

    }

}


或者可以直接下载NDBSI.json文件:

https://envi.geoscene.cn/spectral_indices


注:此指数的公式有些特殊,使用“;”分隔了几个公式。其中第1个公式为主公式,变量使用tmpX标识,后边的几个公式指明了tmpX的计算公式,这样的好处是公式更简洁。

 

在Toolbox中,双击运行/Band Algebra/Custom Spectral Indices/Add Spectral Indices,在弹出的对话框中选择刚才编辑好的NDBSI.json文件,点击OK,自动添加指数并弹出提示,重启ENVI即可使用。


注:本工具可一次性选择多个json文件,每个json文件中也可包含多个指数信息。


下面以工具为例演示使用指数,调用虚拟栅格ENVITask API方法与NDWI类似,这里不再赘述。


启动工具 Toolbox/Band Algebra/Spectral Indices,选择多光谱图像,选择新添加的 Normalized Difference Built-Up and Soil Index 指数,设置输出路径,点击OK执行。



如下图所示,左图为多光谱图像,右图为NDBSI计算结果。



4
其他工具

4.1
查看波段名称和波长


工具位于Toolbox/Band Algebra/Custom Spectral Indices/View Band Names and Wavelengths


双击启动工具,可以查看当前所有可用的波段标识波长范围,如下图所示。这些波段标识可用于编辑指数公式,作为变量使用。



4.2
查看光谱指数信息


工具位于Toolbox/Band Algebra/Custom Spectral Indices/View Spectral Indices Information


双击启动工具,可以浏览所有内置和自定义的光谱指数列表和信息,可根据关键字快速检索指数,右侧面板中展示了指数的所有信息,包含指数缩写、名称、类型、公式、所需波段。可以复制、保存指数信息,然后在此基础上修改为自定义指数的内容,再使用“Add Spectral Indices(添加光谱指数)”工具导入ENVI中使用。




ENVI技术殿堂
ENVI官方公众号。分享光学与雷达遥感技术,以及ENVI/IDL/ESE/SARscape系列产品最新技术、相关培训、市场活动等信息。【主页:envi.geoscene.cn】
 最新文章