如何编辑 ENVI 文件头

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何编辑 ENVI 文件头相关的知识,希望对你有一定的参考价值。

若在打开一个文件时没有发现头文件 ( .hdr 文件 ) 或其它有效的头文件信息, 就会出现Header Info对话框。你将使用这个对话框输入样本或像元数、行数、波段数、在从文件的开头到数据开始处(嵌入的文件头)的字节偏移量、数据的存储顺序("交叉")(BSQ: band sequential,BIP: band interleaved by pixel,or BIL: band interleaved by line)、数据的字节顺序("Host (Intel)": Host Least Significant First for DEC machines and PCs 或 "Network (IEEE)": Network Most Significant First for all other platforms)、数据类型(字节, 整数,浮点等),以及文件类型。其它选项包括设置默认的Z-Plot range,默认的显示拉伸,地理坐标的输入(entry of georeferencing information),相关的波长和FWHM值(full-width-half-maximum),传感器类型,波段名以及坏波段。
在 ENVI 显示一幅导入的图像前,必须将必要信息输入到Header Info窗口。若一个文件没有 ENVI 文件头或其它支持的文件头格式,这个窗口自动地出现。每次打开一个数据文件时,ENVI 搜索头文件并使用该信息来打开文件。这些信息只需输入一次,当选择Header Info窗口底部的 “OK” 按钮,它自动地保存到输入目录中的一个 ENVI 头文件。
ENVI 的 Edit Header 功能也可以用来更改已存在的头文件的信息。
ENVI 在一个单独的文本头文件中保存关于文件的信息。这个头文件名与图像文件名相同,但是文件扩展名为.hdr 。 Edit ENVI Header 功能允许你更改文件头信息。每当打开一个数据文件,ENVI 便搜索头文件,并使用这些信息来打开文件。
若需要编辑 ENVI 文件头,按照以下步骤:
1. 选择 File > Edit ENVI Header.标准的ENVI Input File 对话框将打开,为你提供一个打开文件的列表,可以从中选择。
2. 在所需要的文件名上点击。在标签为“File Information” 的文本框内,ENVI显示关于该文件的细节。
3. 确认这些信息是正确的。
要编辑所显示的参数,按照以下步骤:
4. 点击 “OK” 来启动一个 Header Info 对话框。Header Info 对话框有一个可编辑的文本区,及 Input Header Info From 和
Edit Attributes 下拉菜单。
5. 当你完成编辑后,点击“OK”。
若已经对当前打开文件的文件头编辑完毕,ENVI 将关闭该文件;当你选择“OK”时,再重新打开。因为当该文件关闭时,该文件使用的显示也将关闭。
你必须从 ENVI 主菜单,或可利用波段列表中重新
启动这些显示。
< xmlnamespace prefix ="v" ns ="urn:schemas-microsoft-com:vml" />< xmlnamespace prefix ="o" ns ="urn:schemas-microsoft-com:office:office" />
Header Info对话框

Header Info 对话框包括:用于通用图像参数的可编辑的文本区与两个下拉菜单。从 Header Info 对话框里,你可以点击 Edit Attributes 下拉菜单中的选项,调用编辑特定文件头参数的独立对话框。这些参数包括波段名、波长、地图信息等。有关细节如下。

编辑通用图象参数

在 Header Info 对话框中,你可以编辑通用图像参数。每个文本区的说明如下:
· “Samples” 文本区显示文件中的样本数。
· “Lines” 文本区显示文件中的行数。
· “Bands” 文本区显示文件中存储的波段数。
· “Offset” 文本区显示从文件开头到实际数据起始处的字节偏移量。(“偏移量”有时被称为嵌入的文件头。)
· “Xstart” 和 “Ystart” 文本区显示其它图像子集的图像的像元偏移量。偏移量允许链接相关的图像,以及使用动态覆盖图。
· 使用 “Data Type” 下拉菜单,来选择适当的数据类型 (字节型,整型, 无符号整型,长整型,无符号长整型,浮点型,双精度型,复合型,或双精度复合型)。
· 使用“Byte Order” 下拉菜单,来选择数据的字节顺序。这个参数在不同的平台有所不同:
· 对于 DEC 和 PC 机,选择 “Host (Intel)”: Host Least Significant First.
· 对于其它的所有平台,选择 “Network (IEEE)”: Network Most Significant First.
· 使用 “Interleave” 下拉菜单,选择下列选项,以确定数据存储顺序:
· “BSQ” 代表波段顺序存储格式。
· “BIL” 代表波段按行交叉格式。
· “BIP” 代表波段按像元交叉格式。
· 使用Header Info 对话框底部的文本区来插入描述该数据文件的字符串文本。(LANDSAT TM image of the Hong Kong SAR - 13 February, 1989)
· “File Type” 按钮下拉菜单的说明如下。

