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

📄 loadavwobjectmap.m

📁 mri_toolbox是一个工具用来MRI. 来自于SourceForge, 我上传这个软件,希望能结识对医疗软件感兴趣的兄弟.
💻 M
字号:
function objectmap = LoadAVWObjectMap ( Filename )
% objectmap = LoadAVWObjectMap ( Filename )
% Load the objectmap given by Filename.  Returns a structure
% containing the map (as field Image), and a list of objects (as
% field Objects)
%
% NOTE: Matlab versions have an offset of 1, i.e. the 1-based
% indexing of Matlab applies to the objectmap.Image as well as the
% objectmap.Objects.  That is objectmap.Objects(1) is defined as
% all the voxels in objectmap.Image == 1

  % Filename = 'BWLabelsHippocampus.obj';

objectmap = struct ( 'Version', -1 );  
  
fid = fopen ( Filename, 'r', 'b');
if fid < 0,
  error ( ['Can not open ' Filename ' for reading'] );
end

objectmap.Version = fread ( fid, 1, 'int' );
if objectmap.Version ~= 910926
  error ( ['Unknown ObjectMap version: ' int2str(objectmap.Version) ' expected 910926'] );
end

objectmap.Width = fread ( fid, 1, 'int' );
objectmap.Height = fread ( fid, 1, 'int' );
objectmap.Depth = fread ( fid, 1, 'int' );
objectmap.NumberOfObjects = fread ( fid, 1, 'int' );

for o = 1:objectmap.NumberOfObjects
  Object = struct ( 'Name', 'Foo' );
  Object.Name = char(fread ( fid, 32, 'uchar' ));
  Object.Name = sscanf ( Object.Name, '%s' );
  Object.Display = fread ( fid, 1, 'int' );
  Object.Copy = fread ( fid, 1, 'uchar' );
  Object.Mirror = fread ( fid, 1, 'uchar' );
  Object.Status = fread ( fid, 1, 'uchar' );
  Object.NUsed = fread ( fid, 1, 'uchar' );
  Object.Shades = fread ( fid, 1, 'int' );
  Object.StartRed = fread ( fid, 1, 'int' );
  Object.StartGreen = fread ( fid, 1, 'int' );
  Object.StartBlue = fread ( fid, 1, 'int' );
  Object.EndRed = fread ( fid, 1, 'int' );
  Object.EndGreen = fread ( fid, 1, 'int' );
  Object.EndBlue = fread ( fid, 1, 'int' );
  Object.XRotation = fread ( fid, 1, 'int' );
  Object.YRotation = fread ( fid, 1, 'int' );
  Object.ZRotation = fread ( fid, 1, 'int' );
  Object.XShift = fread ( fid, 1, 'int' );
  Object.YShift = fread ( fid, 1, 'int' );
  Object.ZShift = fread ( fid, 1, 'int' );
  Object.XCenter = fread ( fid, 1, 'int' );
  Object.YCenter = fread ( fid, 1, 'int' );
  Object.ZCenter = fread ( fid, 1, 'int' );
  Object.XRotationIncrement = fread ( fid, 1, 'int' );
  Object.YRotationIncrement = fread ( fid, 1, 'int' );
  Object.ZRotationIncrement = fread ( fid, 1, 'int' );
  Object.XShiftIncrement = fread ( fid, 1, 'int' );
  Object.YShiftIncrement = fread ( fid, 1, 'int' );
  Object.ZShiftIncrement = fread ( fid, 1, 'int' );
  Object.XMinimum = fread ( fid, 1, 'short' );
  Object.YMinimum = fread ( fid, 1, 'short' );
  Object.ZMinimum = fread ( fid, 1, 'short' );
  Object.XMaximum = fread ( fid, 1, 'short' );
  Object.YMaximum = fread ( fid, 1, 'short' );
  Object.ZMaximum = fread ( fid, 1, 'short' );
  Object.Opacity = fread ( fid, 1, 'float' );
  Object.OpacityThickness = fread ( fid, 1, 'int' );
  Dummy = fread ( fid, 1, 'int' );
  objectmap.Objects(o) = Object;
end

% Read the rest of the file
Map = fread ( fid, inf, 'uchar' );
% objectmap.RLE = Map;
% Undo RLE
T = zeros ( objectmap.Width, objectmap.Height, objectmap.Depth );

ImageIndex = 1;
Counts = Map(1:2:end);
Values = Map(2:2:end);

for idx = 1:length(Counts)
  T(ImageIndex:ImageIndex+Counts(idx)-1) = Values(idx) + 1;
  ImageIndex = ImageIndex + Counts(idx);
end

objectmap.Image = zeros ( objectmap.Height, objectmap.Width, objectmap.Depth );
yy = objectmap.Height:-1:1;
for dd = 1:objectmap.Depth
  t = T(:,:,dd)';
  objectmap.Image(:,:,dd) = t(yy,:);
end

fclose ( fid );

⌨️ 快捷键说明

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