基于IDL的遥感影像波段运算

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于IDL的遥感影像波段运算

1.IDL语言特征

在IDL中,矩阵是按照列的方式处理的,即矩阵是以n列、m行的方式表示的,这一点与Fortran语言一样,但与C语言(按m行、n列的维度来标记)表示矩阵的方式不同。只有熟悉IDL的数据存储、处理的特点,才能方便地进行分析。以300列、200行的遥感数据band1为例,其数据的记录特征如下:

IDL图形坐标band1 DN值坐标

图1.IDL中像元坐标与亮度矩阵的对应关系

(1)数据按列存储;最先存储的是第一列的数据(图象第一列的像元亮度值),接着是第二列,直至最后一列。

(show:print,data[0,*])

(2)采用顺序显示数据的方式。将第一行的亮度值按顺序从左到右以行的方式显示或存储,不管band1矩阵有多少行、多少列,总是先显示、存储完第一行,然后是下一行。由于IDL的默认显示宽度是80列,所以在输出窗口中要用几行才能显示完矩阵的第一行亮度值。然后另起一行显示亮度矩阵的下一行值,直到最后一行。这一点对于图象显示和分析相当重要。

复习:IDL矩阵的显示方式,data

(show:print,data[*,0])

(3)默认情况下,图象数组的第一行和第一个元素显示在屏幕的左下角。后面的行将从下往上显示。在图形窗口显示图象时,图象的每一个元素在屏幕中显示为一个像素[1]。在IDL中图象是从下往上画的。即把band1亮度矩阵的第一行值显示在图象最下端的一行像元中,把band1亮度矩阵的最后一行值显示在图象最上端的一行像元中。这是图象显示最重要的特征。

区别两幅图象的显示效果:(tvscl,data)与(tvscl,data,300,0,order=1)

(4)矩阵转置与图象的关系

将矩阵band1转置,

(print,(transpose(data))[*,0]),打印转置矩阵的第一行,它在band1中是哪行或哪列?

(print,transpose(data)

tvscl,data,200,0,order=1

结论:按行显示的数据DN,按列显示;按列显示的DN数据,按行显示

2.遥感数据的处理与分析

31通用的栅格数据存储格式

BSQ :波段顺序存储格式。每行数据后面紧接着同一波谱波段的下一行数据。这种格式最适于对单个波谱波段中任何部分的空间(X,Y)存取。每个tile是单个波段的一个空间子集。

BIP :波段按像元交叉格式。图像按顺序存储第1个像元所有的波段,接着是第2个像元的所有波段,然后是第3个像元的所有波段,等等,交叉存取直到像元总数为止。这种格式为图像数据波谱(Z)的存取提供最佳性能。每个tile是一幅图象中所有波段行的所有像素。

BIL:波段按行交叉格式。按 BIL 格式存储的图像先存储第一个波段的第一行,接着是第二个波段的第一行,然后是第三个波段的第一行,交叉存取直到波段总数为止。每个波段随后的行按照类似的方式交叉存取。这种格式提供了空间和波谱处理之间一种折衷方式,它是大多数 ENVI 处理任务中所推荐的文件格式。每个tile是一幅图像所有波段的一行。32栅格数据输入

以BSQ格式的图象为例。假设有一幅BSQ格式的7波段TM影象“2003_sw.img”,需要计算各波段亮度值的基本统计信息(包括:最大值、最小值、均值、均方差、倾斜度和平坦度)。

遥感数据其实就是像元的亮度值(也叫做DN值),这与它有多少个波段、是多光谱数据还是高光谱数据都没有关系。这里分析遥感数据的目的,是为了帮助理解、纠正易于混淆的栅格数据存储方法和数据分析方法。影象“subset_2003.img”的大小为300×200(即:lines:200,Samples:300)。以band1波段为例,在IDL的图形显示系统中,左上角坐标为(1,1)。

利用程序把band1的亮度值读入IDL环境中,构造成一个亮度矩阵(见图1)。在IDL 的图形系统中,图象左上角的坐标为(1,1),右下角(X,Y)坐标值最大。在图1中,图象band1的像元坐标左上角为(1,1),右下角为(300,200),坐标对中的X为列号,Y 为行号,像元数量为300列200行。与像元一一对应,亮度矩阵是band1的亮度值,每个像元一个值,左上角为92,右下角为90。亮度矩阵中的第一行值,与图象中的第一行像元从左到有一一对应,亮度矩阵中的第二行值,与图象中的第二行像元从左到有一一对应,依次

类推,直到最后一行。

在IDL中打开band1的亮度矩阵并且显示在IDL绘图环境中的时候,要正确地显示图

象(见图2),必须要确保亮度矩阵与图象坐标系统的正确关系,如亮度矩阵中的左下三角

(或右上三角)一定要严格对应图象像元矩阵的左下三角(或右上三角),否则就会发生图

象翻转、倒置(见图3),其实质就是将波段亮度矩阵进行了转置或行列倒置。

练习:

程序调用。调用band4的ASCII文件的代码如下:

file=filepath('band1_matrix.txt',subdir='examples\data')

openr,lun,file,/get_lun

data=lonarr(300,200) ;事先知道图象大小

readf,lun,data

print,size(data,/n_elements) ;data就是band4图象的亮度矩阵

free_lun,lun

3.波段运算(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)

相关文档
最新文档