📄 avw_hdr_read.html
字号:
0082 <span class="keyword">end</span>0083 <span class="keyword">else</span>0084 msg = sprintf(<span class="string">'...cannot find file %s.hdr\n\n'</span>,file);0085 error(msg);0086 <span class="keyword">end</span>0087 0088 t=toc; fprintf(<span class="string">'...done (%5.2f sec).\n'</span>,t);0089 0090 <span class="keyword">return</span>0091 0092 0093 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span>0094 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span>0095 <a name="_sub1" href="#_subfunctions" class="code">function [ dsr ] = read_header(fid)</a>0096 0097 <span class="comment">% Original header structures - ANALYZE 7.5</span>0098 <span class="comment">%struct dsr</span>0099 <span class="comment">% {</span>0100 <span class="comment">% struct header_key hk; /* 0 + 40 */</span>0101 <span class="comment">% struct image_dimension dime; /* 40 + 108 */</span>0102 <span class="comment">% struct data_history hist; /* 148 + 200 */</span>0103 <span class="comment">% }; /* total= 348 bytes*/</span>0104 dsr.hk = <a href="#_sub2" class="code" title="subfunction [hk] = header_key(fid)">header_key</a>(fid);0105 dsr.dime = <a href="#_sub3" class="code" title="subfunction [ dime ] = image_dimension(fid)">image_dimension</a>(fid);0106 dsr.hist = <a href="#_sub4" class="code" title="subfunction [ hist ] = data_history(fid)">data_history</a>(fid);0107 0108 <span class="keyword">return</span>0109 0110 0111 0112 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span>0113 <a name="_sub2" href="#_subfunctions" class="code">function [hk] = header_key(fid)</a>0114 0115 <span class="comment">% The required elements in the header_key substructure are:</span>0116 <span class="comment">%</span>0117 <span class="comment">% int sizeof_header Must indicate the byte size of the header file.</span>0118 <span class="comment">% int extents Should be 16384, the image file is created as</span>0119 <span class="comment">% contiguous with a minimum extent size.</span>0120 <span class="comment">% char regular Must be 'r' to indicate that all images and</span>0121 <span class="comment">% volumes are the same size.</span>0122 0123 <span class="comment">% Original header structures - ANALYZE 7.5</span>0124 <span class="comment">% struct header_key /* header key */</span>0125 <span class="comment">% { /* off + size */</span>0126 <span class="comment">% int sizeof_hdr /* 0 + 4 */</span>0127 <span class="comment">% char data_type[10]; /* 4 + 10 */</span>0128 <span class="comment">% char db_name[18]; /* 14 + 18 */</span>0129 <span class="comment">% int extents; /* 32 + 4 */</span>0130 <span class="comment">% short int session_error; /* 36 + 2 */</span>0131 <span class="comment">% char regular; /* 38 + 1 */</span>0132 <span class="comment">% char hkey_un0; /* 39 + 1 */</span>0133 <span class="comment">% }; /* total=40 bytes */</span>0134 0135 fseek(fid,0,<span class="string">'bof'</span>);0136 0137 hk.sizeof_hdr = fread(fid, 1,<span class="string">'*int32'</span>); <span class="comment">% should be 348!</span>0138 hk.data_type = fread(fid,10,<span class="string">'*char'</span>)';0139 hk.db_name = fread(fid,18,<span class="string">'*char'</span>)';0140 hk.extents = fread(fid, 1,<span class="string">'*int32'</span>);0141 hk.session_error = fread(fid, 1,<span class="string">'*int16'</span>);0142 hk.regular = fread(fid, 1,<span class="string">'*char'</span>)'; <span class="comment">% might be uint8</span>0143 hk.hkey_un0 = fread(fid, 1,<span class="string">'*uint8'</span>)';0144 0145 <span class="comment">% check if this value was a char zero</span>0146 <span class="keyword">if</span> hk.hkey_un0 == 48,0147 hk.hkey_un0 = 0;0148 <span class="keyword">end</span>0149 0150 <span class="keyword">return</span>0151 0152 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span>0153 <a name="_sub3" href="#_subfunctions" class="code">function [ dime ] = image_dimension(fid)</a>0154 0155 <span class="comment">%struct image_dimension</span>0156 <span class="comment">% { /* off + size */</span>0157 <span class="comment">% short int dim[8]; /* 0 + 16 */</span>0158 <span class="comment">% /*</span>0159 <span class="comment">% dim[0] Number of dimensions in database; usually 4.</span>0160 <span class="comment">% dim[1] Image X dimension; number of *pixels* in an image row.</span>0161 <span class="comment">% dim[2] Image Y dimension; number of *pixel rows* in slice.</span>0162 <span class="comment">% dim[3] Volume Z dimension; number of *slices* in a volume.</span>0163 <span class="comment">% dim[4] Time points; number of volumes in database</span>0164 <span class="comment">% */</span>0165 <span class="comment">% char vox_units[4]; /* 16 + 4 */</span>0166 <span class="comment">% char cal_units[8]; /* 20 + 8 */</span>0167 <span class="comment">% short int unused1; /* 28 + 2 */</span>0168 <span class="comment">% short int datatype; /* 30 + 2 */</span>0169 <span class="comment">% short int bitpix; /* 32 + 2 */</span>0170 <span class="comment">% short int dim_un0; /* 34 + 2 */</span>0171 <span class="comment">% float pixdim[8]; /* 36 + 32 */</span>0172 <span class="comment">% /*</span>0173 <span class="comment">% pixdim[] specifies the voxel dimensions:</span>0174 <span class="comment">% pixdim[1] - voxel width, mm</span>0175 <span class="comment">% pixdim[2] - voxel height, mm</span>0176 <span class="comment">% pixdim[3] - slice thickness, mm</span>0177 <span class="comment">% pixdim[4] - volume timing, in msec</span>0178 <span class="comment">% ..etc</span>0179 <span class="comment">% */</span>0180 <span class="comment">% float vox_offset; /* 68 + 4 */</span>0181 <span class="comment">% float roi_scale; /* 72 + 4 */</span>0182 <span class="comment">% float funused1; /* 76 + 4 */</span>0183 <span class="comment">% float funused2; /* 80 + 4 */</span>0184 <span class="comment">% float cal_max; /* 84 + 4 */</span>0185 <span class="comment">% float cal_min; /* 88 + 4 */</span>0186 <span class="comment">% int compressed; /* 92 + 4 */</span>0187 <span class="comment">% int verified; /* 96 + 4 */</span>0188 <span class="comment">% int glmax; /* 100 + 4 */</span>0189 <span class="comment">% int glmin; /* 104 + 4 */</span>0190 <span class="comment">% }; /* total=108 bytes */</span>0191 0192 dime.dim = fread(fid,8,<span class="string">'*int16'</span>)';0193 dime.vox_units = fread(fid,4,<span class="string">'*char'</span>)';0194 dime.cal_units = fread(fid,8,<span class="string">'*char'</span>)';0195 dime.unused1 = fread(fid,1,<span class="string">'*int16'</span>);0196 dime.datatype = fread(fid,1,<span class="string">'*int16'</span>);0197 dime.bitpix = fread(fid,1,<span class="string">'*int16'</span>);0198 dime.dim_un0 = fread(fid,1,<span class="string">'*int16'</span>);0199 dime.pixdim = fread(fid,8,<span class="string">'*float'</span>)';0200 dime.vox_offset = fread(fid,1,<span class="string">'*float'</span>);0201 dime.roi_scale = fread(fid,1,<span class="string">'*float'</span>);0202 dime.funused1 = fread(fid,1,<span class="string">'*float'</span>);0203 dime.funused2 = fread(fid,1,<span class="string">'*float'</span>);0204 dime.cal_max = fread(fid,1,<span class="string">'*float'</span>);0205 dime.cal_min = fread(fid,1,<span class="string">'*float'</span>);0206 dime.compressed = fread(fid,1,<span class="string">'*int32'</span>);0207 dime.verified = fread(fid,1,<span class="string">'*int32'</span>);0208 dime.glmax = fread(fid,1,<span class="string">'*int32'</span>);0209 dime.glmin = fread(fid,1,<span class="string">'*int32'</span>);0210 0211 <span class="keyword">if</span> dime.dim(1) < 4, <span class="comment">% Number of dimensions in database; usually 4.</span>0212 fprintf(<span class="string">'...ensuring 4 dimensions in avw.hdr.dime.dim\n'</span>);0213 dime.dim(1) = int16(4);0214 <span class="keyword">end</span>0215 <span class="keyword">if</span> dime.dim(5) < 1, <span class="comment">% Time points; number of volumes in database</span>0216 fprintf(<span class="string">'...ensuring at least 1 volume in avw.hdr.dime.dim(5)\n'</span>);0217 dime.dim(5) = int16(1);0218 <span class="keyword">end</span>0219 0220 <span class="keyword">return</span>0221 0222 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span>0223 <a name="_sub4" href="#_subfunctions" class="code">function [ hist ] = data_history(fid)</a>0224 0225 <span class="comment">% Original header structures - ANALYZE 7.5</span>0226 <span class="comment">%struct data_history</span>0227 <span class="comment">% { /* off + size */</span>0228 <span class="comment">% char descrip[80]; /* 0 + 80 */</span>0229 <span class="comment">% char aux_file[24]; /* 80 + 24 */</span>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -