资源简介
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
相关资源
- 仿真了两径瑞利衰落信道模型和多径
- 快速随机搜索树RRT算法
-
MATLAB模糊控制及simuli
nk仿真 - psot工具箱及使用说明.zip
- 基于matlab的最小生成树prim算法
- matlab拟合程序
- GPS捕获跟踪定时同步的matlab代码
- 龙贝格算法MATLAB程序
- Matlab2017a许可证
- 基于聚类的路标检测K-meansMATLAB(RGB)
- dijkstra算法的MATLAB实现258163
- matlab程序.rar
- H-a-A-Wishart分类.zip
- Bayesian_estimate .m
- MATLAB GUI语音信号特征提取
- 遗传算法函数优化matlab代码
- WSN仿真-MATLAB基于COMPOW协议下的网络连
- 维纳滤波Matlab实现
- 动物图像多分类识别MATLAB可运行
- 龙格库塔原理详解及解微分方程组的
- 基于MATLAB的简单计算器
- 偏微分方程数值解迎风格式代码
-
直流降压斩波电路-simuli
nk仿真.rar - 神经网络Matlab实现代码[比赛已经用过
- matlab时钟万年历
- FIR滤波器内含完整的MATLAB代码
- 后方交会MATLAB程序
- matlab心电滤波处理hanning滤波、多项式
- 基于matlab的数字变声器和滤波器
- gmd分解,即几何均值分解
评论
共有 条评论