123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- function o = nifti1struc
- % Create a data structure describing NIFTI-1 headers
- %__________________________________________________________________________
- % Copyright (C) 2005-2017 Wellcome Trust Centre for Neuroimaging
- %
- % $Id: nifti1struc.m 7147 2017-08-03 14:07:01Z spm $
- persistent org;
- if ~isempty(org)
- o = org;
- return;
- end
- t = struct('conv',{ @char , @uint8 , @int16 , @int32 , @single },...
- 'prec',{'uint8', 'uint8', 'int16', 'int32', 'single'},...
- 'size',{ 1, 1, 2, 4, 4 });
- c = t(1);
- b = t(2);
- s = t(3);
- i = t(4);
- f = t(5);
- table = {...
- i, 1, 'sizeof_hdr', 348
- c, 10, 'data_type', ''
- c, 18, 'db_name', ''
- i, 1, 'extents', []
- s, 1, 'session_error', []
- c, 1, 'regular', 'r'
- b, 1, 'dim_info', []
- s, 8, 'dim', [3 0 0 0 1 1 1 1]
- f, 1, 'intent_p1', 0
- f, 1, 'intent_p2', 0
- f, 1, 'intent_p3', 0
- s, 1, 'intent_code', 0
- s, 1, 'datatype', 2
- s, 1, 'bitpix', 8
- s, 1, 'slice_start', []
- f, 8, 'pixdim', [0 1 1 1]
- f, 1, 'vox_offset', 0
- f, 1, 'scl_slope', 1
- f, 1, 'scl_inter', 0
- s, 1, 'slice_end', []
- b, 1, 'slice_code', []
- b, 1, 'xyzt_units', 10
- f, 1, 'cal_max', []
- f, 1, 'cal_min', []
- f, 1, 'slice_duration', []
- f, 1, 'toffset', []
- i, 1, 'glmax', []
- i, 1, 'glmin', []
- c, 80, 'descrip', 'NIFTI-1 Image'
- c, 24, 'aux_file', ''
- s, 1, 'qform_code', 0
- s, 1, 'sform_code', 0
- f, 1, 'quatern_b', 0
- f, 1, 'quatern_c', 0
- f, 1, 'quatern_d', 0
- f, 1, 'qoffset_x', 0
- f, 1, 'qoffset_y', 0
- f, 1, 'qoffset_z', 0
- f, 4, 'srow_x', [1 0 0 0]
- f, 4, 'srow_y', [0 1 0 0]
- f, 4, 'srow_z', [0 0 1 0]
- c, 16, 'intent_name', ''
- c, 4, 'magic', 'ni1'};
- org = struct('label',table(:,3),'dtype',table(:,1),'len',table(:,2),...
- 'offset',0,'def',table(:,4));
- os = 0;
- for j=1:length(org)
- os = org(j).dtype.size*ceil(os/org(j).dtype.size);
- fun = org(j).dtype.conv;
- if ischar(org(j).def), z = char(0); else z = 0; end
- def = [org(j).def repmat(z,1,org(j).len-length(org(j).def))];
- org(j).def = feval(fun,def);
- org(j).offset = os;
- os = os + org(j).len*org(j).dtype.size;
- end
- o = org;
|