ENVI 5.7/IDL 8.9 新特性介绍

发布时间 2023-06-02 10:29:02作者: ENVI-IDL技术殿堂

1ENVI 5.7 新特性

ENVI 5.7/IDL 8.9于2023年5月正式发布,ENVI具备如下新增和改进的特性:
  • 新增支持数据类型

  • 新增支持SAR数据

  • FLAASH模块更新

  • 全新变化检测工作流 

  • 工具箱部分工具更新

  • 全新交互式视域分析工具

  • 新增菜单和操作选项

  • 新增ENVITasks

  • NITF更新

  • 新增ENVI Modeler示例模型

  • 新增二次开发接口

  • 移除32位ENVI

1新增支持数据类型

ENVI 5.7新增如下数据类型和传感器:

  • 支持从GeoJSON文件中读取矢量

  • 支持EMIT(Level 1B, Level 2A)高光谱图像

2新增支持SAR数据

ENVI 5.7新增支持显示SICD NITF SAR数据。

3FLAASH模块更新

FLAASH模块有重大功能更新和新特性,包含如下:

  • 更新到MODTRAN 6模型,包含以下更新:

    • 全新Line-By-Line(LBL)算法,可在更短的波长分辨率下计算透射率和辐射度,以获得更高的精度

    • 更新DISORT算法,提高倾斜法和较低太阳高度的精度

  • 新的高级气溶胶选项,可以尝试不同的参数来确定哪一个能产生更准确的结果

  • 新增云图像输出选项

  • 新增创建水汽图功能,可显示每个像素内的水蒸气量

  • 如果输入图像不在辐射亮度值范围内,则自动进行辐射校正(在FLAASH中处理图像之前不再需要辐射校正)

  • 提供FLAASH Task接口,可以在ENVI Modeler和IDL中实现批处理。在ENVI Classic中可继续使用旧版FLAASH工具

4全新变化检测工作流

全新变化检测工作流(Change Detection Workflow)可以识别、描述和量化在不同时间或不同条件下拍摄的同一区域的图像之间的差异。
全新工作流替代了如下工具(已在新版本中移除):
  • Change Detection Difference Map

  • Image Change Workflow

  • SPEAR Change Detection

  • THOR Change Detection

5工具箱部分工具更新

如下工具更新使用新的ENVITasks接口:

  • Emissivity From Alpha Residuals: 生成阿尔法残差光谱,该光谱近似于热红外辐射数据中发射率光谱的形状。

  • Emissivity From Normalization: 使用固定的发射率值,根据热红外辐射数据计算发射率和温度值。

  • Emissivity From Reference Channel: 根据热红外辐射数据计算发射率和温度值。该方法假设热红外数据的一个波段中的所有像素都具有恒定的发射率。

  • Relative Water Depth Tool: 利用具有蓝、绿和近红外波段的多光谱图像,计算描绘水域相对水深的产品。

  • Thermal Atmospheric Correction: 热红外大气校正。

以下工具已从ENVI工具箱中删除。它们的功能被上述新工具所取代:

  • SPEAR Google Earth Bridge

  • SPEAR Pan Sharpening

  • SPEAR Relative Water Depth

  • THOR Zero Band

  • THOR Zero Pixels

6全新交互式视域分析工具

全新交互式视域分析工具(工具栏灯塔图标,须打开并显示DEM图像才可点击此按钮)已经替代旧版工具。使用此工具可更快完成视域分析,而无需繁琐步骤。此工具还可以执行路线分析和视线分析。

使用交互式视域分析,可以动态添加观察点,例如:

  • 单个观察点可在图像范围内任意移动

  • 可绘制一个或多个路径,包含沿该路径的多个观察者点

  • 可绘制一个或多个区域,包含该区域内的多个观察者点

使用全新工具,视域结果将立即在视图中可见,可以动画显示结果并将其保存为视频文件。有关完整的详细信息,请参阅帮助中 Interactive Viewshed Analysis 和Interactive Viewshed Analysis Tutorial章节内容。

7新增菜单和操作选项

  • Link Views:在Layer Manager中,View右键菜单中添加Quick Link选项,可用于快速链接视图。此外,链接视图功能均已支持RPC、CSM和伪投影以及标准投影。
  • Band Animation:在Layer Manager右键菜单和ENVI主菜单Display中的Band Animation均提供了两种方法可供选择。可以使用Xtreme Viewer或Raster Series显示波段动画。

  • Shadows Down Manipulator:新操纵器旋转当前视图,使阴影朝向显示的底部。它仅适用于SICD格式的经过地理校正的SAR图像。

8新增ENVITasks

