资源简介
本程序是MATLAB语言写的,功能是能自动根据envi标准影像的.hdr文件进行读取并显示
代码片段和文件信息
%读&显ENVI图像
% 选择影像并判断是否是ENVI格式
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[filename_imgpathname_img]=uigetfile({‘*.dat‘;‘*.img‘}‘选择影像‘);
if isequal(filename_img0) % 判断是否选择了影像
msgbox(‘未选择影像!‘);
else
pathfile_img=fullfile(pathname_imgfilename_img); %获取影像文件的路径
end
a=strfind(pathfile_img‘.‘);
b=length(pathfile_img);
c=pathfile_img(a+1:b);
d=pathfile_img(1:a);
if isequal(c‘dat‘)||isequal(c‘img‘) % 判断是否是‘.dat’或‘.img’格式
%读取图像的头文件
if strcmp(c‘dat‘)
filename_hdr=[d ‘hdr‘];
else
filename_hdr=[d ‘hdr‘];
end
% 头文件相关参数的设置
par1={‘samples‘ 0};
par2={‘lines‘ 0};
par3={‘bands‘ 0};
par4={‘header offset‘ 0};
par5={‘interleave‘ ‘bsq‘};
par6={‘data type‘ 0};
par7={‘byte order‘ 0};
par={par1 par2 par3 par4 par5 par6 par7};
fid_hdr=fopen(filename_hdr‘r‘); % 打开头文件
tline=fgetl(fid_hdr);
while ~feof(fid_hdr) % 读取头文件参数信息
tline=fgetl(fid_hdr);
a=strfind(tline‘=‘);
b=length(tline);
c=strtrim(tline(1:a-1));
d=tline(a+2:b);
for i=1:7
if strcmp(cpar{i}{1})
par{i}{1}=c;
if i==5
par{i}{2}=d;
else
d=strtrim(d);
par{i}{2}=[str2num(d)];
end
end
end
end
fclose(fid_hdr);
switch par{6}{2}
case 1
precision=‘uint8=>uint8‘;%头文件中datatype=1对应ENVI中数据类型为Byte,对应MATLAB中数据类型为uint8
评论
共有 条评论