基于matlab的遥感图像处理程序

  • 格式:pdf
  • 大小:1.24 MB
  • 文档页数:6

基于matlab的遥感图像处理程序报告

南京理工大学电光学院,无履仙人一、程序简介

基于matlab的GUI可视化遥感图像处理程序,界面布局如下图:

菜单栏包括:文件,图像旋转,自动识别有效区域,获取有效区域,压缩,图像增强,

伪彩色图像,还原重做,退出,关于等项。

主界面部分包含两个图像显示,和部分按钮及需要输入的参数。由于界面大小有限,

部分功能留在菜单栏中。

二、处理步骤及部分源码

1、打开和保存文件

首先是文件菜单,包含打开和保存,打开的文件将显示在原始图像和处理图像两部分

中,在处理过程中,原始图像不变,以作为和处理图像对比,保存图片只保存处理后的图

片,处理前的图片不做保存。图片打开后如图所示,2、图像旋转

由图可见图像有部分区域无有效信息,不利于处理和获得有效信息,故应去除,首先

进行旋转,便于去除无效区域。在旋转角度编辑栏内输入要旋转的角度然后点旋转按钮,进行旋转。旋转后如图,

图像旋转源码为:

function imrotate_Callback(hObject, eventdata, handles)

h=getappdata(handles.figure_demo,'img_2');

x=get(handles.angle,'string');

an=str2num(x);

g=imrotate(h,an,'bilinear','crop');

img_2=g;

axes(handles.tag);

imshow(img_2);

setappdata(handles.figure_demo,'img_2',img_2);

3。、有效区域自动提取

现在图中有效区域基本是在一个矩形内,可以通过算法将有效区域边界的坐标求出来,单击自动识别有效区域按钮,求出后显示在图片右边的静态文本框内。如下图,

图像自动识别有效区域源码如下,

function auto_Callback(hObject, eventdata, handles)

h=getappdata(handles.figure_demo,'img_2');

[x,y]=size(h);

flag=1;

for i=1:x for j=1:y

if h(i,j)~=0&flag==1

x1=i;

flag=0;

end

if h(i,j)~=0

x2=i;

end

end

end

for j=1:y

for i=1:x

if h(i,j)~=0&flag==0

y1=j;

flag=1;

end

if h(i,j)~=0

y2=j;

end

end

end

set(handles.x_1,'String',num2str(x1));

set(handles.x_2,'String',num2str(x2));

set(handles.y_1,'String',num2str(y1));

set(handles.y_2,'String',num2str(y2));

y0=y2-y1;

x0=x2-x1;

rect=[y1,x1,y0,x0];

setappdata(handles.figure_demo,'rect',rect);

4、获取有效区域

获得有效区域坐标后,就可以通过简单的命令获得遥感图像的有效区域了,单击菜单

栏的“获取有效区域”按钮,就可获得。获得有效区域后如图,其源码为

function imcrop_Callback(hObject, eventdata, handles)

h=getappdata(handles.figure_demo,'img_2');

rect1=getappdata(handles.figure_demo,'rect');

img_2=imcrop(h,rect1);

axes(handles.tag);

imshow(img_2);

setappdata(handles.figure_demo,'img_2',img_2);

5、小波压缩

为了便于后续的处理和观察,进行小波变换压缩图像,在程序中设置了下拉菜单,用

户可选择压缩级次,分别为1、2、3级,默认为1级,选择好后单击“小波变换压缩按钮”,

对图像进行压缩,压缩后如下图,此时图像变为原来图像大小的1/4。

图像压缩源码为

function wavelet_Callback(hObject, eventdata, handles)

h=getappdata(handles.figure_demo,'img_2');

x=getappdata(handles.figure_demo,'x');

h=double(h);

[c,s]=wavedec2(h,2,'bior3.7');

ca1=appcoef2(c,s,'bior3.7',x);%低频x为压缩级次ca1=wcodemat(ca1,255,'mat',0);%编码img_2=mat2gray(ca1);

imshow(img_2);

setappdata(handles.figure_demo,'img_2',img_2);

6、图像增强

图像压缩后,进行图像增强将大大提高处理速度和效率。在界面上设置了“直方图均

值化”按钮,在“图像增强”中添加了“中值滤波”按钮,这些都是常见的图像增强算法,

对于其他增强算法太多,这里不做考虑。处理后如图所示,

中值滤波及直方图均值化源码如下

function medfilt_Callback(hObject, eventdata, handles)

h=getappdata(handles.figure_demo,'img_2');

g=medfilt2(h);%中值滤波

img_2=g;

%%%%%%%%%%%%%%%%%%%%%%%%%

function histeq_Callback(hObject, eventdata, handles)

h=getappdata(handles.figure_demo,'img_2');

g=histeq(h);%直方图均值化

img_2=g;

7、伪彩色图像

由于图像是灰度图,观察中可能带来不直观,可以选择适当的伪彩色进行渲染图片,

单击“伪彩色”按钮,获得图像如图。源码略。

8、其他功能及说明。

菜单栏中另外提供了,“还原重做”菜单,“退出”菜单,及“关于”菜单。还原重做提供了将处理后图片还原为处理前图像功能,当操作失误或不当时可选择此

菜单重新处理,退出按钮提供退出功能并释放程序所占的内存空间。关于菜单提供关于和帮助功能,关于提供作者信息。

另外值得说明的是,程序在任何时候都可以保存处理后的图像,建议每处理一步保存

一次图像,以防处理过程失误,造成不必要的时间浪费,当出错时直接提取保存的图像,

就可以继续处理!三、处理前后图像对比。

图片来源:美国Landsat卫星官方 http://35.8.163.34/?version=Website。

处理图片文件名:p081r010_7k20020718_z04_nn61.tif

2010-07-05