%ENVI格式数据由一个*.hdr的头文件和一个数据文件组成,我还没有在matlab中发现读取ENVI格式数据。借助于GOOGLE的帮助,我搜索到了一个由V. Guissard在 Apr 29 2004写%%成的freadenvi文件,调用格式如:[image,p,t] = freadenvi(fname)
%但是用了这个函数之后,偶发现这个函数只能读取BSQ格式的数据,而且读出的数据是光谱维度不变,但是空间维进行了转置。因此,我对其进行了部分修改,使之能读取BSQ、%BIL、BIP三种格式,读取来的数据是m*n*p三维数组,m表示行;n表示列;p表示波段数。
%以下是经过修改后的freadenvi函数:
function [image,p,t,b] = freadenvi(fname)
% freadenvi - read envi image (V. Guissard, Apr 29 2004)
%
% Reads an image of ENVI standard type
% to a [col x line x band] MATLAB array
% image=freadenvi(fname)
% [image,p]=freadenvi(fname)
% [image,p,t]=freadenvi(fname)
% [image,p,t,b] = freadenvi(fname)
%
% INPUT :
%
% fname string giving the full pathname of the ENVI image to read.
%
% OUTPUT :
%
% image----------- c by l by b array containing the ENVI image values organised in
% c : cols, l : lines and b : bands.
% p 1 by 3 vector that contains (1) the nb of cols, (2) the number.
% of lines and (3) the number of bands of the opened image.
%
% t string describing the image data type string in MATLAB conventions.
% b string describing the image data interleave:bsq,bil or bip
%
% NOTE : freadenvi needs the corresponding image header file generated
% automatically by ENVI. The ENVI header file must have the same name
% as the ENVI image file + the '.hdf' exention.