资源简介
matlab读取并显示envi标注格式img图像,支持显示单波段图像、多波段图像,用户可以根据需要选择不同波段组合显示,提供三种不同图像显示方法可供学习,另附详细注释说明

代码片段和文件信息
%freadenvi(‘06newmul01‘)
function data = freadenvi(imgfilename) %freadenvi(imgfilename)
%本函数读取img格式,前提是img图像显式带有‘.img‘后缀名
% if length(imgfilename)>=4 %freadenvi(‘06newmul01‘)
% switch strcmp(imgfilename(length(imgfilename)-3:end)‘img‘)
% case 0
% hdrfilename=strcat(imgfilename ‘.hdr‘);
% case 1
% hdrfilename = strcat(imgfilename(1:(length(imgfilename)-4)‘.hdr‘));
% end
% else
% hdrfilename=strcat(imgfilename ‘.hdr‘);
% end
hdrfilename = strcat(imgfilename ‘.hdr‘);
imgfilename = strcat(imgfilename‘.img‘);%‘.img‘ dat
%读取ENVI标准格式图像文件
%读取图像头文件
fid = fopen(hdrfilename ‘r‘);
info = fread(fid‘char=>char‘);%从二进制文件中读取数据 fread(fid1‘char=>char‘)
info = deblank(info);
info=info‘;%默认读入列向量,须要转置为行向量才适于显示
if fid == -1
error(‘Input header file does not exist‘);
end
%r to display
fclose(fid);
%查找列数
a=strfind(info‘samples = ‘);
b=length(‘samples = ‘);
c=strfind(info‘lines‘);
samples=[];
for i=a+b:c-1 %读取hdr文件中samples的数值,除去换行和空行,所以c-3,或者c-1
samples=[samplesinfo(i)];
end
%samples2 = strrep(samples ‘ ‘ ‘‘) %删除字符串中间的空格
samples=str2num( samples );
%查找行数
a=strfind(info‘lines = ‘);
b=length(‘lines = ‘);
c=strfind(info‘bands‘);
lines=[];
for i=a+b:c-1
lines=[linesinfo(i)];
end
lines = str2num(lines);
%查找波段数
a=strfind(info‘bands = ‘);
b=length(‘bands = ‘);
c=strfind(info‘header offset‘);%对于多波段
%c=strfind(info‘data type‘);%对于单多波段;
bands=[];
for i=a+b:c-1
bands=[bandsinfo(i)];
end
bands=str2num(bands);
%查找数据类型
a=strfind(info‘data type = ‘);
b=length(‘data type = ‘);
c=strfind(info‘interleave‘);
datatype=[];
for i=a+b:c-1
datatype=[datatypeinfo(i)];
end
datatype=str2num(datatype);
precision=[];
switch datatype
case 1
precision=‘uint8=>uint8‘; %头文件中datatype=1对应ENVI中数据类型为Byte,对应MATLAB中数据类型为uint8
case 2
precision=‘int16=>int16‘; %头文件中datatype=2对应ENVI中数据类型为Integer,对应MATLAB中数据类型为int16
case 12
precision=‘uint16=>uint16‘;%头文件中datatype=12对应ENVI中数据类型为Unsighed Int,对应MATLAB中数据类型为uint16
case 3
precision=‘int32=>int32‘;%头文件中datatype=3对应ENVI中数据类型为Long Integer,对应MATLAB中数据类型为int32
case 13
precision=‘uint32=>uint32‘;%头文件中datatype=13对应ENVI中数据类型为Unsighed Long,对应MATLAB中数据类型为uint32
case 4
precision=‘float32=>float32‘;%头文件中datatype=4对应ENVI中数据类型为Floating Point,对应MATLAB中数据类型为float32
case 5
precision=‘double=>double‘;%头文件中datatype=5对应ENVI中数据类型为Double Precision,对应MATLAB中数据类型为double
otherwise
error(‘invalid datatype‘);%pp=‘invalid datatype‘;%除以上几种常见数据类型之外的数据类型视为无效的数据类型
end
%查找数据格式
a=strfind(info‘interleave = ‘);
b=length(‘interleave = ‘);
%c=strfin
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 5759 2018-10-03 14:50 envi_matlab\freadenvi.m
文件 1944 2018-10-03 14:53 envi_matlab\imgshow.m
目录 0 2018-10-03 15:53 envi_matlab
----------- --------- ---------- ----- ----
7703 3
相关资源
- 串行级联cpm系统MATLAB仿真
- matlab_OFDM调制解调(来自剑桥大学)
- Matlab路面裂缝识别69319
- 高灵敏度GPS接收机MATLAB仿真,附捕获
- 基于MATLAB的质点弹道计算与外弹道优
- 阵列天线的matlab仿真
- MATLAB 经典程序源代码大全
- MATLAB小波软阈值去噪代码33473
- 天线阵的波束形成在MATLAB仿真程序及
- 非线性SVM算法-matlab实现
- 《MATLAB 智能算法超级学习手册》-程序
- 组合导航matlab程序
- 读取txt文件内容matlab代码实现
- Matlab实现基于相关的模板匹配程序
- matlab优化工具箱讲解
- 基于MATLAB的快速傅里叶变换
- 光纤传输中的分布傅立叶算法matlab实
- 基于matlab的图像处理源程序
- matlab 椭圆拟合程序
- 算术编码解码matlab源代码
- optical_flow 光流法 matlab 实现程序
- 引导图像滤波器 Matlab实现
- 分形几何中一些经典图形的Matlab画法
- OFDM系统MATLAB仿真代码
- SVM工具箱(matlab中运行)
- 图像小波变换MatLab源代码
- LU分解的MATLAB实现
- 冈萨雷斯数字图像处理matlab版(第三
- 替代数据法的matlab程序
- 用matlab实现的多站定位系统性能仿真
评论
共有 条评论