一、前言

IDL 用于跨学科提取有意义的信息并从复杂的数字数据创建可视化。 IDL 的前身版本是为分析来自 NASA 任务(例如 Mariner 和国际紫外线探索者)的数据而编写的。 IDL 的这些前身版本是 20 世纪 70 年代在科罗拉多大学博尔德分校的大气和空间物理实验室 (LASP) 开发的。 IDL 的第一个正式版本于 1977 年由 Research Systems Inc. (RSI) 发布。 自 1970 年代首次创建以来,IDL 已经走过了漫长的道路。 我们的工程师不断地为 IDL 添加新功能,以保持它的现代性、灵活性和用户友好性。

由于 IDL 起源于一种面向科学家和工程师处理多维科学数据阵列的编程语言,因此它非常自然地适用于处理来自遥感系统的栅格数据。 1994 年,RSI 发布了 ENVI 的第一个版本。 从那时起,ENVI 和 IDL 就像形影不离的好朋友。 IDL 可以做什么,ENVI 也可以。 ENVI 有一个用 IDL 编写的 API,可用于创建自定义算法、自定义工作流以及遥感数据的批处理。

使用 IDL 扩展 ENVI 的能力是 ENVI 最强大的一个方面。 ENVI API 有一个快速的学习曲线,一旦你弄明白了,你可以用你的数据做什么。 这包括强大的地理数据可视化效果,例如我在下面使用 CONTOUR 函数创建的可视化效果。

ENVI API 的一个更强大的方面是实现自定义算法的能力。这允许用户应用他们在科学文献中阅读过的算法或试验他们自己的图像分析算法。 让我们继续看看如何使用 IDL 在 ENVI 中实现自定义算法。 在这个例子中,我们将使用 Landsat 8 的缨帽变换 (TCT)。TCT 最初是为 1972 年发射的 Landsat 多光谱扫描仪 (MSS) 设计的。TCT 的后续改编已在科学杂志上发表 Landsat Thematic Mapper (TM)、Landsat Enhanced Thematic Mapper (ETM) 和 Landsat Enhanced Thematic Mapper Plus (ETM+) 传感器的文献。 在 Landsat MSS、TM、ETM 和 ETM+ 图像上执行 TCT 的能力是开箱即用的 ENVI。 然而,Landsat Operational Land Imager (OLI) 传感器的 TCT 算法最近才发布,尚未进入 ENVI 工具箱。 但是,由于该算法现已在科学文献中可用,我们可以使用 ENVI API 将此算法应用于 Landsat 8 数据。 该算法采用 Landsat 8 图像并计算包含 6 个波段的新图像文件,每个波段包含有关场景的唯一信息,例如反照率(亮度)、植被健康(绿度)和水分含量(湿度)。

下面的示例代码可以在 ENVI + IDL 中实现,以对 Landsat 8 数据执行 TCT:基于 Landsat 8 卫星反射率的穗帽变换的推导

二、代码过程

