ENVI波段运算与波普运算
图像可以看作是一个矩阵,矩阵中的任一元素对应 于图像中的一个点,而相应的值对应于该点的像素值,图像之间的运算就是矩阵运算。在ENVI中,有专门的图像运算工具—波段运算(BandMath)工具。波段运算可以完成诸如遥感定量反演中的模型运算、图像辐射定标、图像二二值化等处理。使用波谱运算( Spectral Math)工具可以对波谱曲线进行运算。
概述
Band Math是一个灵 活的图像处理工具,其中许多功能是无法在其他图像处理系统中获得的。由于每个用户都有特定的需求,利用此工具用户可以自己定义处理算法,应用到在ENVI中打开的某个波段或整幅图像中。用户还可以根据需要自定义简单或复杂的处理程序,例如,可以对图像进行简单加、减、乘、除运算,或使用IDL编写更复杂的处理运算功能。
波段运算的实质是对每个像素点对应的像素值进行数学运算。如下图所示为一个简单波段运算的示意图,运算表达式是3个变量相加,每一个变量对应于一幅图像数据,对这3个图像数据求和并输出结果图像。表达式中的每个变量不仅可以对应某单一波段,也可以对应一个多波段的栅格文件。例如,在表达式bl +b2 +b3中,如果bl是一个多波段图像文件,b2、b3为单一波段,则结果为bl所对应的所有波段分别与b2、b3 进行求和。
Band Math工具
下面以求图像3个波段数据之和为例,介绍Band Math 工具的使用。在使用BandMath之前需要先打开图像数据。
(1)在Toolbox工具箱中,双击Band Ratio——Band Math工具,打开Band Math对话框。
(2)在运算表达式输入框( Enter an expression)中输入表达式: bl +b2 +b3,单击Add to List按钮,将表达式添加到列表中。
提示:如果表达式语法有误,将不能被添加到列表中。
(3)单击OK按钮,打开Variables to Bands Pairings 下图对话框, 为运算表达式中各个变量赋予图像文件或者图像波段。
提示:如果要为一个变量选择多个波段或者图像的所有波段,单击MapVariableto
Input File 按钮。
(4)在Variables to Bands Pairings 对话框中,在Variables used in expression 列表框中选择变量B1,在Available Bands List 中为B1指定一个波段, 或使用Map Variable to InputFile按钮为变量b1指定一个图像文件。
提示:当第一个波段或文件被选中后,只有那些与其具有相同行列数的波段被显示在波段列表中。
(5)利用同样的方法分别为B2和B3变量指定波段或文件。
(6) 单击Choose按钮,选择文件名及路径保存结果,单击OK按钮,执行运算。
在Band Math 对话框中,其他按钮的功能说明如下:
●Add to List:可以将表达式添加到Previous Band Math Expression 列表中。这个列表
还同时显示未重启ENVI之前使用过的表达式。
●Save:可以将列表中的运算表达式保存为外部文件(. exp)。
●Restore: 可以将外部运算表达式文件导入。
●Clear: 可以清除列表中的所有运算表达式。
●Delete:可以删除选择的运算表达式。
使用波段运算需要满足以下4个基本条件:
1)必须符合IDL波段运算表达式语法书写
所定义的处理算法或波段运算表达式必须满足IDL语法。不过,书写简单的波段运算表达式无须具备IDL的基本知识,但是如果所感兴趣的处理需要书写复杂的表达式,建议学习关于波段运算的IDL知识。
2)所有输入波段必须具有相同的空间大小.
由于波段运算表达式是根据pixel - for - pixel原理作用于波段的,因此输入波段的行列数和像元大小必须相同。对于有地理坐标的数据,如果覆盖区域一样, 但是由于像元大小不一样使得行列数不一致,在进行波段运算前可以使用Toolbox 工具箱→Raster Manage-ment→Layer Stacking功能对图像进行调整。
3)表达式中的所有变量都必须以Bn (或bn)命名
表达式中代表输人波段的变量必须以字母“b” 或“B”开头,后跟5位以内的数字。
例如,对3个波段进行求和运算的有效表达式可以用以下3种方式书写:
bl+b2+b3.
B1 +B11 +B111
B1+b2+B3
4)结果波段必须与输入波段的空间大小相同
波段运算表达式所生成的结果的行列数必须与输入波段的相同。例如,如果输入表达式为MAX (b1), 将不能生成正确结果,因为表达式输出值为一个数,与输T入波段的行列数不一致。