遥感数字图像处理实习报告含Matlab处理代码 联系客服

发布时间 : 星期一 文章遥感数字图像处理实习报告含Matlab处理代码更新完毕开始阅读24eff053aff8941ea76e58fafab069dc512247c2

辽宁工程技术大学

《数字图像处理》上机实习报告

教学单位 辽宁工程技术大学 专 业 摄影测量与遥感 实习名称 遥感数字图像处理 班 级 测绘研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