123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- % Verify NIFTI header extension to make sure that each extension section
- % must be an integer multiple of 16 byte long that includes the first 8
- % bytes of esize and ecode. If the length of extension section is not the
- % above mentioned case, edata should be padded with all 0.
- %
- % Usage: [ext, esize_total] = verify_nii_ext(ext)
- %
- % ext - Structure of NIFTI header extension, which includes num_ext,
- % and all the extended header sections in the header extension.
- % Each extended header section will have its esize, ecode, and
- % edata, where edata can be plain text, xml, or any raw data
- % that was saved in the extended header section.
- %
- % esize_total - Sum of all esize variable in all header sections.
- %
- % NIFTI data format can be found on: http://nifti.nimh.nih.gov
- %
- % - Jimmy Shen (jimmy@rotman-baycrest.on.ca)
- %
- function [ext, esize_total] = verify_nii_ext(ext)
- if ~isfield(ext, 'section')
- error('Incorrect NIFTI header extension structure.');
- elseif ~isfield(ext, 'num_ext')
- ext.num_ext = length(ext.section);
- elseif ~isfield(ext, 'extension')
- ext.extension = [1 0 0 0];
- end
- esize_total = 0;
- for i=1:ext.num_ext
- if ~isfield(ext.section(i), 'ecode') | ~isfield(ext.section(i), 'edata')
- error('Incorrect NIFTI header extension structure.');
- end
- ext.section(i).esize = ceil((length(ext.section(i).edata)+8)/16)*16;
- ext.section(i).edata = ...
- [ext.section(i).edata ...
- zeros(1,ext.section(i).esize-length(ext.section(i).edata)-8)];
- esize_total = esize_total + ext.section(i).esize;
- end
- return % verify_nii_ext
|