常用ENVI函数功能介绍

摘要:
ENVI_FILE_MNG该函数可以打开、关闭或者删除硬盘上的文件。ENVI_GET_FILE_IDS该函数返回所有当前打开的文件的FID。因此,ENVI提供了两个处理函数能够以小的、易管理的数据块方式读取影像数据。在ENVI的函数中,DIMS关键字用于定义空间选取。ENVI_SETUP_HEAD使用该函数写某个已存入磁盘的影像数据的ENVI头文件。从已存在的ENVI文件中创建新文件CF_DOIT这是第三个用于创建ENVI格式文件的函数,尽管它只能用于ENVI中已经打开的文件。

1、文件管理

ENVI文件处理函数为程序员提供了相当大的灵活性。有以下的函数可供编程使用,用户可以根据所需的情况选择所需的函数。

ENVI_PICKFILE ENVI_PICKFILE 函数产生一个提示用户选择文件的对话框。该函数产生的界面和使用ENVI主菜单选择File->Open Image File一样的界面。该函数并不真正的打开文件,它只是以字符串的形式返回用户所选择的全路径文件名。

ENVI_SELECT ENVI_SELECT 产生对话框提示用户从ENVI中已经打开的文件中选择一个文件。该函数产生ENVI标准的文件选择对话框,其中包括空间和波谱子区裁剪按钮,以及掩模波段选取按钮。该函数也集成了ENVI_PICKFILE的功能,在对话框上提供了文件打开按钮,用户可以通过该按钮打开新的ENVI文件。

ENVI_SELECT不仅返回用户所选择文件的FID,还可以返回进一步处理所需的DIMS和POS关键字值

ENVI_OPEN_FILE 该函数返回一个文件的FID,它是打开ENVI文件的最直接和简单的方法。默认情况下它将文件信息添加到可用波段列表中,可以使用NO_REALIZE可以阻止文件信息加入到可用波段列表中。 注:如果可用波段列表已打开,该关键字无效。
ENVI_FILE_MNG 该函数可以打开、关闭或者删除硬盘上的文件。无需用户交互。
ENVI_GET_FILE_IDS 该函数返回所有当前打开的文件的FID。

2、打开外部文件格式

ENVI能够读取相当广泛的数据格式,虽然ENVI_OPEN_FILE仅能够打开具有ENVI头文件的影像文件。ENVI也提供了一些特定的处理程序能够打开和返回外部格式的文件: ENVI_OPEN_DATA_FILE 该函数打开ENVI所支持的外部文件(通过关键字指定文件类型)并返回FID,无需用户交互。

3、获取数据

当影像文件非常大时,不适合使用IDL的READU命令将它全部读入到内存中。因此,ENVI提供了两个处理函数能够以小的、易管理的数据块方式读取影像数据。这两个函数也提供了数据逻辑组织,一次一个波段或是一次光谱切片。

ENVI_GET_DATA 该函数从一个打开的文件中获取影像数据。它每次只返回某一波段的数据。如果所需的空间数据不止一个波段,必需多次调用该程序以获得该相应波段的数据。数据的范围由DIMS关键字控制。

ENVI_GET_SLICE 该函数从一个打开的文件中获取波谱影像数据,它返回影像某一行所有波段的数据值。结果以BIP或BIL的格式返回。

4、使用感兴趣区(ROI)进行空间选取

很多ENVI函数提供了使用ROI进行影像的空间选取选项。在ENVI的函数中,DIMS关键字用于定义空间选取。DIMS变量的第一个元素称为ROI指针,如果它被定义,则表明影像是基于ROI进行空间选取的。如果ROI指针设置为-1,表示没有使用ROI。用户可用使用ENVI_GET_ROI_DIMS_PTR正确的设置ROI指针。

5、生成ENVI格式的文件

