我有一个关于如何读取LAN格式图像(多波段图像)的问题。我已经阅读了帮助信息,但我不知道我是否做得很好。
修改
首先,我打开并阅读图像的标题(我没有任何麻烦)。
file_name = 'rio.lan';
fid = fopen(file_name,'r');
header_str = fread(fid,6,'uint8=>char')';
fprintf('Header String: %s\n',header_str);
然后,我认为我必须创建LanAdapter。 ¿我可以写这个给Matlab吗? (“我收到以下错误:”??? classdef LanAdapter< ImageAdapter | 错误:非法使用保留关键字 “classdef”“
(我正在写'函数文件',而不是写在“M脚本”中)。
classdef LanAdapter < ImageAdapter
properties(GetAccess = public, SetAccess = private)
Filename
NumBands
end
properties(Access = public)
SelectedBands
end
以下部分如下,但它没有创建Lan适配器......我是否需要更改一些参数?
methods
function obj = LanAdapter(fname)
obj.Filename = fname;
fid = fopen(fname,'r');
% Verify that the file begins with the string 'HEADER' or
% 'HEAD74', as per the Erdas LAN file specification.
header_str = fread(fid,6,'uint8=>char');
if ~(strcmp(header_str','HEADER') || strcmp(header_str',...
'HEAD74'))
error('Invalid LAN file header.');
end
% Read the data type from the header.
pack_type = fread(fid,1,'uint16',0,'ieee-le');
if ~isequal(pack_type,0)
error('Unsupported pack type. The LanAdapter example only...
supports reading uint8 data.');
end
% Provide band information.
obj.NumBands = fread(fid,1,'uint16',0,'ieee-le');
% By default, return all bands of data
obj.SelectedBands = 1:obj.NumBands;
% Specify image width and height.
unused_field = fread(fid,6,'uint8',0,'ieee-le'); %#ok<NASGU>
width = fread(fid,1,'uint32',0,'ieee-le');
height = fread(fid,1,'uint32',0,'ieee-le');
obj.ImageSize = [height width];
% Close the file handle
fclose(fid);
end % LanAdapter
问题是我不知道如何更改它并执行它(是的,我是新手......)。
提前致谢,我非常感谢您的建议!
问候!