riopoly matlab,怎样用matlab读取envi中rio的图?

functiondata=read_ENVIimagefile(imgfilename)%本函数读取img格式,前提是img图像显式带有'。img'后缀名。iflength(imgfilename)>=4switchstrcmp(imgfilename(length(imgfilename)-3:end),'。  img')case0hdrfilename=strcat(imgfilename,'。hdr');case1hdrfilename=strcat(imgfilename(1:(length(imgfilename)-4)),'。  hdr');endelsehdrfilename=strcat(imgfilename,'。  hdr');end%读取ENVI标准格式图像文件%读取图像头文件fid=fopen(hdrfilename,'r');info=fread(fid,'char=>char');info=info';%默认读入列向量,须要转置为行向量才适于显示fclose(fid);%查找列数a=strfind(info,'samples=');b=length('samples=');c=strfind(info,'lines');samples=[];fori=a+b:c-1samples=[samples,info(i)];endsamples=str2num(samples);%查找行数a=strfind(info,'lines=');b=length('lines=');c=strfind(info,'bands');lines=[];fori=a+b:c-1lines=[lines,info(i)];endlines=str2num(lines);%查找波段数a=strfind(info,'bands=');b=length('bands=');c=strfind(info,'headeroffset');bands=[];fori=a+b:c-1bands=[bands,info(i)];endbands=str2num(bands);%查找数据类型a=strfind(info,'datatype=');b=length('datatype=');c=strfind(info,'interleave');datatype=[];fori=a+b:c-1datatype=[datatype,info(i)];enddatatype=str2num(datatype);precision=[];switchdatatypecase1precision='uint8=>uint8';%头文件中datatype=1对应ENVI中数据类型为Byte,对应MATLAB中数据类型为uint8case2precision='int16=>int16';%头文件中datatype=2对应ENVI中数据类型为Integer,对应MATLAB中数据类型为int16case12precision='uint16=>uint16';%头文件中datatype=12对应ENVI中数据类型为UnsighedInt,对应MATLAB中数据类型为uint16case3precision='int32=>int32';%头文件中datatype=3对应ENVI中数据类型为LongInteger,对应MATLAB中数据类型为int32case13precision='uint32=>uint32';%头文件中datatype=13对应ENVI中数据类型为UnsighedLong,对应MATLAB中数据类型为uint32case4precision='float32=>float32';%头文件中datatype=4对应ENVI中数据类型为FloatingPoint,对应MATLAB中数据类型为float32case5precision='double=>double';%头文件中datatype=5对应ENVI中数据类型为DoublePrecision,对应MATLAB中数据类型为doubleotherwiseerror('invaliddatatype');%除以上几种常见数据类型之外的数据类型视为无效的数据类型end%查找数据格式a=strfind(info,'interleave=');b=length('interleave=');c=strfind(info,'sensortype');interleave=[];fori=a+b:c-1interleave=[interleave,info(i)];endinterleave=strtrim(interleave);%删除字符串中的空格%读取图像文件fid=fopen(imgfilename,'r');data=multibandread(imgfilename,[lines,samples,bands],precision,0,interleave,'ieee-le');data=double(data);end。

阅读全文 >

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值