📄 ge_hdr_read.html
字号:
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 & 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 + -