1、基于 matlab 的遥感图像处理程序报告南京理工大学电光学院,无履仙人一、程序简介基于 matlab 的 GUI 可视化遥感图像处理程序,界面布局如下图:菜单栏包括:文件,图像旋转,自动识别有效区域,获取有效区域,压缩,图像增强,伪彩色图像,还原重做,退出,关于等项。主界面部分包含两个图像显示,和部分按钮及需要输入的参数。由于界面大小有限,部分功能留在菜单栏中。二、处理步骤及部分源码1、打开和保存文件首先是文件菜单,包含打开和保存,打开的文件将显示在原始图像和处理图像两部分中,在处理过程中,原始图像不变,以作为和处理图像对比,保存图片只保存处理后的图片,处理前的图片不做保存。图片打开后如图所
2、示,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);ims
3、how(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:xfor j=1:yif h(i,j)=0flag=0
4、;endif h(i,j)=0x2=i;endendendfor j=1:yfor i=1:xif h(i,j)=0flag=1;endif h(i,j)=0y2=j;endendendset(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,r
5、ect,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.figu
6、re_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=wav
7、edec2(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
8、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、其
9、他功能及说明。菜单栏中另外提供了, “还原重做”菜单, “退出”菜单,及“关于”菜单。还原重做提供了将处理后图片还原为处理前图像功能,当操作失误或不当时可选择此菜单重新处理,退出按钮提供退出功能并释放程序所占的内存空间。关于菜单提供关于和帮助功能,关于提供作者信息。另外值得说明的是,程序在任何时候都可以保存处理后的图像,建议每处理一步保存一次图像,以防处理过程失误,造成不必要的时间浪费,当出错时直接提取保存的图像,就可以继续处理!三、处理前后图像对比。图片来源:美国 Landsat 卫星官方 http:/35.8.163.34/?version=Website。处理图片文件名:p081r010_7k20020718_z04_nn61.tif2010-07-05