遥感数据的波段运算
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
遥感数据的波段运算
一、波段运算(Band Math)
Band Math TM功能允许你处理导致单个波段输出的复杂表达式。这些数学表达式也可以
应用于一个多波段文件中的所有波段,providing “File Math”。
关于使用波段运算的更多信息,请参阅ENVI Programmer’s Guide 第 29 页的 “Band Math Basics”。
1.可利用的波段运算功能(Available Band Math Functions)
Band Math 功能为用户提供一个灵活的图像处理工具,其中许多功能是无法在任何其它
的图像处理系统中获得的。该功能的能力与 IDL 语言的能力直接相关。可用的函数包括但
不仅限于表 4-2 中列出的数学表达式。
表 4-2: 一些可用的波段运算函数。
Series and Scalar 数学三角函数其它波段运算选项加(+)正弦(sin(x))关系运算符(EQ、NE、LE、LT、
GE、GT)
减(-)余弦(cos(x))逻辑运算符(AND、OR、XOR、
NOT)
乘(*)正切(tan(x))类型转换函数(byte, fix, long,
float, double, complex)除(/)反正弦(asin(x))IDL 返回数组结果的函数最小运算符(<)反余弦(acos(x))IDL 返回数组结果的程序
最大运算符(>)反正切(atan(x))User IDL 函数和程序
绝对值(abs(x))双曲正弦(sinh(x))
平方根(sqrt(x))双曲余弦(cosh(x))
指数(^)双曲正切(tanh(x))
自然指数(exp(x))
自然对数(alog(x))
以10为底的对数(alog10
(x))
注意
一些有效的 IDL 表达式要求整个输入数组存在于内存中,它可以不必与 ENVI tiling 操作相兼容。
2.Band Math 对话框
(1). 选择Basic Tools > Band Math.
将出现 Band Math 对话框。假如运算结果是一个二维数组,它将接受任何有效的 IDL 数学表达式、函数或程序。
(2). 在标签为 “Enter an expression:” 的文本框内,输入变量名(将被赋值到整个图像波段或可能应用到一个多波段文件中的每个波段)和所需要的数学运算符。
变量名必须以字符 “b” 或 “B” 开头,后面跟着 5 个以内的数字字符。
实例:
若你想计算三个波段的平均值,则在文本框“Enter an expression:”内输入数学方程式:(float(b1)+float(b2)+float(b3))/3.0
这时,变量b1、b2自动跳入”Previous band math expression”对话框中,可以输入到文本框中。该表达式中使用的三个变量,“b1” 是第一个变量,“b2” 是第二个变量,“b3” 是第三个变量。注意,在本例中,IDL 的浮点型函数用来防止计算时出现字节溢出错误。(3). 输入一个有效的表达式被输入,点击 “OK”处理。
将出现Variable/Band Name Pairings 对话框。请参见以下部分。
4.要重新使用、保存或取消任何以前应用的数学表达式:
(1). 点击显示在 “Previous Expression:” 列表中的任何表达式,把它导入到 “Enter an expression:” 文本区中。
(2). 一旦被导入,点击 “OK”,把该表达式应用到一组新的波段。
将出现Variable/Band Name Pairings 对话框。请见下列的详细向导。
5.要把表达式保存到一个输出文件,点击 “Save”,然后当出现 Enter Output Filename 对话框时,键入输出文件名。
为了保持一致,输出文件名应该指定扩展名为.exp 。
(Tips:可以在记事本中先输入复杂的公式,再导入公式文件)。
6.要恢复原先保存的表达式,点击 “Restore”,然后选择适当的文件名。
该表达式将显示在 “Previous Expression:” 列表中。
· 要清除所有原先的表达式,点击 “Clear”。
图4-13: Band Math 对话框。
Variable/Band Name Pairings 对话框
Variable/Band Name Pairings 对话框允许你从一个输入波段列表中,把波段赋值给输入在“Enter an expression:” 文本框中的变量。
· 要把一个值赋给原先实例中的变量 “b1”:
1. 在标签为“Variables used in expression:” 的文本框内,点击表达式 “B1”。
2. 在标签为“可利用波段列表:” 的列表中,点击所需要的波段。
注意,一旦第一个波段被选择,只有那些相同空间大小的波段被显示在波段列表中。
3. 按照同种方法,为 “B2”、“B3” 等赋予一个值。
· 要把一个多波段图像赋值给一个或所有变量:
1. 点击“Map variable to Input file”。
2. 使用标准的 ENVI 文件选择步骤,选择一个文件(这可视为 “File Math”)。
所选择的文件可以是波谱子集,但是若一个以上的文件被使用,它们必须有相同的波段数。通过数学表达式修改的文件数学(file math),一个多波段输出图像产生。
3. 一旦所有变量被定义,标准的 ENVI 输出对话框显示在 Variable/Bands Pairings 对话框
的底部。可以把一个波段运算结果作为新的变量输入下一个运算过程。
· 要选择一个空间子集:
1. 点击 “Spatial Subset”。
2. 将出现标准的 File Spatial Subset 对话框(第 145 的 “Standardized ENVI Spatial Subsetting”)。系统默认值被设置为处理整个空间场景。
· 要把结果输出到一个文件或内存,选择 “File” 或 “Memory” 切换按钮。
· 若选择输出到一个文件,键入一个输出文件名,或使用 “Choose” 按钮选择一个文件名,
然后点击 “OK”。
结果图像被显示在可利用波段列表中。
二、运用 IDL 程序和波段运算功能
由于 ENVI 为你提供对 IDL 性能的访问,你可以使用内置的 IDL 功能部件的能力、IDL 用户函数,或书写你自己的程序执行自定义的操作。这些函数的唯一要求是它们接受一个或多个图像阵列作为输入,并且它们输出一个单波段二维数组的计算结果。这些函数必须保存在 IDL 路径列表内的一个目录下,以便它们将自动编译。通过使用 ENVI 主菜单System 下拉菜单下的Compile Module选项(见ENVI Programmer’s Guide第 23 页的“Incorporating New Routines”),也可以对它们进行编译。以下是用户波段运算功能的一些简单的实例。要获得更多关于使用波段运算执行用户自定义程序的信息,请参阅ENVI Programmer’s Guide 第 29 页的“Band Math Basics” 和 ENVI 用户函数指南。