辽宁工程技术大学
《数字图像处理》上机实习报告
教学单位辽宁工程技术大学
专业摄影测量与遥感
实习名称遥感数字图像处理
班级测绘研11-3班
学生姓名路聚峰
学号*********
指导教师孙华生
实习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';%תÖÃ
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=['²¨¶Î',int2str(i)];
subplot(3,2,i),imshow(tif);title(tilt);
end。