; Copyright (c) 1988-2015, Exelis Visual Information Solutions, Inc. All rights reserved.pro tasseledcapidl; Set compile options - this is a standard compatibility line that is recommended for use in all IDL codecompile_opt IDL2; Use the current session of ENVIe=envi(/current); Path and filename to a pre-calibrated Landsat 8 image file; Input file should be radiometrically calibrated and optionally atmospherically correctedinputRaster = e.OpenRaster('C:\Data\Naples\LC80160422015028LGN00_RadCal_MS_Subset.dat'); Subset the input raster - only these 6 bands are needed for the TCT calculationsubsetRaster=ENVIsubsetRaster(inputRaster, BANDS=[1,2,3,4,5,6]); Set up output raster fileoutputRaster = ENVIRaster(URI=outputURI, INHERITS_FROM=subsetRaster); Create tiles - creating tiles allows ENVI + IDL to iterate through the tiles, which is a good idea; when you want to minimize the impact of image processing on your computer's resourcestiles = subsetRaster.CreateTileIterator(MODE='spectral'); Iterate through tiles FOREACH tile, tiles DO BEGIN; band 1 b1 = tile[*,0]; band 2b2 = tile[*,1]; band 3b3 = tile[*,2]; band 4b4 = tile[*,3]; band 5b5 = tile[*,4]; band 6b6 = tile[*,5]dims= size(tile,/DIMENSIONS)data = make_array(dims,/FLOAT); Use IDL to do the TCT calculations; Calculate brightnessdata[*,0] = (b1 * 0.3029) + (b2 * 0.2786)+ (b3*0.4733) + (b4*0.5599) + (b5*0.508) + (b6*0.1872); Calculate greennessdata[*,1] = (b1 * (-0.2941)) + (b2 * (-0.243))+ (b3 * (-0.5424)) + (b4 * 0.7276) + (b5 * 0.0713); Calculate wetnessdata[*,2] = (b1 * 0.1511) + (b2 * 0.1973)+ (b3 * 0.3283) + (b4 * 0.3407) + (b5 * (-0.7117)) + (b6*(-0.4559)); Calculate TCT4 (Haze)data[*,3] = (b1 * (-0.8239)) + (b2 * 0.0849)+ (b3 * 0.4396) + (b4 * (-0.058)) + (b5 * 0.2013) + (b6*(-0.2773)); Calculate TCT5data[*,4] = (b1 * (-0.3294)) + (b2 * 0.0557)+ (b3 * 0.1056) + (b4 * 0.1855) + (b5 * (-0.4349)) + (b6 *0.8085); Calculate TCT6data[*,5] = (b1 * 0.1079) + (b2 * (-0.9023))+ (b3 * 0.4119) + (b4 * 0.0575) + (b5 * (-0.0259)) + (b6 *0.0252); Write to ouput fileoutputRaster.SetTile, data, tilesENDFOREACH; Add appropriate Band Names to the HDR filemetadata = outputRaster.METADATAmetadata.UpdateItem, 'BAND NAMES', ['Brightness','Greenness','Wetness','TCT4','TCT5','TCT6']; Save changes to output fileoutputRaster.save; Display output file in ENVI Displayview=e.getview()layer=view.createlayer(outputRaster)end

三、结果展示

此示例的输入文件由 Landsat 8 于 2015 年 1 月 28 日在佛罗里达州那不勒斯上空捕获。下面的 ENVI 显示屏屏幕截图显示了场景的彩色红外表示,以及计算出的亮度、绿色度和湿度带 流苏帽改造。 这只是 IDL 的强大功能如何使自定义算法的实现变得如此简单的一个例子。

