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

📄 ge_hdr_read.html

📁 mri_toolbox是一个工具用来MRI. 来自于SourceForge, 我上传这个软件,希望能结识对医疗软件感兴趣的兄弟.
💻 HTML
📖 第 1 页 / 共 5 页
字号:
0049 <span class="comment">% Open the Image File</span>0050 [fid,message] = fopen(imageFileName,<span class="string">'r'</span>,<span class="string">'b'</span>); <span class="comment">% 'b' = Big-Endian format</span>0051 <span class="keyword">if</span> fid == -1, error(message); <span class="keyword">end</span>0052 0053 <span class="comment">% Check for the magic number at the first word</span>0054 magic = fread(fid,1,<span class="string">'int32'</span>);0055 <span class="keyword">if</span> magic == 1229801286,0056     <span class="comment">% This is a 5.X format image</span>0057     fprintf(<span class="string">'...identified Signa 5.X format\n'</span>);0058     byte_align = 0;0059     ge.hdr.pixel.offset = 0;0060     ge.hdr.suite.size   = 114;0061     ge.hdr.exam.size    = 1024;0062     ge.hdr.series.size  = 1020;0063     ge.hdr.image.size   = 1022;0064 <span class="keyword">else</span>0065     <span class="comment">% Magic no. not at the 1st word, try at the LX2 position</span>0066     fseek(fid,3228,-1);0067     magic = fread(fid,1,<span class="string">'int32'</span>);0068     <span class="keyword">if</span> magic == 1229801286,0069         <span class="comment">% This is an LX2 format image</span>0070         fprintf(<span class="string">'...identified LX2 format\n'</span>);0071         byte_align = 1;0072         ge.hdr.pixel.offset = 3228;0073         ge.hdr.suite.size   = 116;0074         ge.hdr.exam.size    = 1040;0075         ge.hdr.series.size  = 1028;0076         ge.hdr.image.size   = 1044;0077     <span class="keyword">else</span>0078         msg = <span class="string">'This is not a 5.X or LX2 format image.  No Magic Number.'</span>;0079         error(msg);0080     <span class="keyword">end</span>0081 <span class="keyword">end</span>0082 0083 <span class="comment">% Load the pixel header</span>0084 fseek(fid,ge.hdr.pixel.offset,-1);0085 ge = <a href="#_sub5" class="code" title="subfunction ge = ge_readHeaderPixel(fid, byte_align, ge)">ge_readHeaderPixel</a>(fid, byte_align, ge); <span class="comment">% see subfunc below</span>0086 0087 0088 <span class="comment">% Check for epirecon images</span>0089 <span class="keyword">if</span> (ge.hdr.pixel.img_l_dbHdr == 0 &amp; byte_align == 0),0090     error(<span class="string">'This is an epirecon image. No header!'</span>);0091 <span class="keyword">end</span>0092 0093 <span class="comment">% Compute the offsets</span>0094 ge.hdr.suite.offset  = ge.hdr.pixel.img_p_dbHdr;0095 ge.hdr.exam.offset   = ge.hdr.suite.offset  + ge.hdr.suite.size;0096 ge.hdr.series.offset = ge.hdr.exam.offset   + ge.hdr.exam.size;0097 ge.hdr.image.offset  = ge.hdr.series.offset + ge.hdr.series.size;0098 ge.img.offset        = ge.hdr.pixel.offset  + ge.hdr.pixel.img_hdr_length;0099 0100 0101 0102 <span class="comment">% Load the suite header</span>0103 fseek(fid,ge.hdr.suite.offset,-1);0104 ge.hdr.suite = <a href="#_sub1" class="code" title="subfunction su_hdr = ge_readHeaderSuite(fid, byte_align)">ge_readHeaderSuite</a>(fid, byte_align); <span class="comment">% see subfunc below</span>0105 0106 <span class="comment">% Load the exam header</span>0107 fseek(fid,ge.hdr.exam.offset,-1);0108 ge.hdr.exam = <a href="#_sub2" class="code" title="subfunction ex_hdr = ge_readHeaderExam(fid, byte_align)">ge_readHeaderExam</a>(fid, byte_align); <span class="comment">% see subfunc below</span>0109 0110 <span class="comment">% Load the series header</span>0111 fseek(fid,ge.hdr.series.offset,-1);0112 ge.hdr.series = <a href="#_sub3" class="code" title="subfunction se_hdr = ge_readHeaderSeries(fid, byte_align)">ge_readHeaderSeries</a>(fid, byte_align); <span class="comment">% see subfunc below</span>0113 0114 <span class="comment">% Load the image header</span>0115 fseek(fid,ge.hdr.image.offset,-1);0116 ge.hdr.image = <a href="#_sub4" class="code" title="subfunction im_hdr = ge_readHeaderImage(fid, byte_align)">ge_readHeaderImage</a>(fid, byte_align); <span class="comment">% see subfunc below</span>0117 0118 <span class="comment">% Close the file</span>0119 fclose(fid);0120 0121 t=toc; fprintf(<span class="string">'...done (%5.2f sec).\n'</span>,t);0122 0123 <span class="keyword">return</span>0124 0125 0126 0127 0128 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span>0129 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span>0130 <a name="_sub1" href="#_subfunctions" class="code">function su_hdr = ge_readHeaderSuite(fid, byte_align)</a>0131 0132 <span class="comment">% Loads the suite header from an image file (with fid)</span>0133 <span class="comment">% and returns it as a structure.</span>0134 <span class="comment">%</span>0135 <span class="comment">% if byte_align = 1 then 32-bit alignment (SGI, LX2 format)</span>0136 <span class="comment">% if byte_align = 0 then 16-bit alignment (Sun, 5.X format)</span>0137 0138 <span class="comment">% define the structure and read</span>0139 su_hdr = struct(<span class="string">'su_id'</span>, fread(fid,4,<span class="string">'char'</span>));                   <span class="comment">% Suite ID</span>0140 su_hdr = setfield(su_hdr, <span class="string">'su_uniq'</span>, fread(fid,1,<span class="string">'int16'</span>));      <span class="comment">% The Make-Unique Flag</span>0141 su_hdr = setfield(su_hdr, <span class="string">'su_diskid'</span>, fread(fid,1,<span class="string">'char'</span>));     <span class="comment">% Disk ID</span>0142 su_hdr = setfield(su_hdr, <span class="string">'prodid'</span>, fread(fid,13,<span class="string">'char'</span>));       <span class="comment">% Product ID</span>0143 su_hdr = setfield(su_hdr, <span class="string">'su_verscre'</span>, fread(fid,2,<span class="string">'char'</span>));    <span class="comment">% Genesis Version</span>0144 su_hdr = setfield(su_hdr, <span class="string">'su_verscur'</span>, fread(fid,2,<span class="string">'char'</span>));    <span class="comment">% Genesis Version</span>0145 su_hdr = setfield(su_hdr, <span class="string">'su_checksum'</span>, fread(fid,1,<span class="string">'uint32'</span>)); <span class="comment">% Suite Record Checksum</span>0146 su_hdr = setfield(su_hdr, <span class="string">'su_padding'</span>, fread(fid,85,<span class="string">'char'</span>));   <span class="comment">% Spare Space</span>0147 fseek(fid,1,0); <span class="comment">% 16-bit alignment</span>0148 <span class="keyword">if</span> byte_align, fseek(fid,2,0); <span class="keyword">end</span> <span class="comment">% 32-bit alignment</span>0149 0150 <span class="keyword">return</span>0151 0152 0153 0154 0155 0156 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span>0157 0158 <a name="_sub2" href="#_subfunctions" class="code">function ex_hdr = ge_readHeaderExam(fid, byte_align)</a>0159 

⌨️ 快捷键说明

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