在Matlab中编写图像适配器类

时间:2013-02-06 13:25:05

标签: image matlab

我有一个关于如何读取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 

问题是我不知道如何更改它并执行它(是的,我是新手......)。

提前致谢,我非常感谢您的建议!

问候!

0 个答案:

没有答案