MATLAB读取高光谱数据

clear
close all
clc

hdr_path_name = 'G:\cs\DATA_lyx_1.hdr';
fid = fopen(hdr_path_name,'r');
info = fread(fid,'char=>char');
info = info';
fclose(fid);

start = strfind(info,'samples = ');
len = length('samples = ');
stop = strfind(info,'lines ');
samples = [];
for i = start+len : stop-1
    samples = [samples,info(i)];
end
samples = str2num(samples);

start = strfind(info,'lines   = ');
len = length('lines   = ');
stop = strfind(info,'bands');
lines = [];
for i = start+len : stop-1
    lines = [lines,info(i)];
end
lines = str2num(lines);

start = strfind(info,'bands   = ');
len = length('bands   = ');
stop = strfind(info,'header offset');
bands = [];
for i = start+len : stop-1
    bands = [bands, info(i)];
end
bands = str2num(bands);

start = strfind(info,'data type = ');
len = length('data type = ');
stop = strfind(info,'interleave');
datatype = [];
for i = start+len : stop-1
    datatype = [datatype, info(i)];
end
datatype = str2num(datatype);

precision = [];
switch datatype
    case 1
        precision = 'uint8 => uint8';
    case 2
        precision = 'int16 => int16';
    case 12
        precision = 'uint16 => uint16';
    case 3
        precision = 'int32 => int32';
    case 13
        precision = 'uint32 => uint32';
    case 4
        precision = 'float32 => float32';
    case 5
        precision = 'double => double';
    otherwise
        precision = 'invalid type';
end

start = strfind(info,'interleave = ');
len = length('interleave = ');
stop = strfind(info,'sensor type');
interleave = [];
for i = start+len : stop-1
    interleave = [interleave, info(i)];
end
interleave = strtrim(interleave);

data = multibandread('G:\cs\DATA_lyx_1.bsq',[lines,samples,bands],precision,0,interleave,'ieee-le',{'Row','Range',[1 256]},{'Column','Range',[1 256]});

需要注意的几个点(影响代码跑通的最关键几个因素):

hdr_path_name = 'G:\cs\DATA_lyx_1.hdr';

此处的hdr文件目录要换成自己所存储的高光谱图像目录

data = multibandread('G:\cs\DATA_lyx_1.bsq',[lines,samples,bands],precision,0,interleave,'ieee-le',{'Row','Range',[1 256]},{'Column','Range',[1 256]});

此处的图像路径也要改为自己的文件路径

关于{'Row','Range',[1 256]},{'Column','Range',[1 256]}中的256不是绝对的,这个是由图像的samples和lines来决定的,也可能是512,1024等。可以打开hdr文件查看

参考:【Matlab】读取".hdr"文件_matlab读取hdr文件_帅气的益达的博客-CSDN博客

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值