辽宁工程技术大学
《数字图像处理》上机实习报告
教学单位 辽宁工程技术大学 专 业 摄影测量与遥感 实习名称 遥感数字图像处理 班 级 测绘研11-3班 学生姓名 路聚峰 学 号 471120212 指导教师 孙华生
实习1 读取BIP 、BIL、 BSQ文件
一、实验目的
用Matlab读取BIP 、BIL、 BSQ文件,并将结果显示出来。
遥感图像包括多个波段,有多种存储格式,但基本的通用格式有3种,即BSQ、BIL和BIP格式。通过这三种格式,遥感图像处理系统可以对不同传感器获取的图像数据进行转换。BSQ是像素按波段顺序依次排列的数据格式。BIL格式中,像素先以行为单位块,在每个块内,按照波段顺序排列像素。BIP格式中,以像素为核心,像素的各个波段数据保存在一起,打破了像素空间位置的连续性。
用Matlab 读取各个格式的遥感数据,是图像处理的前提条件,只有将图像读入Matlab工作空间,才能进行后续的图像处理工作。
二、算法描述
1.调用fopen函数用指定的方式打开文件。
2.在for循环中调用fread函数,用指定的格式读取各个像素。 3.用reshape函数,重置图像的行数列数。
4.用imadjust函数调整像素的范围,使其有一定对比度。 5.用imshow显示读取的图像。
三、Matlab源代码
1.读取BSQ的源代码: clear all clc lines=400; samples=640; N=6;
img=fopen('D:\\sample_BSQ','rb'); for i=1:N
bi=fread(img,lines*samples,'uint8'); band_cov=reshape(bi,samples,lines);
band_cov2=band_cov'; band_uint8=uint8(band_cov2); tif=imadjust(band_uint8); mkdir('D:\\MATLAB','tifbands1')
name=['D:\\MATLAB\\tifbands1\\tif',int2str(i),'.tif'];
imwrite(tif,name,'tif');
tilt=['波段',int2str(i)];
subplot(3,2,i),imshow(tif);title(tilt); end
fclose(img);
2.读取BIP源代码
clear all
clc lines=400; samples=640; N=6; for i=1:N
img=fopen('D:\\MATLAB\\sample_BIP','rb'); b0=fread(img,i-1,'uint8');
b=fread(img,lines*samples,'uint8',(N-1));
band_cov=reshape(b,samples,lines); band_cov2=band_cov';%×a?? band_uint8=uint8(band_cov2); tif=imadjust(band_uint8); mkdir('E:\\MATLAB','tifbands')
name=['E:\\MATLAB\\tifbands\\tif',int2str(i),'.tif']; imwrite(tif,name,'tif'); %imwrite(A,filename,fmt) tilt=['波段',int2str(i)];
subplot(3,2,i),imshow(tif);title(tilt); fclose(img); end
3.读取BIL的源代码
clear all clc lines=400; samples=640; N=6; for i=1:N
bi=zeros(lines,samples); for j=1:samples
img=fopen('D:\\MATLAB\\sample_BIL','rb');
bb=fread(img,(i-1)*640,'uint8');
b0=fread(img,1*(j-1),'uint8');
bandi_linej=fread(img,lines,'uint8',1*(N*samples-1)); fclose(img);
bi(:,j)=bandi_linej; end
band_uint8=uint8(bi); tif=imadjust(band_uint8); mkdir('D:\\MATLAB','tifbands')
name=['D:\\MATLAB\\tifbands\\tif',int2str(i),'.tif']; imwrite(tif,name,'tif'); tilt=['2¨??',int2str(i)];
subplot(3,2,i),imshow(tif);title(tilt); end
四、运行结果
图1:读取文件的六个波段图
实习2 均值/中值滤波、边缘信息提取
一、实验目的与原理
各种图像滤波算子可以实现图像的增强,去噪,边缘提取等。图像增强的目的在于:1.采用一系列技术改善图像的视觉效果,提高图像的清晰度,2.将图像转换成一种更适合于人或机器进行分析处理的形式。它不是以图像保真度为原则,而是通过处理,设法有选择地突出便于人或机器分析某些感兴趣的信息,抑制一些无用的信息,以提高图像的使用价值。图像增强方法从增强的作用域出发,可分为空间域增强和频率域增强。空间域增强就是直接对图像像素灰度进行操作;频率域增强是对图像经傅里叶变换后的频谱成分进行操作,然后经傅里叶逆变换获得所需结果。
图像滤波可分为空间域滤波和频率域滤波,前者通过窗口或卷积核进行,它参照相邻像素改变单个像素的灰度值。后者对图像进行傅立叶变换,然后对频谱进行滤波。空间域图像滤波称为平滑和锐化,强调像素与其周围相邻像素的关系。去噪滤波为平滑滤波包括均值滤波和中值滤波。锐化滤波包括罗伯特梯度、索伯尔梯度、拉普拉斯算法、定向检测,用以提取线状地物和边缘。此实验用Matlab采用各种滤波对图像进行了处理,处理结果如下: 二、算法描述
1.用imread读取图像文件,并用size获取图像的大小。 2.设计各种滤波算子。
3利用卷积公式对图像的没一个像素进行处理,得到滤波后的图像。 4.用imshow显示滤波后的图像。 三、Matlab源代码 1.均值滤波源码: clear all clc
img=imread('2.jpg');
[row,column,band]=size(img); img0=double(img);
f11=1/9; f12=1/9; f13=1/9; f21=1/9; f22=1/9; f23=1/9; f31=1/9; f32=1/9; f33=1/9;
img1=[img0(:,1,:), img0(:,:,:), img0(:,column,:)]; img2=[img1(1,:,:); img1(:,:,:); img1(row,:,:)]; filtered=zeros(row,column,band); for ii=1: row for jj=1: column
filtered(ii,jj,:)=f11*img2(ii,jj,:) + f12*img2(ii,jj+1,:) + f13*img2(ii,jj+2,:)+ ...
f21*img2(ii+1,jj,:) + f22*img2(ii+1,jj+1,:) + f23*img2(ii+1,jj+2,:) + ...
f31*img2(ii+2,jj,:) + f32*img2(ii+2,jj+1,:) + f33*img2(ii+2,jj+2,:); end end
filtered1=uint8(filtered);
subplot(1,2,1),imshow(img);title('图1 原始RGB图像');
subplot(1,2,2),imshow(filtered1);title('图2 均值滤波后的图像'); imwrite(filtered1,'flower_filtered_mean.jpg'); 2.边缘提取滤波源代码 clear all
img=imread('2.jpg'); [row,column,band]=size(img); img0=double(img); f11=1; f12=0; f13=-1; f21=1; f22=0; f23=-1; f31=1; f32=0; f33=-1;
img1=[img0(:,1,:), img0(:,:,:), img0(:,column,:)]; img2=[img1(1,:,:); img1(:,:,:); img1(row,:,:)]; filtered=zeros(row,column,band); for ii=1: row for jj=1: column
filtered(ii,jj,:)=f11*img2(ii,jj,:) + f12*img2(ii,jj+1,:) + f13*img2(ii,jj+2,:)+ ...
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库遥感数字图像处理实习报告含Matlab处理代码在线全文阅读。
相关推荐: