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

📄 avw_img_write.html

📁 mri_toolbox是一个工具用来MRI. 来自于SourceForge, 我上传这个软件,希望能结识对医疗软件感兴趣的兄弟.
💻 HTML
📖 第 1 页 / 共 2 页
字号:
0150 0151 <span class="keyword">switch</span> double(avw.hdr.dime.datatype),0152 <span class="keyword">case</span>   1,0153     avw.hdr.dime.bitpix = int16( 1); precision = <span class="string">'bit1'</span>;0154 <span class="keyword">case</span>   2,0155     avw.hdr.dime.bitpix = int16( 8); precision = <span class="string">'uchar'</span>;0156 <span class="keyword">case</span>   4,0157     avw.hdr.dime.bitpix = int16(16); precision = <span class="string">'int16'</span>;0158 <span class="keyword">case</span>   8,0159     avw.hdr.dime.bitpix = int16(32); precision = <span class="string">'int32'</span>;0160 <span class="keyword">case</span>  16,0161     avw.hdr.dime.bitpix = int16(32); precision = <span class="string">'single'</span>;0162 <span class="keyword">case</span>  32,0163     error(<span class="string">'...complex datatype not yet supported.\n'</span>);0164 <span class="keyword">case</span>  64,0165     avw.hdr.dime.bitpix = int16(64); precision = <span class="string">'double'</span>;0166 <span class="keyword">case</span> 128,0167     error(<span class="string">'...RGB datatype not yet supported.\n'</span>);0168 <span class="keyword">otherwise</span>0169     fprintf(<span class="string">'...unknown datatype, using type 16 (32 bit floats).\n'</span>);0170     avw.hdr.dime.datatype = int16(16);0171     avw.hdr.dime.bitpix = int16(32); precision = <span class="string">'single'</span>;0172 <span class="keyword">end</span>0173 0174 0175 <span class="comment">% write the .img file, depending on the .img orientation</span>0176 fprintf(<span class="string">'...writing %s precision Analyze image (%s).\n'</span>,precision,machine);0177 0178 fseek(fid,0,<span class="string">'bof'</span>);0179 0180 <span class="comment">% The standard image orientation is axial unflipped</span>0181 <span class="keyword">if</span> isempty(avw.hdr.hist.orient),0182     msg = [ <span class="string">'...WARNING: avw.hdr.hist.orient ~= 0.\n'</span>,<span class="keyword">...</span>0183             <span class="string">'   This function assumes the input avw.img is\n'</span>,<span class="keyword">...</span>0184             <span class="string">'   in axial unflipped orientation in memory.  This is\n'</span>,<span class="keyword">...</span>0185             <span class="string">'   created by the avw_img_read function, which converts\n'</span>,<span class="keyword">...</span>0186             <span class="string">'   any input file image to axial unflipped in memory.\n'</span>];0187     fprintf(msg)0188 <span class="keyword">end</span>0189 0190 <span class="keyword">if</span> isempty(IMGorient),0191     fprintf(<span class="string">'...no IMGorient specified, using avw.hdr.hist.orient value.\n'</span>);0192     IMGorient = double(avw.hdr.hist.orient);0193 <span class="keyword">end</span>0194 0195 <span class="keyword">if</span> ~isfinite(IMGorient),0196     fprintf(<span class="string">'...IMGorient is not finite!\n'</span>);0197     IMGorient = 99;0198 <span class="keyword">end</span>0199 0200 <span class="keyword">switch</span> IMGorient,0201     0202 <span class="keyword">case</span> 0, <span class="comment">% transverse/axial unflipped</span>0203     0204     <span class="comment">% For the 'transverse unflipped' type, the voxels are stored with</span>0205     <span class="comment">% Pixels in 'x' axis (varies fastest) - from patient right to left</span>0206     <span class="comment">% Rows in   'y' axis                  - from patient posterior to anterior</span>0207     <span class="comment">% Slices in 'z' axis                  - from patient inferior to superior</span>0208     0209     fprintf(<span class="string">'...writing axial unflipped\n'</span>);0210     0211     avw.hdr.hist.orient = uint8(0);0212     0213     SliceDim = double(avw.hdr.dime.dim(4)); <span class="comment">% z</span>0214     RowDim   = double(avw.hdr.dime.dim(3)); <span class="comment">% y</span>0215     PixelDim = double(avw.hdr.dime.dim(2)); <span class="comment">% x</span>0216     SliceSz  = double(avw.hdr.dime.pixdim(4));0217     RowSz    = double(avw.hdr.dime.pixdim(3));0218     PixelSz  = double(avw.hdr.dime.pixdim(2));0219     0220     x = 1:PixelDim;0221     <span class="keyword">for</span> z = 1:SliceDim,0222         <span class="keyword">for</span> y = 1:RowDim,0223             fwrite(fid,avw.img(x,y,z),precision);0224         <span class="keyword">end</span>0225     <span class="keyword">end</span>0226     0227 <span class="keyword">case</span> 1, <span class="comment">% coronal unflipped</span>0228     0229     <span class="comment">% For the 'coronal unflipped' type, the voxels are stored with</span>0230     <span class="comment">% Pixels in 'x' axis (varies fastest) - from patient right to left</span>0231     <span class="comment">% Rows in   'z' axis                  - from patient inferior to superior</span>0232     <span class="comment">% Slices in 'y' axis                  - from patient posterior to anterior</span>0233     0234     fprintf(<span class="string">'...writing coronal unflipped\n'</span>);0235     0236     avw.hdr.hist.orient = uint8(1);0237     0238     SliceDim = double(avw.hdr.dime.dim(3)); <span class="comment">% y</span>0239     RowDim   = double(avw.hdr.dime.dim(4)); <span class="comment">% z</span>0240     PixelDim = double(avw.hdr.dime.dim(2)); <span class="comment">% x</span>0241     SliceSz  = double(avw.hdr.dime.pixdim(3));0242     RowSz    = double(avw.hdr.dime.pixdim(4));0243     PixelSz  = double(avw.hdr.dime.pixdim(2));0244     0245     x = 1:PixelDim;0246     <span class="keyword">for</span> y = 1:SliceDim,0247         <span class="keyword">for</span> z = 1:RowDim,0248             fwrite(fid,avw.img(x,y,z),precision);0249         <span class="keyword">end</span>0250     <span class="keyword">end</span>0251     0252 <span class="keyword">case</span> 2, <span class="comment">% sagittal unflipped</span>0253     0254     <span class="comment">% For the 'sagittal unflipped' type, the voxels are stored with</span>0255     <span class="comment">% Pixels in 'y' axis (varies fastest) - from patient posterior to anterior</span>0256     <span class="comment">% Rows in   'z' axis                  - from patient inferior to superior</span>0257     <span class="comment">% Slices in 'x' axis                  - from patient right to left</span>0258     0259     fprintf(<span class="string">'...writing sagittal unflipped\n'</span>);0260     0261     avw.hdr.hist.orient = uint8(2);0262     0263     SliceDim = double(avw.hdr.dime.dim(2)); <span class="comment">% x</span>0264     RowDim   = double(avw.hdr.dime.dim(4)); <span class="comment">% z</span>0265     PixelDim = double(avw.hdr.dime.dim(3)); <span class="comment">% y</span>0266     SliceSz  = double(avw.hdr.dime.pixdim(2));0267     RowSz    = double(avw.hdr.dime.pixdim(4));0268     PixelSz  = double(avw.hdr.dime.pixdim(3));0269     0270     y = 1:PixelDim;0271     <span class="keyword">for</span> x = 1:SliceDim,0272         <span class="keyword">for</span> z = 1:RowDim,0273             fwrite(fid,avw.img(x,y,z),precision);0274         <span class="keyword">end</span>0275     <span class="keyword">end</span>0276     0277 <span class="keyword">case</span> 3, <span class="comment">% transverse/axial flipped</span>0278     0279     <span class="comment">% For the 'transverse flipped' type, the voxels are stored with</span>0280     <span class="comment">% Pixels in 'x' axis (varies fastest) - from patient right to left</span>0281     <span class="comment">% Rows in   'y' axis                  - from patient anterior to posterior*</span>0282     <span class="comment">% Slices in 'z' axis                  - from patient inferior to superior</span>0283     0284     fprintf(<span class="string">'...writing axial flipped (+Y from Anterior to Posterior)\n'</span>);0285     0286     avw.hdr.hist.orient = uint8(3);0287     0288     SliceDim = double(avw.hdr.dime.dim(4)); <span class="comment">% z</span>0289     RowDim   = double(avw.hdr.dime.dim(3)); <span class="comment">% y</span>0290     PixelDim = double(avw.hdr.dime.dim(2)); <span class="comment">% x</span>0291     SliceSz  = double(avw.hdr.dime.pixdim(4));0292     RowSz    = double(avw.hdr.dime.pixdim(3));0293     PixelSz  = double(avw.hdr.dime.pixdim(2));0294     0295     x = 1:PixelDim;0296     <span class="keyword">for</span> z = 1:SliceDim,0297         <span class="keyword">for</span> y = RowDim:-1:1, <span class="comment">% flipped in Y</span>0298             fwrite(fid,avw.img(x,y,z),precision);0299         <span class="keyword">end</span>0300     <span class="keyword">end</span>0301     0302 <span class="keyword">case</span> 4, <span class="comment">% coronal flipped</span>0303     0304     <span class="comment">% For the 'coronal flipped' type, the voxels are stored with</span>0305     <span class="comment">% Pixels in 'x' axis (varies fastest) - from patient right to left</span>0306     <span class="comment">% Rows in   'z' axis                  - from patient inferior to superior</span>0307     <span class="comment">% Slices in 'y' axis                  - from patient anterior to posterior</span>0308     0309     fprintf(<span class="string">'...writing coronal flipped (+Z from Superior to Inferior)\n'</span>);0310     0311     avw.hdr.hist.orient = uint8(4);0312     0313     SliceDim = double(avw.hdr.dime.dim(3)); <span class="comment">% y</span>0314     RowDim   = double(avw.hdr.dime.dim(4)); <span class="comment">% z</span>0315     PixelDim = double(avw.hdr.dime.dim(2)); <span class="comment">% x</span>0316     SliceSz  = double(avw.hdr.dime.pixdim(3));0317     RowSz    = double(avw.hdr.dime.pixdim(4));0318     PixelSz  = double(avw.hdr.dime.pixdim(2));0319     0320     x = 1:PixelDim;0321     <span class="keyword">for</span> y = 1:SliceDim,0322         <span class="keyword">for</span> z = RowDim:-1:1,0323             fwrite(fid,avw.img(x,y,z),precision);0324         <span class="keyword">end</span>0325     <span class="keyword">end</span>0326     0327 <span class="keyword">case</span> 5, <span class="comment">% sagittal flipped</span>0328     0329     <span class="comment">% For the 'sagittal flipped' type, the voxels are stored with</span>0330     <span class="comment">% Pixels in 'y' axis (varies fastest) - from patient posterior to anterior</span>0331     <span class="comment">% Rows in   'z' axis                  - from patient superior to inferior</span>0332     <span class="comment">% Slices in 'x' axis                  - from patient right to left</span>0333     0334     fprintf(<span class="string">'...writing sagittal flipped (+Z from Superior to Inferior)\n'</span>);0335     0336     avw.hdr.hist.orient = uint8(5);0337     0338     SliceDim = double(avw.hdr.dime.dim(2)); <span class="comment">% x</span>0339     RowDim   = double(avw.hdr.dime.dim(4)); <span class="comment">% z</span>0340     PixelDim = double(avw.hdr.dime.dim(3)); <span class="comment">% y</span>0341     SliceSz  = double(avw.hdr.dime.pixdim(2));0342     RowSz    = double(avw.hdr.dime.pixdim(4));0343     PixelSz  = double(avw.hdr.dime.pixdim(3));0344     0345     y = 1:PixelDim;0346     <span class="keyword">for</span> x = 1:SliceDim,0347         <span class="keyword">for</span> z = RowDim:-1:1, <span class="comment">% superior to inferior</span>0348             fwrite(fid,avw.img(x,y,z),precision);0349         <span class="keyword">end</span>0350     <span class="keyword">end</span>0351     0352 <span class="keyword">otherwise</span>, <span class="comment">% transverse/axial unflipped</span>0353     0354     <span class="comment">% For the 'transverse unflipped' type, the voxels are stored with</span>0355     <span class="comment">% Pixels in 'x' axis (varies fastest) - from patient right to left</span>0356     <span class="comment">% Rows in   'y' axis                  - from patient posterior to anterior</span>0357     <span class="comment">% Slices in 'z' axis                  - from patient inferior to superior</span>0358     0359     fprintf(<span class="string">'...unknown orientation specified, assuming default axial unflipped\n'</span>);0360     0361     avw.hdr.hist.orient = uint8(0);0362     0363     SliceDim = double(avw.hdr.dime.dim(4)); <span class="comment">% z</span>0364     RowDim   = double(avw.hdr.dime.dim(3)); <span class="comment">% y</span>0365     PixelDim = double(avw.hdr.dime.dim(2)); <span class="comment">% x</span>0366     SliceSz  = double(avw.hdr.dime.pixdim(4));0367     RowSz    = double(avw.hdr.dime.pixdim(3));0368     PixelSz  = double(avw.hdr.dime.pixdim(2));0369     0370     x = 1:PixelDim;0371     <span class="keyword">for</span> z = 1:SliceDim,0372         <span class="keyword">for</span> y = 1:RowDim,0373             fwrite(fid,avw.img(x,y,z),precision);0374         <span class="keyword">end</span>0375     <span class="keyword">end</span>0376     0377 <span class="keyword">end</span>0378 0379 fclose(fid);0380 0381 <span class="comment">% Update the header</span>0382 avw.hdr.dime.dim(2:4) = int16([PixelDim,RowDim,SliceDim]);0383 avw.hdr.dime.pixdim(2:4) = single([PixelSz,RowSz,SliceSz]);0384 0385 <span class="keyword">return</span></pre></div><hr><address>Generated on Fri 21-May-2004 12:38:21 by <strong><a href="http://www.artefact.tk/software/matlab/m2html/">m2html</a></strong> &copy; 2003</address></body></html>

⌨️ 快捷键说明

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