文件类型

ENVI 使用 “File Type” 文件头区域自动地识别某些数据文件类型。 “File Type” 文本区允许许多文件类型在以它们本身的格式存在时就有一个 ENVI 文件头。通过查看 menu 目录下的 filetype.txt 文件(ENVI 各版本都有),你可以看到一个所有认可的文件类型列表。你可以编辑该文件,并添加新的用户自定义文件类型。
文件类型包括 ENVI 特有的文件类型,诸如元文件(meta files)、分类文件、虚拟镶嵌(virtual mosaics)、 波谱库及 FFT 结果。文件类型也包括特定的数据格式,如NLAPS、RadarSat、Spot 等。此外还认可 TIFF、BMP、ERDAS 8.x 和 PCI 文件。

从菜单输入文件头信息

Header Info 对话框的 Input Header Info From 下拉菜单允许将文件头信息从另一个文件合并到当前文件头。
1. 选择 Input Header Info From > Other File.
2. 选择所要读取的头信息文件,然后点击 “OK”。

Edit Attributes 按钮

Header Info 对话框的 Edit Attributes 下拉菜单为你提供了一种编辑波段名、波长等辅助的文件头信息的方法。Edit Attributes 菜单也允许你决定用什么样的图像来显示复数数据类型,编辑地图、分类、Z-plot 及拉伸信息。
这些选项的详细描述如下。

编辑辅助头信息

ENVI 文件头可以有相应的依赖于图像数据类型的辅助信息(波段名、波谱库名、波长、Bad波段列表、FWHM 等)。你可以更改这些值,或按照下列步骤将它们读入到头文件:
· 要选择 Bad 波段:
1. 选择 Edit Attributes > Bad Bands List.
2. 在 Edit Bad Bands List values 对话框,选择 bad 波段。
· 要选择连续显示的一组文件,先点击第一项,按住 “shift” 键的同时,点击该组最后一项。
· 要选择非连续显示的一组文件,先点击一项,按住 “Ctrl” 键的同时,点击其它所有需要的项。
· 要取消选择所有波段,点击 “Clear”。
· 要选择一个特定范围的波段:
A. 在 “Add Range” 按钮旁的两个文本框,键入起始和结尾波段数。
B. 点击 “Add Range”。
3. 点击 “OK”。
· 要选择其它属性来编辑:
1. 选择 Edit Attributes > Band Names,Spectral Library Names,Wavelengths,或FWHM (Full-Width-Half-Maximum) 来激活相应的对话框。
若你以前添加或编辑了上述列出的参数值,则那些值显示在 “Current Parameter Values: ” 文本标签的下面(“参数”指上面显示的其中一项)。否则,显示出系统默认值。
2. 从显示的列表中,点击你想编辑的值。
该值突出地显示在 “Edit Selected Item” 标签下的文本框中。
3. 在文本框中,键入新值。
Band Names可根据每个波段的波谱范围来重新命名。
· 要从 ASCII 文件导入数据:
1. 在任一Edit Values 对话框,点击 “Import ASCII”。
2. 当出现标准的 ENVI 文件选择对话框时,打开所需要的 ASCII 文件。
ASCII 文件的行数必须与图像文件中的波段数相匹配。ASCII 文件可以有一列或多列 ASCII 数据,然而用于导入波段名的文件只能包含字符串。当你打开显示有来自 ASCII 文件开头几个值的文件时,出现 Input ASCII File 对话框。
· “ Wavelength Column ” 文本框指定从ASCII 文件哪一列读取波长。
· “ Multiply Factor ” 文本框中输入的乘法比例系数,允许对波长值进行on-the-fly缩放。例如,键入值 “100” 再按回车键,将使导入的波长值乘以100 。
· “ FWHM ” 栏指定从哪列来获取波段宽度信息(用于波谱重采样)。
· “ Bad Bands List ” 栏使用 “0” 来屏蔽指定波长的波段。
3. 点击 “OK” ,键入新的参数值,并返回到 Header Info 对话框。
4. 在 Header Info 对话框,点击 “OK” ,将所有改变写入头文件。

