ENVI5.3于2015年8月3日正式发布。在ENVI5.3版本中,支持更多的传感器和数据格式,新增和改进图像处理算法,更加人性化操作界面,面向对象特征提取工具FX整合激光雷达处理功能,与ArcGIS一体化集成,全新的摄影测量扩展模块,更方便快捷ENVI二次开发。ENVI5.3主要有以下几个方面的改进:
传感器和数据格式
图像处理和界面改进
FX集成激光雷达处理功能
全新的摄影测量扩展模块
ENVI二次开发
ENVI5.3新增如下传感器和数据格式
Pleiades & SPOT tiled NITF
Deimos-2
DubaiSat-2
SkySat-1/2新的Google数据产品("Image Frames" & "Geo Imagery")
Sentinel-2A (哨兵2A)MSI Level 1C
OGC GeoPackage (GPKG)矢量的输入
(1)改进头文件编辑器
升级了之前编辑头文件(Edit Header)的功能,更加方便增加、修改和删除图像文件元数据信息。
(2)改进的时空分析工具
可自定义像元大小,可按照栅格数据的获取时间绘制出一个像元的时间剖面曲线。
(3)分类后小斑块处理工具
全新的小斑块处理工具对分类后的结果进行小斑块处理,可自动预览结果。
(4)光谱指数工具的改进
新增两个光谱指数——归一化淤泥指数(Normalized Difference Mud Index ——NDMI),用来突出显示淤泥/浅水像元;改进的归一化水体指数(Modified Normalized Difference Water Index ——MNDWI)增强开阔水域特征,来抑制建筑,植被和土壤的影响;
优化了光谱指数工具,根据输入数据的波长情况只显示可计算出的光谱指数
(5)QUAC大气校正算法改进
快速大气校正算法有所改进,提高了校正的精度
应用mud filtering剔除高度结构化的材料;
对于大多数传感器,基于可用波段的一小部分选择端元;当传感器跨可见光和近红外短波红外谱范围,该算法不包括波段中的可见区域;
当波长低于 650 毫微米,将会约束增益曲线为常数;
抑制茂密的植被的影响;
对于高光谱传感器水分吸收波段(940 to 1020 nm),移除云端元;
可使用掩膜文件,并支持NoData值、NaN值、无穷大/小值的输入设置
(6)Geospatial PDF改进
可以将整个视图的图层输出为Geospatial PDF文件。
(7)图像分类文件的编辑
在显示图像分类文件的图层上,右键选择Edit Class Names and Colors,可以修改分类名称和颜色。
(8)曲线平滑
在ENVI曲线窗口中新增曲线平滑功能,可以平滑波谱曲线、时间序列曲线等。
(9)空间子区与掩膜功能
在文件选择对话框中,可以根据栅格文件、矢量文件、ROI、地理坐标等确定空间子区。也可以选择掩膜文件。
(10)支持GMTED2010 DEM数据的下载
最新的GMTED2010全球高程数据,分辨率是7.5秒
图5 更高分辨率的全球DEM数据
(11)处理性能提升
可批量处理多景数据
多时相、多波段数据显示性能有显著提升
CADRG读写速率和输出质量提升
ENVI FX面向对象信息提取工具集成了ENVI LiDAR模块,可进行3D点云特征提取,该模块实现了2D+3D的一体化,ENVI 的点云可视化和分析工具可以:
File > Open... 或通过拖拽文件的方式打开点云数据
生成地表DEM和DSM
生成正射影像
生成等高线和地形TIN
可视域分析
原先的正射校正扩展模块改名为摄影测量模块,新增从立体像对中提取3D信息的功能,从星载数据中获取点云数据降低了成本,可用现有的大量的商业卫星数据,对机载LiDAR覆盖不到的区域生成点云数据,可高性能的处理得到高精度的点云数据,并可利用ENVI的点云可视化、分析和产品生产功能。
可从卫星传感器EO/IR平台立体像对中经过像元校正提取3D点云信息。
用(SGM)算法做密集影像匹配
传感器定位元数据用来约束沿极限维度的搜索
每一个像素都会对应生成一个三维点形成点云
输出强度或RGB文件的编码的LAS文件用于匹配
传感器支持:
带有RPC模型的ENVI标准格式数据
WorldView-1/2/3
GeoEye-1 in DigitalGlobe (.til) and PVL formats
IKONOS
Pleiades-1 & SPOT-6/7
QuickBird
新增54个ENVITask接口、13个对象&方法、12个Lidar相关ENVITask/对象&方法,以及9个处理状态信息的对象&方法。详细见下面四个表。、
表1--54个新增ENVITask接口:
Task |
功能描述 |
ENVIAdditiveLeeAdaptiveFilter |
对具有加法噪声的栅格图像进行Lee自适应滤波 |
ENVIAdditiveMultiplicativeLeeAdaptiveFilterTask |
对具有加法和乘法噪声的栅格图像进行Lee自适应滤波 |
ENVIBinaryGTThresholdRasterTask |
对栅格图像进行二值化,大于阈值赋予1,小于阈值赋予0 |
ENVIBinaryLTThresholdRasterTask |
对栅格图像进行二值化,大于阈值赋予0,小于阈值赋予1 |
ENVIBitErrorAdaptiveFilterTask |
对栅格图像进行Bit Error自适应滤波 |
ENVIBuildMosaicRasterTask |
对多幅栅格图像进行无缝镶嵌 |
ENVICalculateQUACGainOffsetTask |
获取栅格图像增益和偏移值,用于快速大气校正(QUAC) |
ENVIDataValuesMaskRasterTask |
根据一组特定的数组值对栅格图像进行掩膜 |
ENVIDirectionalFilterTask |
对栅格图像进行方向滤波 |
ENVIDirectionalKernelTask |
定义方向滤波窗口大小和方向,默认3×3,0° |
ENVIEnhancedFrostAdaptiveFilterTask |
对栅格图像进行增强型Frost自适应滤波,减少斑点噪声,同时保留边缘特征 |
ENVIEnhancedLeeAdaptiveFilterTask |
对栅格图像进行增强型Lee自适应滤波,减少斑点噪声,同时保留纹理特征 |
ENVIExportColorSlicesTask |
输出栅格图像密度分割.dsr文件 |
ENVIFrostAdaptiveFilterTask |
对栅格图像进行Frost自适应滤波,减少斑点噪声,同时保留边缘特征 |
ENVIGammaAdaptiveFilterTask |
对栅格图像进行Gamma自适应滤波,减少斑点噪声,同时保留边缘特征 |
ENVIGaussianHighPassFilterTask |
对栅格图像进行高斯高通滤波 |
ENVIGaussianHighPassKernelTask |
定义高斯高通滤波窗口大小,默认3×3 |
ENVIGaussianLowPassFilterTask |
对栅格图像进行高斯低通滤波 |
ENVIGaussianLowPassKernelTask |
定义高斯低通滤波窗口大小,默认3×3 |
ENVIGeneratePointCloudsByDenseImageMatchingTask |
利用两幅或多幅图像生成3D点云(基于密度图像匹配算法) |
ENVIGeoJSONToROITask |
将GeoJSON转换为ROI |
ENVIGeoPackageToShapefileTask |
将GeoPackage转换为Shapefile |
ENVIGetColorSlicesTask |
从.dsr文件中获取栅格图像密度分割范围和颜色 |
ENVIGetSpectrumFromLibraryTask |
从光谱库中获取特定地物的光谱信息 |
ENVIHighClipRasterTask |
将栅格图像进行高阈值裁剪,大于设定阈值的赋予该阈值,小于设定阈值则不变 |
ENVIHighPassFilterTask |
对栅格图像进行高通滤波 |
ENVIHighPassKernelTask |
定义高通滤波窗口大小,默认3×3 |
ENVIKuanAdaptiveFilterTask |
对栅格图像进行Kuan自适应滤波 |
ENVILocalSigmaAdaptiveFilterTask |
对栅格图像进行Local Sigma自适应滤波 |
ENVILaplacianFilterTask |
对栅格图像进行拉普拉斯滤波 |
ENVILaplacianKernelTask |
定义拉普拉斯滤波窗口大小,默认3×3 |
ENVILowClipRasterTask |
将栅格图像进行低阈值裁剪,小于设定阈值的赋予该阈值,大于设定阈值则不变 |
ENVILowPassFilterTask |
对栅格图像进行低通滤波 |
ENVILowPassKernelTask |
定义低通滤波窗口大小,默认3×3 |
ENVIMaskRasterTask |
对栅格图像进行掩膜(基于阈值) |
ENVIMedianFilterTask |
对栅格图像进行中值滤波 |
ENVIMultiplicativeLeeAdaptiveFilterTask |
对具有乘法噪声的栅格图像进行Lee自适应滤波 |
ENVIROIMaskRasterTask |
对栅格图像进行掩膜(基于ROI) |
ENVIQuerySpectralLibraryTask |
获取光谱库中所有地物光谱名称 |
ENVIQueryTaskTask |
查询指定Task描述信息 |
ENVIQueryTaskCatalogTask |
查看所有可用Task列表 |
ENVIRasterConvolutionTask |
对栅格图像进行卷积运算 |
ENVIRasterHistogramTask |
计算栅格图像直方图 |
ENVIRasterMetadataItemTask |
获取栅格图像特定元数据信息 |
ENVIRegridRasterSeriesTask |
重投影一系列栅格为一个同样的空间格网,使用自定义的grid |
ENVIReprojectRasterTask |
对栅格图像进行重投影 |
ENVIResampleSpectrumTask |
对地物光谱进行重采样 |
ENVIRobertsFilterTask |
对栅格图像进行罗伯特滤波 |
ENVISetRasterMetadataTask |
设置栅格图像元数据信息并生成.hdr头文件(之前无头文件;若栅格图像本身具有头文件,则覆盖掉原来数据) |
ENVISobelFilterTask |
对栅格图像进行Sobel滤波 |
ENVISpectralAdaptiveCoherenceEstimator |
使用子空间背景统计的均值和方差,进行Adaptive Coherence Estimator (ACE)目标检测分析 |
ENVISpectralSubspaceBackgroundStatisticsTask |
排除异常值像元计算背景统计信息 |
ENVIVectorMaskRasterTask |
对栅格图像进行掩膜处理(基于矢量,如shapefile) |
ENVIVectorRecordsToSeparateROITask |
根据矢量记录生成对应ROIs |
表2 新增13个对象&方法
Object/Method |
Description |
ENVIBinaryGTThresholdRaster |
对象:二值化虚拟栅格(大于阈值赋予1,小于阈值赋予0) |
ENVIBinaryLTThresholdRaster |
对象:二值化虚拟栅格(大于阈值赋予0,小于阈值赋予1) |
ENVIDataValuesMaskRaster |
对象:数组掩膜时生成的虚拟栅格 |
ENVIGainOffsetWithThresholdRaster |
对象:同时对栅格数据进行辐射定标和阈值裁剪时生成的虚拟栅格 |
ENVIHighClipRaster |
对象:高阈值裁剪时生成的虚拟栅格(大于阈值的像素赋予该阈值) |
ENVIJagwireServer |
对象:返回JagwireServer对象引用,基于该引用可以进行如下操作:查询JagwireServer上的栅格数据集哈希表,获取数据集元数据哈希表,关闭JagwireServer连接 |
ENVILowClipRaster |
对象:低阈值裁剪时生成的虚拟栅格(小于阈值的像素赋予该阈值) |
ENVIQUACRaster |
对象:快速大气校正(QUAC)生成的虚拟栅格 |
ENVIReprojectRaster |
对象:重投影生成的虚拟栅格 |
ENVIRoi::GetExtent |
方法:返回栅格数据ROI边界像素坐标 |
ENVISpectralLibrary |
对象:返回光谱库对象的引用 |
ENVIView::Chip |
方法:根据视图对栅格图像进行裁剪(虚拟栅格) |
ENVIView::ChipToFile |
方法:根据视图对栅格图像进行裁剪(文件) |
表3 新增12个Lidar相关ENVITask/对象&方法
Object/Method/Task |
描述 |
ENVI::OpenPointCloud |
打开单个或多个点云数据(.las、.laz、.ntf,.sid,.txt,.bin)和工程文件(.ini),同时进行点云格式优化 |
ENVI::QueryPointCloud |
打开单个点云数据(.las、.laz、.ntf,.sid,.txt,.bin),不进行点云格式优化 |
ENVICreatePointCloudSubProjectTask |
将ENVI LiDAR工程分解为若干个子工程,用于ESE并行处理 |
ENVIPointCloud |
返回点云对象引用,基于该引用可以进行如下操作: – 获取圆形区域、矩形区域、多边形区域点云数据 – 保存点云对象,输出点云为一个新的.las文件 – 关闭点云对象等 |
ENVIPointCloudFeatureExtractionTask |
对点云进行特征提取,比如:提取建筑物、树木和电力线等 |
ENVIPointCloudFilter |
对点云数据进行过滤 |
ENVIPointCloudMetadata |
获取点云元数据信息 |
ENVIPointCloudProductsInfo |
存储点云特征提取Task获取的产品完整信息 |
ENVIPointCloudQuery |
返回ENVI::QueryPointCloud对象引用,基于该引用可以进行如下操作:获取特定范围已分类点云数据,关闭点云对象 |
ENVIPointCloudSpatialRef |
点云数据空间参考对象,基于该对象可以进行如下操作:点云数据地理坐标系与投影坐标系相互转换,投影坐标系之间相互转换 |
ENVIPointCloudViewer |
启动ENVI LiDAR并初始化一个ENVI LiDAR对象,基于该对象可以进行如下操作:打开点云数据,打开shapefile文件,获取已经打开的点云对象,获取和设置视图范围,设置进度条在视图中的位置,关闭视图 |
ENVISpatialSubsetPointCloud |
对点云数据进行空间裁剪 |
表4 新增9个处理状态信息的对象&方法
对象&方法 |
描述 |
ENVI::GetBroadcastChannel |
该方法返回一个对象引用系统的广播通道 |
ENVIAbortable |
如果有中止请求时候,使用此类进行通信 |
ENVIAbortableTaskFromProcedure |
当编写自定义Task时候,使用此基类可以实现带有中止选项的进度条,可以设置三个方法: PreExecute, DoExecute, PostExecute |
ENVIBroadcastChannel |
这是广播通道的引用,包括以下三个方法: · 发送消息: Broadcast method · 订阅:Subscribe method · 取消订阅: Unsubscribe method |
ENVIMessage |
抽象类,用于其他信息类的超类。 |
ENVIMessageHandler |
抽象类,用于其他信息类的超类。如ENVIBroadcastChannel 调用ENVIMessageHandler::OnMessage 方法用于把消息转发给所有的用户 |
ENVIStartMessage |
这个函数是用于构建一个ENVIStartMessage 对象送到ENVIBroadcastChannel. 如果一个ENVI用户界面运行,一个处理进度条将会出现。 |
ENVIProgressMessage |
这个函数是用于构建一个ENVIProgressMessage对象送到ENVIBroadcastChannel. 如果一个ENVI用户界面运行,处理进度条将会更新进度。 |
ENVIFinishMessage |
这个函数是用于构建一个ENVIFinishMessage 对象送到ENVIBroadcastChannel. 如果一个ENVI用户界面在有进度条的情况下运行,对话框将会关闭。 |