资讯详情

数字图像处理:实验七 遥感图像读取

实验七 读取遥感图像

一、实验目的

  1. 熟悉MATLAB读写中遥感图像的格式;
  2. 掌握多波段遥感图像的读取和存储;
  3. 掌握多波段遥感图像中单波段、不同波段的组合显示。

二、实验仪器及设备

计算机、Matlab图像处理软件,Landsat8遥感图像

三、实验基础

1.实验遥感图像简介

2013年2月11日Landsat8.卫星发射成功,设计寿命为5年,携带陆地成像仪和热红外传感器两种主要设备。陆地成像仪有11个波段,其中可见光、近红外、短波红外波段空间分辨率30米,热红外波段空间分辨率100米,全色波段分辨率15米,成像宽度185米。kmx185km。包括陆地成像仪ETEM 传感器的所有波段,但为了避免大气吸收特性,重新调整了波段,较大的调整是band5,排除了0.825um处理水蒸气吸收特性,全波段band8范围狭窄,可以更好地区分植被和无植被特征的全色图像。此外,还增强了两个波段的蓝色波段,主要用于海岸带观测短波红外波段。可用于云检测、近红外和短波红外波段及modest接近相应的波段。

2.相关函数 MATLAB多波段图像读写中使用的函数包括multibandread和multibandwtite。

四、实验内容及步骤

  1. 读取遥感图像头文件