默认的装入波段

每当打开文件,该选项允许波段被自动地导入到可利用波段列表的灰阶或 R、 G、和 B 文本框。点击 “Load” 或 “Load RGB” 按钮,系统显示默认的波段。可以选择灰阶图像或彩色图像。
1. 从 Header Info 对话框,选择 Edit Attributes > Default Bands to Load.
Default Bands to Load 对话框显示该文件中所有波段的一个列表。
2. 点击波段名,来导入红(R)、绿(G) 和 蓝(B) 电子枪。
· 若只有一个波段被选择,它将作为灰阶图像被导入。
· 点击 “Reset” 来清除所有波段。
3. 点击 “OK” ,返回 Header Info 窗口。

Map Information 对话框

地图信息与地理坐标定位的文件相关。要建立地理坐标定位的数据坐标系统,用户必须知道一个像元(基准像元) 的样本和行坐标、像元的大小(米)、地图投影以及该像元的地图坐标。
1. 从 Header Info 对话框,选择 Edit Attributes > Map Info.
2. 在 Map Information 对话框里,标签为 “Image Coord X” 和 “Y” 文本框中输入基准像元的坐标,标签为 “Pixel Size X” 和 “Y” 文本框中输入像元大小。
3. 通过点击 “Change Projection” 并从投影列表中选择适当的投影,以确定地图投影。
· 若你选择 “Arbitrary”,你可以选择 “Coordinates” 标签附近的 “Pixel Based” 或 “Map Based ”。
· 若你选择 “Geographic Lat/Lon:”,通过点击 “Datum” 按钮,并从 Select Geographic Datum 对话框中选择可利用的数据,以确定数据类型。
· 若你选择 “UTM”,在 “Zone” 文本框中输入数字,选择 “N” 或 “S” 切换按钮,然后再选择一个数据(若有必要)。
· 若选择的是 “State Plane...” 投影中的一个,通过点击箭头切换按钮,选择 “Feet ” 或 “ Meters ”;通过在 “Zone” 文本框中输入,或点击 “Zone” 从列表中选择,以确定一个区域。
4. 在适当的文本框中输入基准像元的坐标。
相应的纬度和经度将被自动计算,并可通过点击切换按钮到 “Geographic Coordinates” 来查看。
5. 点击 “OK” ,返回到 Header Info 窗口。

Geographic Corners

若你的文件没有被地理坐标定位,但是包括地理信息,该选项允许你把信息放到 ENVI 头文件中。目前,ENVI用第一个地理点(geographic point )在 geo-browser 上放置一面旗帜以显示文件的位置。其它的点作为用户信息仍保留在文件头中。
1. 从 Header Info 对话框,选择 Edit Attributes > Geographic Corners.
2. 输入第一和第四像元间的位置,及其相应的纬度和经度。

像元大小(Pixel Sizes)

要在文件头中输入一个像元的大小:
1. 从 Header Info 对话框,选择 Edit Attributes > Pixel Sizes.
2. 将 X 和 Y 像元大小输入到适当的文本框中,并从 “Units” 下拉菜单中选择所需要的单位。
由于Landsat TM sensor 的pixel size 大约为 30m by 30m,所以,Click the Edit Attributes button and select Pixel Sizes ... For both the X and Y pixel sizes click within the text box and change the value to 30. Now make sure the units are set to metres. To finish the update click OK. Now change the Sensor Type to \'Landsat TM\'.

分类信息(Classification Info)