可以在IDL中使用以下ENVITasks来进行图像处理:

  • CalculateRelativeWaterDepth: 利用具有蓝、绿和近红外波段的多光谱图像,计算描绘水域相对水深的产品。

  • EmissivityFromAlphaResiduals: 生成阿尔法残差光谱,该光谱近似于热红外辐射数据中发射率光谱的形状。

  • EmissivityFromNormalization: 使用固定的发射率值,根据热红外辐射数据计算发射率和温度值。

  • EmissivityFromReferenceChannel: 根据热红外辐射数据计算发射率和温度值。该方法假设热红外数据的一个波段中的所有像素都具有恒定的发射率。

  • ExportRasterToKMZ: 导出栅格及其边界线为谷歌地球的KMZ格式。

  • ROIToKML: 导出ROI为KML文件。

  • StringProcessing: 提供字符串基本处理功能。可用于ENVI Modeler对文件名处理。

  • ThermalAtmosphericCorrection: 热红外大气校正。

9NITF更新

本版本包括对以下TREs的支持:

  • FCRNSA NITF Tagged Record Extension

  • FRMSGA NITF Tagged Record Extension

本版本包含以下针对NITF 2.1 JPEG 2000压缩图像的性能改进:

  • 平移和缩放的显示性能有所提高,速度提高了60%

  • 在某些情况下,处理速度提升高达60%

10新增ENVI Modeler示例模型

新增一些ENVI Modeler的示例模型,帮助我们更好的学习ENVI Modeler。每个示例展示了不同节点和技术用于自定义工作流的方法。查看帮助中Getting Started with the ENVI Modeler 获取详情。

11新增二次开发接口

ENVIPseudoRasterSpatialRef::ShadowsDownAngle

新的ShadowsDownAngle方法可以返回旋转角度(以度为单位),以便阴影朝向显示的底部。此选项仅适用于SICD格式的经过地理校正的SAR图像。

12移除32位ENVI

从本版本开始,32位ENVI已经被移除,不再提供使用。

2 IDL 8.9 新特性

IDL 8.9具有如下新特性:
  • 新特性

  • 更新内容

  • 库更新

1新特性

ASDF文件格式支持

IDL现在支持ASDF(Advanced Scientific Data Format)文件格式的读写。ASDF_Parse函数用于将ASDF文件读取到IDL中,而ASDF_Write用于创建ASDF文件。IDL ASDF读写器提供了一种简单明了的方法,可以通过ASDF_File类使用简单的数组标记法来访问和修改数据。新的ASDF_NDArray类允许简单地将ASDF/Python ndarray数组转换为IDL数组或从IDL数组转换。例如,要创建一个简单的ASDF文件,然后将其读回IDL:
a = ASDF_File('mydata', randomu(seed, 100, 50))

ASDF_Write, 'myfile.asdf', a

af = ASDF_Parse('myfile.asdf')

help, af

help, af['mydata']

help, af['mydata', 'data']

IDL打印结果:

AF ASDF_FILE <ID=28 NELEMENTS=3> TAG='!core/asdf-1.1.0' GLOBAL_TAGS=1

<Expression> ASDF_NDARRAY <ID=27> float32 [50,100] internal

<Expression> FLOAT = Array[100, 50]

复数常数

现在可以使用“i”和“j”作为后缀来创建复数。例如:
IDL> help, 1 - 2i, 3.14i, 1 + 2d-20i

<Expression> COMPLEX = ( 1.00000, - 2.00000)

<Expression> COMPLEX = ( 0.00000, 3.14000)

<Expression> DCOMPLEX = ( 1.0000000, 2.0000000e-20)
以这种方式创建复数比使用COMPLEX或DCOMPLEX函数要快得多。有关详细信息,详情请参阅Defining and Using Constants。
您也可以使用以下表示法从文件或字符串中输入复数:
IDL> num = 0i ; create a complex zero

IDL> reads, '1+2i', num ; complex number cannot contain spaces

IDL> help, num

NUM COMPLEX = ( 1.00000, 2.00000)

二进制、八进制和十六进制常数

现在可以使用特殊前缀0b、0o和0x来构造二进制、八进制和十六进制数字常量:
IDL> help, 0b101110111100, 0o777, 0xFA62, BigInteger('0xFFFFFF')

<Expression> INT = 3004

<Expression> INT = 511

<Expression> LONG = 64098

<Expression> BIGINTEGER <ID=7 LENGTH=24 bits> = 16777215
这些前缀可以与常用的整数后缀(b,s,l,u)组合,以构造不同类型的整数。
在从文件或字符串中读取输入时,也可以使用前缀。
IDL> num = 0L

IDL> reads, "0x2000", num

IDL> help, num