clc;clear; hdrname='D:\Remote_sensing\ENVI实验数据\ENVI_shiyuan_dt\shiyan\LC81230322013276LGN00_MTL_shiyan.hdr';  fid=fopen(hdrname,'r');  info=fread(fid,'char=>char');  info=info';%转为行向量  fprintf(info);%界面输出打印显示  fclose(fid); >> rs_hdr ENVI description = { 
          Calibrated Radiance from LC81230322013276LGN00_MTL_MultiSpectral} samples = 7771 lines   = 7901 bands   = 7 data type = 4 interleave = bil file type = ENVI Standard header offset = 0 byte order = 0 map info = { 
        UTM, 1.000, 1.000, 358485.000, 4582815.000, 3.000000e 001, 3.000000e 001, 50, North, WGS-84, units=Meters} coordinate system string = { 
        PROJCS["WGS_1984_UTM_Zone_50N",GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",117.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]}
default bands = { 
        4,3,2}
band names = { 
        
 Coastal aerosol, Blue, Green, Red, Near Infrared (NIR), SWIR 1, SWIR 2}
wavelength = { 
        
 0.443000, 0.482600, 0.561300, 0.654600, 0.864600, 1.609000, 2.201000}
fwhm = { 
        
 0.016000, 0.060100, 0.057400, 0.037500, 0.028200, 0.084700, 0.186700}
wavelength units = Micrometers
data ignore value = 0.00000000e+000
sun azimuth = 156.793278

sun elevation = 43.279056
cloud cover = 6.400000
earth sun distance = 1.000646
sensor type = Landsat OLI
acquisition time = 2013-10-03T02:55:24.3050919Z
calibration scale factor = 0.100000
data units = W m^-2 sr^-1 um^-1
image quality = 9
  1. 遥感图像基本信息读取
%读取列数、行数、波段数、数据类型
 %列数
 ac=strfind(info,'samples = ');
 bc=length('samples = ');
 cc=strfind(info,'lines ');
 samples=[];
 for i=ac+bc:cc-1
     samples=[samples,info(i)];
 end
 samples=str2num(samples);
 %行数
 ar=strfind(info,'lines = ');
 br=length('lines = ');
 cr=strfind(info,'bands ');
 lines=[];
 for i=ar+br:cr-1
     lines=[lines,info(i)];
 end
 lines=str2num(lines);
 %波段数
 ab=strfind(info,'bands = ');
 bb=length('bands = ');
 cb=strfind(info,'data type ');
bands=[];
 for i=ab+bb:cb-1
     bands=[bands,info(i)];
 end
 bands=str2num(bands);
 %数据类型
 ab=strfind(info,'data type = ');
 bb=length('data type = ');
 cb=strfind(info,'interleave');
 datatype=[];
  for i=ab+bb:cb-1
     datatype=[datatype,info(i)];
 end
 datatype=str2num(datatype);
 precision=[];
 switch datatype
     case 1
          precision='unit8=>unit8';
     case 2
          precision='int16=>int16';
     case 12
          precision='unit16=>unit16';
     case 3
          precision='int32=>int32';
      case 13
          precision='unit32=>unit32';  
      case 4
          precision='float32=>float32';  
     case 5
          precision='double=>double'; 
 end
%数据格式
 at=strfind(info,'interleave = ');
 bt=length('interleave = ');
 ct=strfind(info,'sensor type ');
interleave=[];
 for i=at+bt:ct-1
     interleave=[interleave,info(i)];
 end
interleave=strtrim(interleave);
fprintf('Lines=%i\nSamples=%i\nDataType=%s\n',lines,samples,interleave);
运行结果:
Lines=589
Samples=766
DataType=bsq
  1. 遥感图像数据读取与显示 遥感图像大多数具有多波段,MATLAB中用于多波段图像读写的函数包括multibandread和multibandwtite。
%读取图像数据
imgfilename='F:\数字图像处理\Landsat8_image.dat';
fid=fopen(imgfilename,'r');
data=multibandread(imgfilename,[lines,samples,7],precision,0,'bsq','ieee-le');
data=double(data);
%数值转换为0-255的整型用于显示
data_unit8=data;
for k=1:bands
    min_val=min(data(:,:,k));
    max_val=max(data(:,:,k));
    for i=1:lines
        for j=1:samples
            data_unit8(i,j,k)=uint8((data_unit8(i,j,k)-min_val)/(max_val-min_val)*255); end end end %单波段遥感图像显示 %数值转为0-255的整型用于显示 data_show=data; for k=1:bands min_val=min(data(:,:,k));
    max_val=max(data(:,:,k));
    for i=1:lines
        for j=1:samples
            data_show(i,j,k)=uint8((data_show(i,j,k)-min_val)/(max_val-min_val)*255);
        end
    end
end
 %单波段遥感图像显示
 im1=data_show(:,:,1);
 im2=data_show(:,:,2);
 im3=data_show(:,:,3);
 im4=data_show(:,:,4);
 im5=data_show(:,:,5);
 im6=data_show(:,:,6);
 im7=data_show(:,:,7);
 im1=uint8(im1);
 im2=uint8(im2);
 im3=uint8(im3);
 im4=uint8(im4);
 im5=uint8(im5);
 im6=uint8(im6);
 im7=uint8(im7);
 figure;imshow(im1);
 figure;imshow(im2);
 figure;imshow(im3);
 figure;imshow(im4);
 figure;imshow(im5);
 figure;imshow(im6);
 figure;imshow(im7);
%真彩色显示
 im3=data_show(:,:,1:3);
 im3=uint8(im3);
 figure;imshow(im3);
 %假彩色显示
 im3=data_show(:,:,4:6);
 im3=uint8(im3);
 figure;imshow(im3);

在这里插入图片描述

图一 遥感图像各波段显示 4. 遥感图像存储

%按照BIL存储类型存储所有波段
 multibandwrite(data,'data.bil','bil');
 %以存储32bit单波段为例
 numbands=1;
 for band=1:numbands
    multibandwrite(data(:,:,band),'banddata.bsq','bsq','machfmt','ieee-le','precision',interleave);
 end

五、实验心得

1.学会了使用multibandread和multibandwtite函数处理遥感影像。 2. 对遥感影像的头文件里的内容有了更加深入的了解。

标签: bsq015a振动变送器bsq015振动变送器bsq073lvdt位移变送器bsq011a振动变送器振动变送器bsq015b

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台