若你需要为某类修改类别名和颜色,按照下列步骤:
1. 从 Header Info 对话框,选择 Edit Attributes > Classification Info.
要使该选项有效,“File Type” 必须设置为 “Classification”。
2. 在 Classification Info 对话框中,输入类别号;然后点击 “OK”。
3. 当出现 Class Color Map Editing 对话框时,从 “Selected Classes” 列表点击要更改区域的类别名。
· 一旦你选择了类别名,你可以在 “Class Name:” 文本区内更改它。
· 要在 RGB 颜色空间(三种颜色各为 0-255 )更改类别颜色,移动三个标签为 Red、 Green 或 Blue 的滑动块。
· 要重新设置为原来的类别颜色和名称,点击 “Reset”。
· 要在 HSV 或 HLS 颜色空间更改类别颜色:
A. 从 Class Color Map Editing 对话框内的 “System” 下拉菜单中选择适当的系统。
B. 移动 “Hue,Saturation,Value” 或 “Hue,Lightness,Saturation” 滑动块到所需要的值。
4. 要彻底地更改,点击 “OK”。

注意

在24位彩色显示器上,ENVI 将不能自动地运行这些颜色更改。对于24位硬件,对图像更改颜色,是通过点击 “Apply Changes” 按钮来替代的。这个按钮只有当24为彩色时才出现。

z-图信息(Z Plot Information)

若你需要编辑用于绘制 Z 剖面图、设置轴标题、设置 Z Plot 方框大小或指定一个另外的 Z 剖面图文件名的参数,按照以下步骤:
1. 从 Header Info 对话框,选择 Edit Attributes > Z Plot Information.
2. Edit Z Plot Information 对话框将打开,允许你来设置这些参数:
· 要设置 Z plot Range,在 “Z Plot Range” 标签旁的左、右文本框中分别输入最小值和最大值。
· 要设置轴标题,在 “X Axis Title” 和 “Axis Title” 文本框内输入所需要的轴标题。
· 要指定方框的大小(按像元)来计算平均波谱,在 “Z Plot Average Box” 文本区内输入参数。
· 要指定另一个文件名,以从中提取 Z 剖面图:
A. 点击 “Default Additional Z Profiles”。
B. 当出现 Default Additional Z Profiles 对话框,点击 “Add New File”。
C. 选择所需要的文件名,然后点击 “OK”。文件名将出现在列表中。
· 要从列表中删除一个文件名,先点击文件名,然后点击 “Remove Selected File”。

传感器类型(Sensor Type)

要在 ENVI 文件头中存储传感器类型信息:
1. 从 Header Info 对话框,选择 Edit Attributes > Sensor Type.
2. 从列表中选择合适的类型。
Now change the Sensor Type to \'Landsat TM\'.

缺省拉伸(Default Stretch)

要设置系统默认的拉伸,以便用于显示波段:
1. 从 Header Info 对话框,选择 Edit Attributes > Default Stretch.
2. 从 “Default Stretch” 文本框附近的下拉菜单,选择适当的拉伸类型。
供你选择的包括 % linear(线性拉伸百分比),linear range(线性拉伸范围),gaussian(高斯分布),equalize(均衡化),square root(平方根)或 none(不拉伸) 。一些拉伸要求你输入附加信息。
· 对于 “% linear” 拉伸,输入剪去(slip)数据的百分比(即5%)。
· 对于 “Linear Range” 拉伸,输入最小和最大 DN 值,用于拉伸。
· 对于 “Gaussian” 拉伸,输入标准差数,用于拉伸。
ENVI 将在 .hdr 文件中保存拉伸设置。无论你什么时候显示这幅图像,该拉伸设置将覆盖掉 envi.cfg 文件中的系统整体默认拉伸。

复数型Lookup功能(Complex Lookup Function)

对于复数数据类型,你可以使用该选项决定显示哪幅图像。
1. 在 Header Info 对话框中,选择 Edit Attributes > Complex Lookup Function.
2. 当出现 Complex Data Lookup Function 对话框时,从下拉菜单中选择所需要的 lookup 功能。
选项有:“Real”(数的实部),“Imaginary”(虚部),“Power”(幂,模的log10),“Magnitude”(模,实部和虚部平方和的平方根),以及 “Phase”(相位,虚部除以实部的反正切值)––––系统默认的图像是 “Power”。

行偏移量(Row Offsets)

你可以使用该选项设置额外字节数,以便在行的起始和结尾跳读。
1. 在 Header Info 对话框,选择 Edit Attributes > Row Offsets.
2. 在 Edit Row Offsets 对话框,通过点击箭头按钮或在文本框中键入,以输入或选择要跳过的前缀和后缀字节数。
3. 点击 “OK”。