ENVI影像格式可能是最简单的数据格式。它是二进制文件,栅格影像数据以二进制数据流方式按BSQ、BIL或是BIP的存储顺序存储。文件中只有影像数据,头信息没有嵌入到文件中。当使用WRITEU程序将二维或三维影像数据写入到磁盘时,IDL自动生成二进制格式文件。ENVI格式的影像文件可用使用任意的名称,并且无需扩展名。 同时每一个二进制文件都伴随有一个ASCII格式的头文件,这个头文件描述了影像的基本特征以及附加信息。为了ENVI能够识别这个头文件,它必需和影像文件具有同样的文件名,并以.hdr做为扩展名。

(1) 将影像数据保存到内存 当用户函数的结果是包含在IDL数组中的影像数据时,这些数据可用以内存方式被ENVI所使用。

ENVI_ENTER_DATA 该函数将IDL数组中的数据输入到可用波段列表中,该程序自动的设置ENVI的头文件,该文件同样也存储在内存中,并返回内存影像的FID。一旦影像出现的可用波段列表中,它就可以像其它ENVI影像一样使用,也能够被存入磁盘。

(2)将影像数据存入硬盘

由于IDL的WRITEU函数能够产生ENVI格式的文件,ENVI没有提供单独的程序来将IDL的数组写入到磁盘。可以直接使用IDL的WRITEU函数
OpenW, unit, ’new_envi_image_file.img’, /Get_LUN WriteU, unit, image_array Free_LUN, unit 注:必需考虑到,要随影像文件同时写入ENVI的头文件。

ENVI_SETUP_HEAD 使用该函数写某个已存入磁盘的影像数据的ENVI头文件。使用OPEN关键字,允许将影像文件输入到可用波段列表。如果没有给ENVI_SETUP_HEAD程序设置OPEN或是WRITE关键字,那么ENVI头文件只是在内存中创建(可以使用ENVI_FILE_QUERY获取文件信息)。ENVI_SETUP_HEAD函数也能够返回磁盘上影像文件的FID。

(3)从已存在的ENVI文件中创建新文件 CF_DOIT

这是第三个用于创建ENVI格式文件的函数,尽管它只能用于ENVI中已经打开的文件。使用该函数通过已有的ENVI文件创建一个新的ENVI格式的文件。集成到新文件中去的影像可以是ENVI中已经打开的磁盘文件或是内存文件,结果可以保存为文件也可以存放在内存中。

ENVI标准数据的头文件信息:

ENVI

description = {

Bighorn Basin, Landsat TM, Calibrated to Reflectance}

samples = 512 行

lines = 512 列

bands = 6 波段

header offset = 0 头文件的偏移量一般为0

file type = ENVI Standard

data type = 1 数据类型 byte一个字节够用 1为byte 2 integer 3 这项要具体看你的数据类型

interleave = bsq 剩下不用说了

sensor type = Landsat TM

map info = {UTM, 1, 1, 277904.645, 4906894.331, 28.500000, 28.500000, 13, North}

wavelength units = Micrometers

z plot range = {0.00, 100.00}

z plot titles = {Wavelength, Reflectance}

band names = {

TM Band 1, TM Band 2, TM Band 3, TM Band 4, TM Band 5, TM Band 7}

wavelength = {

0.48500, 0.56000, 0.66000, 0.83000, 1.65000, 2.21500}

免责声明:文章转载自《常用ENVI函数功能介绍》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇kvm虚拟机vnc配置安装Sql Server 2008R2报错0x84B10001下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

量产USBCDROM后的PE无法加载外置程序的原因及解决方法(转)

PE的外置程序是通过调用 WinPE.INI 实现的,没有正常加载外置程序的原因就是PE在启动过程中没有找到USBCDROM中的这个WinPE.ini! 而调用WinPE.INI的是PE系统 system32目录下的 PECMD.INI 文件,需要修改这个 PECMD.INI 文件,改变WinPE.INI的调用方式。 PECMD.INI 原内容:  引用...

辐射定标与FLAASH大气校正

1 辐射定标 一般来讲,辐射定标就是将图像的数字量化值(DN)转化为辐射亮度值或者反射率或者表面温度等物理量的处理过程。辐射定标参数一般存放在元数据文件中,ENVI中的通用辐射定标工具(Radiometric Calibration)能自动从元数据文件中读取参数,从而完成辐射定标。 辐射校正:Radiometric correction一切与辐射相关的误差...