|
|
MTALAB在遥感影像处理中的应用{转载}
作为一种基于矩阵运算的高级程序语言,MATLAB从本质上提供了对图像处理的支持。本文从遥感影像的空间域处理、影像变换、影像的假彩色合成、K-L变换等多个方面论述了MATLAB在遥感图像处理中的应用。
1 引言
MATLAB是Mathworks公司开发的一种集数值计算、符号计算和图形可视化三大基本功能于一体的,功能强大、操作简单的高级程序设计语言。整个MATLAB系统由两部分组成,即MATLAB内核及辅助工具箱,两者相互协调应用构成MATLAB的强大功能。MATLAB内核就是MATLAB的核心内容,包括MATLAB语言系统、MATLAB开发环境、MATLAB图形系统、MATLAB数学函数库以及MATLAB的应用程序接口系统等6个部分;MATLAB的辅助工具箱实际上就是基于MATLAB内核之上的具有专门功能的函数库。经过多年的补充和发展,目前MATLAB已拥有适用于不同专业类别的30余种辅助工具箱,通过使用这些工具箱,可以最大限度地减轻科研工作者和工程技术人员编写用户程序时遇到的困难。
本文首先介绍MATLAB在图像处理中的应用及其处理图像的优缺点,然后通过实现遥感影像处理的几个常用算法来说明MATLAB在遥感影像处理中的应用。
2 MATLAB与数字图像处理
数字图像处理,就是用一系列特定的操作来改变图像的像素,以达到预期的目的。能够进行图像处理的软件有很多,但大多通用的图像处理软件,一般是用来提高视觉感受的,而实际的图像处理工作主要是针对不同的应用领域,需要不同的图像处理算法,因此用户需要根据自己的专业领域选择适当的算法来处理图像。从图像的数字化过程我们可以知道,数字图像实际上就是一组有序的离散数据,其在计算机中以矩阵的形式存储。而MATLAB正是基于矩阵的高级程序设计语言,所以MATLAB在处理图像方面具有天然的优越性。
MATLAB有着极其强大的图像处理功能,一方面,它采用其丰富的图像处理函数,另一方面支持用户根据自己需要编写的图像处理程序,来完成图像显示、图像运算、图像变换、图像增强、图像复原、图像分析和理解等一般图像处理功能,同时还支持小波分析和神经网络等其他图像处理技术。在MATLAB中,通过菜单操作或者函数命令操作读入图像,以矩阵形式存储,并通过操作矩阵名—变量来实现图像操作。
2.1 MATLAB 程序设计语言
MATLAB程序设计语言主要由几个基本要素构成,其中包括变量、常量、数值、细胞型数据、结构型数据、文本、运算符及标点等,以上各基本要素的组合实现MATLAB语言的强大功能。MATLAB语言的核心是矩阵运算,在MATLAB语言中几乎所有的运算都以矩阵运算为基础,同时,与其他程序设计语言一样,MATLAB语言也支持for语句、if-else-end语句、switch-case语句等流程控制语句。同其他程序设计语言一样,要实现某种功能,我们需要编写源程序,MATLAB的源程序就是M文件,一种按照MATLAB语言规则将MATLAB内置函数有机组合在一起的文件。M文件分脚本文件和函数文件两种,M文件不仅可以在MATLAB程序编辑器中编写,而且还可以在其他文本编辑器中编写,并以“.m”作为扩展名加以存储。
2.2 MATLAB支持的图像类型
图像类型与图像格式不同,图像格式是指存储图像时采用的格式,不同的图像处理软件所支持的图像格式有可能不同,但不同的图像格式之间都可以通过图像处理软件进行转换。常用的图像格式有BMP文件、GIF文件、TIF文件、JPEG格式等。MATLAB使用3种存储格式来存储图像:uint8(8位无符号整数)、uint16(16位无符号整数)和双精度。图像类型是指存储图像的矩阵数值与像素之间的对应关系。MATLAB图像处理工具箱支持5种类型的图像:① 二进制图像,图像中的每个像素采取两个离散数值(0或1)中的一个。②灰度图像,包含灰度级(亮度)的图像,一般由二维矩阵表示,调用系统默认的调色板来显示图像。③ RGB图像,也称真彩色图像,其每个像素由三个数值来指定红、绿和蓝颜色分量,不使用调色板。④ 索引图像,把像素值采用RGB调色板下标的图像,一幅索引图像由一个数据矩阵和一个调色板矩阵组成。⑤ 多帧图像,一种包含多幅图像的图像文件,由一个四维矩阵表示,矩阵的第四维用来指定帧的序号。
2.3 MATLAB在图像处理方面的优缺点
作为基于矩阵运算的程序设计语言的一种,在处理图像方面,MATLAB有着其他程序设计语言所不能比拟的地方,但是,MATLAB并不是一个专门针对图像处理领域的软件,所以其优缺点简单归并如下:① MATLAB语言不支持编译系统,边解释边执行,所以其语言执行效率低下,但其丰富的内置函数和高速的计算机处理器可以弥补这一方面的缺陷。② MATLAB类似“DOS”语言,其本身具有面向对象风格的交互开发环境,但在使用MTALAB开发图像处理软件时,在界面实现方面并不是很容易, MATLAB支持与C/C++语言等其他语言的应用程序接口,目前国内外已经展开MATLAB与VC++的集成开发平台方面的研究,并取得一定的成果。③ MATLAB具有强大的内置图像处理函数和矩阵运算函数,这就使图像处理变得简单,使我们把更多的精力放在算法设计上。④ MATLAB可以通过pixval on命令来动态显示图像的灰度值,这对于某些算法设计很重要
3 MATLAB在遥感影像处理中的应用
遥感影像处理的目的使原来不清晰的影像变的清晰或将人们感兴趣的某些特征强调出来(同时抑制不感兴趣的特征)。同处理数字图像一样,MATLAB可以实现遥感影像处理的大多数功能。下面我们利用MATLAB来实现遥感影像的读取与显示、影像的空间域处理和影像变换、假彩色合成和K--L变换等,实验说明MATLAB在遥感影像处理中的应用。
3.1 实验采用的图像
采用2002年9月23获取的TM 数据:2 波段、4波段、7波段、8波段,目标区为西安市区,传感器为ETM+。MATLAB中并没有专门的原始遥感数据读取功能,通过遥感影像处理软件Erdas Image 8.4读入影像,并将其存储格式转为TIF格式。
3.2 遥感影像读取与显示
影像读取有两种方法,一是通过菜单形式[File/Import data],选择相应的影像读取,一是直接通过imread()函数读取MATLAB安装目录下的work文档下的图像,MATLAB根据读入的图像选择相应矩阵来表示。通过imshow()等函数来实现影像的显示,对于修剪感兴趣区域(Area of Interest,AOI),可以通过imcrop()函数来实现。
3.3 遥感影像的空间域处理和影像变换
空间域是影像所在的二维平面或三维空间,空间域处理的对象是每个像素的灰度值,处理后像元的位置不变。空间域处理包括点运算(如线性变换,非线性变换,直方图均衡化,直方图规定化等)和邻域运算(影像平滑和影像锐化等)。对于线性变换、直方图均衡化和直方图规定化可以通过imadjust()、imhist()和histeq()函数来实现,非线形变换可以通过编写简单的M文件来实现。对于影像平滑和影像锐化,由于处理算法有多种,一方面可以选择内置函数来实现,另一方面可以通过M文件来实现。
MATLAB提供了一维和二维图像离散傅立叶变换及其反变换、快速傅立叶变换、离散余弦变换及其反变换函数、连续小波变换、离散小波变换及其反变换,以及其他图像变换技术如线性变换、正弦型变换和基于特征向量的变换等,在实际的影像处理中,可以选择合适的函数来实现影像变换,或者结合内置函数编写需要的影像变换程序。
下面实验首先读入影像,分别进行线性变换并对线性变换后的影像进行laplace锐化处理。原程序如下:
A=imread(‘8.tif’); % 读入8波段影像
B=lineTransform(A,0,255); %调用自己编写的M文件对影像进行线性变换,变换后影像的灰度范围为[0,255]
C=laplace(B); %调用自己编写的laplace影像锐化,对锐化结果中出现的负值,用原图象减去锐化结果。
处理后的图象显示如下:
3.4 影像的假彩色合成和K-L变换的MATLAB实现
影像的假彩色合成是选择多波段影像的其中三个波段,分别赋于红、绿、蓝三种原色,即可在屏幕上显示出合成后的彩色图像。在MATLAB中,实质就是将三个二维矩阵赋值给一个三维矩阵。论文对2、4、7三个波段先线形拉伸后假彩色合成,实验结果如下:
K-L变换又称主成分变换,是对某一n个波段的多光谱空间实行一个线性变换,即对光谱空间X乘以线性变换矩阵A,得到新的光谱空间Y,其表达式为:Y=AX。根据主成分变换的数学原理,A是空间X的协方差矩阵的特征向量矩阵的转置矩阵。变换后的Y光谱空间综合了原有各光谱空间分量的信息而不是简单的取舍,使得Y光谱空间的分量更好的反映事物的本质特征。变换后的Y空间的各分量相互独立。由于在MATLAB计算中存在截断误差,所以变换后的Y空间各分量的协方差并不为零。论文对2、4、7三个波段进行K-L变换,步骤如下:① 根据两个矩阵间的协方差函数cov()编写三个矩阵间的协方差函数;② 用eigs()函数求出协方差阵的特征向量矩阵;③对特征向量矩阵进行转置;④ 利用循环控制语句进行矩阵的线性变换。变换前后2、4、7三个波段的协方差如下表所示:
协方差阵
| 2波段
| 4波段
| 7波段
| 变
换
前
| 2波段
| 370.3139
| 178.4518
| 214.3574
| 4波段
| 178.4518
| 422.8239
| 131.4524
| 7波段
| 214.3574
| 131.4524
| 187.5202
| 变
换
后
| 2波段
| 676.5027
| 0.5954
| 14.5497
| 4波段
| 0.5954
| 0.1392
| 0.1881
| 7波段
| 14.5497
| 0.1881
| 37.7268
|
4 结束语
MATLAB在遥感影像处理方面并局限于如上所述,它还能实现诸如影像匹配、影像融合等许多影像处理功能。实践证明,MATLAB语言界面友好、语言自然、易学易用,在遥感影像处理中提高实验效率,快速实现研究中的新构想,为处理遥感影像提供极大的便利。
|
|
|
|