使用 ENVI + IDL 开发自定义处理算法相关推荐

  1. 软件介绍|ENVI/IDL软件及二次开发介绍

    ENVI是美国Exelis Visual Information Solutions公司的旗舰产品,它是由遥感领域的科学家采用交互式数据语言IDL(Interactive Data Language) ...

  2. 2014年ENVI/IDL遥感应用与开发培训班-11月重庆站 開始报名了

    主办单位: 中国遥感应用协会 Esri中国信息技术有限公司 内容简单介绍: 依据中国遥感应用协会栾恩杰理事长推动国内遥感技术和应用的指示精神,2014年中国遥感应用协会组织培训交流部与Esri中国信息 ...

  3. CK3M自定义伺服算法(C语言)开发的简单流程

    本文的章节安排如下 1 注意事项 2 自定义伺服算法(C语言)开发 2.1 Global Includes 2.2 C Language 2.3 编译并下载程序 2.4 控制器调试 3 运动程序 在导 ...

  4. 基于ENVI/IDL 的一键化实现LST-NDVI的干湿边方程拟合,并得到TVDI计算结果图

    ENVI/IDL (5.3版本)一键化实现LST-NDVI的干湿边方程拟合,并得到TVDI计算结果图 0 原理介绍 利用IDL将NDVI异常值进行剔除,NDVI取值范围为0.2~1(植被覆盖区),对反 ...

  5. ENVI+IDL使用

    在面对大批量遥感影像数据重复操作的时候,我们会想到批处理的方式.尽管遥感软件提供了一些批处理的方式,就小部分需求而言,单一的批处理方式往往是不够的,这时候程序化处理就派上用场了. (当然,也可以使用建 ...

  6. ShardingSphere笔记(三):自定义分片算法 — 按月分表·真·自动建表

    ShardingSphere笔记(二):自定义分片算法 - 按月分表·真·自动建表 文章目录 ShardingSphere笔记(二):自定义分片算法 - 按月分表·真·自动建表 一. 前言 二. Sp ...

  7. 社区投稿 | DBLE 自定义拆分算法

    文章来源:爱可生开源社区 作者:钟悦 作者简介 钟悦,就职于某大型国有银行,多年从事MySQL和分布式中间件的方案设计与实施工作:资深MySQL数据库专家,架构师:DBLE开源项目积极贡献者. 文章概 ...

  8. IDL(ENVI/IDL) 简(jian)明(lou)教程:二、ENVI/IDL批处理入门(以投影转换为例)

    二.ENVI/IDL批处理入门 ENVI/IDL集成了ENVI软件的高级功能,比如打开文件直接使用envi_open_file, File ,r_fid=fid即可,不用考虑什么格式等,再比如做文件投 ...

  9. 【Android 安全】DEX 加密 ( Java 工具开发 | 加密解密算法 API | 编译代理 Application 依赖库 | 解压依赖库 aar 文件 )

    文章目录 一.加密解密算法 API 二.编译代理 Application 依赖库 三.解压代理 Application 依赖库 aar 文件 参考博客 : [Android 安全]DEX 加密 ( 常 ...

最新文章

  1. Redis初学:7(Set类型)
  2. ifconfig命令无法找到,提示bash: ifconfig: command not found
  3. java 拖拽目录_Java 7:如何在Java中实现拖放?
  4. php的webservice的soapheader认证问题
  5. pygame碰撞检测
  6. Javascript中try finally的细微差别
  7. 广度优先遍历(Breadth First Search)
  8. 我用Python分析1585家电商车厘子销售数据,发现这些秘密
  9. 黄金分割点(java)
  10. 这可能是世界第一座海上漂浮城市,浑身都是黑科技!
  11. viper4android fx原理,ViPer4android. FX顶级音效!
  12. 人生不该有如此压力,来吃下这口缓解焦虑的良药[50P]
  13. Matlab中fit函数的局限以及其解决方案
  14. Mysql(免安装版)安装、配置、卸载与更改端口
  15. 基于数字电路交通灯信号灯控制系统设计-基于单片机病房温度监测与呼叫系统设计-基于STM32的无线蓝牙心电监护仪系统设计-基于STM32的智能蓝牙温控风扇控制设计-基于STM32的智能温室控制系统设计
  16. multisim红绿灯元器件在哪里_基于Multisim的红绿灯控制器仿真实现
  17. PHP socket demo
  18. VS code安装和使用技巧
  19. OpenCV—画直角边的直线(粗线)
  20. C语言实现『推箱子』

热门文章

  1. Android系统源代码情景分析:基础知识
  2. 微信分享url带多个参数问题解决
  3. 【NOIOL】【数论 / 数值】正反切函数的应用
  4. Lustre安装-Lustre2.10.0 Client安装-CentOS/RHEL(原创)
  5. 高分辨率光学遥感影像舰船目标检测与识别算法研究(尹莹莹)
  6. golang 操作 mongodb 时vscode提示 primitive.E composite literal uses unkeyed fields 的解决办法
  7. Erong7.009.01灯板PCB绘制
  8. 移动APP测试の学习(1)
  9. 什么样子是你最喜欢的工作状态?我的同事都是小姐姐
  10. 全志T7 vin core驱动