波段偏移量(Band Offsets)

你可以使用该选项设置额外字节数,以便在波段的起始和结尾跳读。
1. 在 Header Info 对话框,选择 Edit Attributes > Band Offsets.
2. 在 Edit Band Offsets 对话框,通过点击箭头按钮或在文本框中键入,以输入或选择每个波段要跳过的前缀和后缀字节数。
3. 点击 “OK”。

输入IDL变量(Import IDL Variables)

该选项允许你输入任何在 ENVI 命令行中定义的 IDL 变量。一维变量将被放入一个图示窗口中。二维和三维变量作为内存数据项将显示在 Available Band List 中。
· 要把 IDL 变量输入到 ENVI:
1. 选择 File > Import IDL Variables.
2. Import IDL Variables 对话框将显示一个所有被定义的变量列表。
3. 通过在变量名旁的复选框内点击,选择所需要的变量名输入。
· 要添加一系列变量名,输入起始和结尾变量号,然后点击 “Add Range” 按钮。
· 要选择所有变量名,点击 “Select All” 按钮。
· 要清除已选择的变量名,点击 “Clear” 按钮。
4. 要在 IDL 中保存数据的一个备份,使用箭头切换按钮来选择 “Yes”。若选择了 “No”,那么数据将被输入到 ENVI 并从 IDL 中删除。
5. 点击 “OK” ,输入所需要的变量。
一维变量将被放入一个图示窗口中。二维和三维变量作为内存数据项将显示在 Available Band List 中。
参考技术A 1. 选择 File > Open Image File.

2. 当出现 Enter Data Filename 对话框,点击文件名,再点击“OK” 或“Open” 以打开选择的文件。

· 要选择一组连续显示的文件,在该组的第一个文件上点击,然后按住它的同时,点击该组的最后 一个文件。或者,用鼠标左键点击和拖曳来选择所需要的组。

· 要选择非连续显示的多个文件,按住 “Ctrl” 键,在每个所需要的文件上点击。

· 要改变目录来查找你的文件,在 “File Name” 文本框输入路径名(“Path” for UNIX)。

c语言在头文件中如何引用另一个头文件中的函数

c中如何在自己写的.h文件中调用自己写的.h文件中的函数;如
a.h 中有funca(); b.h中有funcb(); b.h中包含了a.h;在b.c中引用b.h;如何能调用到funca()函数;现在我用过extern在b.h中声明,但是不能访问到该函数;请大虾指点

1、首先建头文件是为了声明c文件中的函数,以及包括宏定义。建立头文件要有对应的c文件。

2、要写头文件首先要建一个.h文件。

3、打开h文件,进行编辑。建立头文件是有一定步骤的。要用到#ifndef。。。#define。。。。#endif。这是为了避免重复定义。

4、#ifndef后面要写的是头文件名称的大写。例如:test.h要写成__TEST_H__。前面与后面是两个下划线。字母用大写。

5、然后在define与endif中间声明函数名,记得写冒号。

6、然后在main文件中写上include这个头文件,就可以调用了。

7、最后编译,运行,就完成了。

参考技术A 既然函数在头文件中作了声明,一般是指全局函数,即其作用域是整个程序空间。若要在另一个头文件中引用该函数,可以通过以下两种方法实现:
(1)使用#include "函数声明所在的头文件名.h"
(2)使用关键字extern 函数声明; 指明这是引用的外部函数。
例如 :函数void windows_display(windows_t window);声明在头文件wins.h中,若要在output.h中引用,则可以:(1)#include "wins.h" (2)在output.h中添加该语句extern void windows_display(windows_t window);
参考技术B 你在b.h里面申明函数funca()就行了本回答被提问者采纳

以上是关于如何编辑 ENVI 文件头的主要内容,如果未能解决你的问题,请参考以下文章

c语言在头文件中如何引用另一个头文件中的函数

如何在Qt Creator中添加库文件和头文件目录

根据文件头数据判断文件类型

visualstudio2022怎么在新建项中包含头文件

避免在类头文件中声明私有函数 (C++)

什么是BOM头(字节顺序标记(ByteOrderMark))