NUM LONG = 8192

IDL> reads, '0o777', num

IDL> help, num

NUM LONG = 511

IDL> reads, '0b101110111100', num

IDL> help, num

NUM LONG = 3004
要打印出这些数字或将其转换为字符串,请使用%x、%o或%b:
IDL> print, 8192, 511, 3004, format='%x %o %b'

2000 777 101110111100

详情请参阅Defining and Using Constants。

Gabor变换滤波器

新的GABOR_KERNEL和GABOR_FILTER函数可用于对二维阵列执行复杂的GABOR滤波器。Gabor滤波器由特定方向的正弦波组成,高斯包络将效果限制在图像中每个点周围的局部区域。该滤波器可用于边缘检测和纹理分析。

Gabor演示应用程序

新的gabor_demo_app过程(位于examples/doc/image子目录中)可用于查看研究Gabor滤波器函数的不同参数。您可以打开不同的图像文件,调整参数值,然后在左侧看到新的内核函数,在右侧看到叠加在原始图像上的滤波结果。

模板文本字符串

现在可以使用字符`来创建模板文本字符串。这些模板文本字符串可以包含IDL表达式(在运行时计算),并且可以跨越多行,所有空格和换行符都保留在最后的字符串中。字符串还可以包含特殊字符,如换行符。
示例如下:
IDL > a = [1, 2, 3, 4, 5]

IDL > result = `There are ${total(a gt 2, /int)} matches\nin the array ${a}.`

IDL > print, result

There are 3 matches

in the array [1,2,3,4,5].

详情参阅Template Literal Strings。

FLOAT64和IDL3编译选项

新的FLOAT64编译选项表示浮点常量默认为64位DOUBLE类型,而不是通常的32位FLOAT类型。指数为“e”的浮点常量将保留为32位浮点。新的IDL3编译选项是编译选项DEFINT32、FLOAT64、LOGICAL_PREDICATE和STRICARR的快捷方式。有关更多详细信息,请参阅COMPILE_OPT。

YAML (YAML Ain't Markup Language) 支持

IDL现在可以使用YAML_PARSE解析YAML字符串和文件。还可以使用YAML_SERIALIZE将IDL HASH、LIST和其他数据类型转换为YAML。

2更新内容

数组连接

现在可以使用最多8个嵌套级别的括号来连接IDL数组(以前的限制是3个级别)。例如:

IDL> a = fltarr(2,2,2,2,2,2,2,2)

IDL> b = a

IDL> help, [a, b]

<Expression> FLOAT = Array[4, 2, 2, 2, 2, 2, 2, 2]

IDL> help, [[[[a]]], [[[b]]]]

<Expression> FLOAT = Array[2, 2, 2, 4, 2, 2, 2, 2]

IDL> help, [[[[[[[[a]]]]]]], [[[[[[[b]]]]]]]]

<Expression> FLOAT = Array[2, 2, 2, 2, 2, 2, 2, 4]

详情参阅 Creating Arrays 章节内容。

CONVOL函数新增EDGE_REFLECT关键字

CONVOL函数有一个新的EDGE_REFLECT关键字,它将把数组边缘的值视为反射值。这与EDGE_MIRROR关键字类似,只是不重复最边缘的点。例如,如果数组值由“abcdefg”表示,则有效数组将为“gfedcb|abcdefg|fedcba”。

ISA函数新增UNSIGNED 关键字

ISA函数有一个新的UNSIGNED关键字,它将为无符号整数变量返回true,否则返回false。

JSON_SERIALIZE函数新增PRETTY关键字

JSON_SERIALIZE函数有一个新的PRETTY关键字,它将以“美观”的格式输出JSON,并使用空格换行和缩进。

Python Bridge 安装简化

IDL-to-Python 和Python-to-IDL Bridge的安装过程经过了简化,变得更加健壮。有关详细信息,请参见Python Bridge。

移除32-bit IDL

移除32位模式下运行的IDL。这还包括删除COM Object-Import(IDLcomIDispatch)和DXF文件格式(IDLffDXF)支持。

3库更新

如下第三方库已更新为以下版本:
  • CDF 3.8.1

  • New CDF_READCDF routine

  • New CDF_READVARIABLE routine

  • curl 7.88.1

  • ffmpeg 4.4.3

  • jackson-json-processor 2.14.2

  • libtiff 4.5.0

  • libxml2 2.10.3

  • openssl 1.1.1t

  • sqlite 3.41.2

  • x11-xpm 3.5.15

  • zlib 1.2.13

已添加以下第三方库:

  • rapidyaml 0.5.0

已删除以下第三方库:

  • IDL Python Bridge support for Python 3.7