⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 writeanalyzeimg.m

📁 医学图像处理matlab工具箱
💻 M
字号:
function [result]=writeanalyzeimg(name,img,dim,siz,pre,lim,scale,offset,origin,descr)%  Writes analyze image and header file %%    [result]=WriteAnalyzeImg(name,img,dim,siz,pre,lim,scale,offset)%    [result]=WriteAnalyzeImg(name,img,dim,siz,pre,lim,scale,offset,origin)%    [result]=WriteAnalyzeImg(name,img,dim,siz,pre,lim,scale,offset,origin,descr)%    [result]=WriteAnalyzeImg(name,img,dim,siz,pre,lim,'a') (automatic scaling/offset)%    [result]=WriteAnalyzeImg(hdr,img)%%  name      - name of image file%  img       - image data (pix_val)%  dim       - x,y,z,[t] no of pixels in each direction%  siz       - voxel size in mm%  pre       - precision for pictures (8 or 16)%  lim       - max and min limits for pixel values (ex: [255 0] for 8 bit)%  scale     - scale is scaling of pixel values%  offset    - offset is offset in pixel values%  origin    - origin for AC-PC plane%  descr     - description field in header file%%  hdr       - header structure (as defined for writeanalyzehdr) plus%               path - filed with path for file%%  abs_pix_val = (pix_val - offset) * scale%%  CS, 010294%%  Revised%  CS, 181194  Possibility of offset and scale in header file%  CS, 300398  Origin included%  CS, 280100  Reading changed so routines works on both HP and Linux%              systems%  CS, 150200  Extended with description field%  CS, 060700  writing routine extended to handle structure header%              information%  CS, 210901  Extended with extra field 'path' in structure hdr%if (nargin ~= 7) & (nargin ~= 8) & (nargin ~= 9) & (nargin ~= 10) ...      & (nargin ~= 2)    error('WriteAnalyze, incorrect number of input arguments');end;if (nargin == 2)  hdr=name;  %  if (~isfield(hdr,'fileformat'))    fileformat = 'ieee-be';  else    fileformat = hdr.fileformat;   end;  if (~isfield(hdr,'name'))    error('hdr.name does not exist');  end;  name=hdr.name;  if (~isfield(hdr,'dim'))    error('hdr.dim does not exist');  end;  dim=hdr.dim;  if (~isfield(hdr,'siz'))    error('hdr.siz does not exist');  end;  siz=hdr.siz;  if (~isfield(hdr,'pre'))    error('hdr.pre does not exist');  end;  pre=hdr.pre;  if (~isfield(hdr,'lim'))    error('hdr.lim does not exist');  end;  lim=hdr.lim;  if (~isfield(hdr,'scale'))    error('hdr.scale does not exist');  end;  scale=hdr.scale;  if (~isfield(hdr,'offset'))    error('hdr.offset does not exist');  end;  offset=hdr.offset;  if (~isfield(hdr,'origin'))    origin=[0 0 0];  else      origin=hdr.origin;  end;  if (~isfield(hdr,'descr'))    descr='Header generated using WriteAnalyzeHdr';  else      descr=hdr.descr;  end;  if (~isfield(hdr,'path')) | ...    ~isempty(findstr(hdr.name,'/')) | ...     ~isempty(findstr(hdr.name,'\'))     path='';  else      path=hdr.path;    if ~isempty(path)      cname = computer;      if strcmp(cname(1:2),'PC')        if (path(length(path)) ~= '\')          path(length(path)+1) ='\';        end      else          if (path(length(path)) ~= '/')          path(length(path)+1) ='/';        end      end    end    end;else  path='';end%if (length(dim) == 3)  dim(4)=1;end;auto = 0;  % Ikke automatisk skaleringif (nargin == 7)   if (scale == 'a')      auto = 1;      if (pre == 8)         scale = (max(max(img)) - min(min(img))) / 256;         img = img / scale;         offset = - min(min(img));         img = img + offset;         offset = offset - 0.5;         index = find(img == 256);         for i=1:length(index)            img(index(i)) = 255;         end;      else         if (lim(2) < 0)            offset = 0;            scale1 = max(max(img)) / 32767;            scale2 = min(min(img)) / (-32768);            scale = max([scale1 scale2]);            img = img / scale;         else               scale = (max(max(img)) - min(min(img))) / 65536;            img = img / scale;            offset = - min(min(img));            img = img + offset;            offset = offset - 0.5;            index = find(img == 65536);            for i=1:length(index)               img(index(i)) = 65535;            end;         end;      end;    else   error('Not automatic scaling, but only 7 parameters');   end;end;result=1;%pos=findstr(name,'.img');if (~isempty(pos))  name=name(1:(pos(1)-1));  hdr.name=name;end;  pos=findstr(name,'.hdr');if (~isempty(pos))  name=name(1:(pos(1)-1));  hdr.name=name;end;%FileName=sprintf('%s%s.img',path,name);pid=fopen(FileName,'wb',fileformat);if (pid ~= -1),   if (pre == 8),     fwrite(pid,img,'uint8');   elseif (pre == 16),     if (lim(2) < 0)       f=fwrite(pid,img,'int16');     else       f=fwrite(pid,img,'uint16');     end   elseif (pre == 32)       f=fwrite(pid,img,'float32');   elseif (pre == 64)       f=fwrite(pid,img,'float64');   else     error('Illegal precision');   end;     %       if (nargin == 6),     scale=0;     offset=0;     origin=[0 0 0];   elseif (nargin == 7) & (auto == 0),     offset=0;     origin=[0 0 0];   elseif (nargin == 8) & (auto == 0),     origin=[0 0 0];   else     % All parameters defined   end;   if (nargin == 2)      writeanalyzehdr(hdr);   elseif (nargin == 10)      writeanalyzehdr(name,dim,siz,pre,lim,scale,offset,origin,descr);   else      writeanalyzehdr(name,dim,siz,pre,lim,scale,offset,origin);   endelse   result=0;   fprintf('WriteAnalyze, Not possible to open image file\n'); end;      fclose(pid);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -