📄 ge_hdr_read.html
字号:
0160 <span class="comment">% Loads the exam header from the image file</span>0161 <span class="comment">% and returns it as a structure.</span>0162 <span class="comment">%</span>0163 <span class="comment">% if byte_align = 1 then 32-bit alignment (SGI, LX2 format)</span>0164 <span class="comment">% if byte_align = 0 then 16-bit alignment (Sun, 5.X format)</span>0165 0166 <span class="comment">% define the structure and read ifseek(fid,1,0); % byte align the data</span>0167 <span class="comment">% to overcome the byte alignment problems</span>0168 <span class="comment">% break up the assignment into pieces using the setfield function</span>0169 ex_hdr = struct(<span class="string">'ex_suid'</span>, fread(fid,4,<span class="string">'uchar'</span>)); <span class="comment">%Suite ID for this Exam%</span>0170 ex_hdr = setfield(ex_hdr, <span class="string">'ex_uniq'</span>, fread(fid,1,<span class="string">'int16'</span>)); <span class="comment">%The Make-Unique Flag%</span>0171 ex_hdr = setfield(ex_hdr, <span class="string">'ex_diskid'</span>, fread(fid,1,<span class="string">'uchar'</span>)); <span class="comment">%Disk ID for this Exam%</span>0172 fseek(fid,1,0); <span class="comment">% 16-bit alignment</span>0173 ex_hdr = setfield(ex_hdr, <span class="string">'ex_no'</span>, fread(fid,1,<span class="string">'uint16'</span>)); <span class="comment">%Exam Number%</span>0174 ex_hdr = setfield(ex_hdr, <span class="string">'hospname'</span>, fread(fid,33,<span class="string">'uchar'</span>)); <span class="comment">%Hospital Name%</span>0175 fseek(fid,1,0); <span class="comment">% 16-bit alignment</span>0176 ex_hdr = setfield(ex_hdr, <span class="string">'detect'</span>, fread(fid,1,<span class="string">'int16'</span>)); <span class="comment">%Detector Type%</span>0177 <span class="keyword">if</span> byte_align; fseek(fid,2,0); <span class="keyword">end</span> <span class="comment">% 32-bit alignment</span>0178 ex_hdr = setfield(ex_hdr, <span class="string">'numcells'</span>, fread(fid,1,<span class="string">'int32'</span>)); <span class="comment">%Number of cells in det%</span>0179 ex_hdr = setfield(ex_hdr, <span class="string">'zerocell'</span>, fread(fid,1,<span class="string">'float32'</span>)); <span class="comment">%Cell number at theta%</span>0180 ex_hdr = setfield(ex_hdr, <span class="string">'cellspace'</span>, fread(fid,1,<span class="string">'float32'</span>)); <span class="comment">%Cell spacing%</span>0181 ex_hdr = setfield(ex_hdr, <span class="string">'srctodet'</span>, fread(fid,1,<span class="string">'float32'</span>)); <span class="comment">%Distance from source to detector%</span>0182 ex_hdr = setfield(ex_hdr, <span class="string">'srctoiso'</span>, fread(fid,1,<span class="string">'float32'</span>)); <span class="comment">%Distance from source to iso%</span>0183 ex_hdr = setfield(ex_hdr, <span class="string">'tubetyp'</span>, fread(fid,1,<span class="string">'int16'</span>)); <span class="comment">%Tube type%</span>0184 ex_hdr = setfield(ex_hdr, <span class="string">'dastyp'</span>, fread(fid,1,<span class="string">'int16'</span>)); <span class="comment">%DAS type%</span>0185 ex_hdr = setfield(ex_hdr, <span class="string">'num_dcnk'</span>, fread(fid,1,<span class="string">'int16'</span>)); <span class="comment">%Number of Decon Kernals%</span>0186 ex_hdr = setfield(ex_hdr, <span class="string">'dcn_len'</span>, fread(fid,1,<span class="string">'int16'</span>)); <span class="comment">%Number of elements in a Decon Kernal%</span>0187 ex_hdr = setfield(ex_hdr, <span class="string">'dcn_density'</span>, fread(fid,1,<span class="string">'int16'</span>)); <span class="comment">%Decon Kernal density%</span>0188 ex_hdr = setfield(ex_hdr, <span class="string">'dcn_stepsize'</span>, fread(fid,1,<span class="string">'int16'</span>)); <span class="comment">%Decon Kernal stepsize%</span>0189 ex_hdr = setfield(ex_hdr, <span class="string">'dcn_shiftcnt'</span>, fread(fid,1,<span class="string">'int16'</span>)); <span class="comment">%Decon Kernal Shift Count%</span>0190 <span class="keyword">if</span> byte_align; fseek(fid,2,0); <span class="keyword">end</span> <span class="comment">% 32-bit alignment</span>0191 ex_hdr = setfield(ex_hdr, <span class="string">'magstrength'</span>, fread(fid,1,<span class="string">'int32'</span>)); <span class="comment">%Magnet strength (in gauss)%</span>0192 ex_hdr = setfield(ex_hdr, <span class="string">'patid'</span>, fread(fid,13,<span class="string">'uchar'</span>)); <span class="comment">%Patient ID for this Exam%</span>0193 ex_hdr = setfield(ex_hdr, <span class="string">'patname'</span>, fread(fid,25,<span class="string">'uchar'</span>)); <span class="comment">%Patientsda Name%</span>0194 ex_hdr = setfield(ex_hdr, <span class="string">'patage'</span>, fread(fid,1,<span class="string">'int16'</span>)); <span class="comment">%Patient Age (years, months or days)%</span>0195 ex_hdr = setfield(ex_hdr, <span class="string">'patian'</span>, fread(fid,1,<span class="string">'int16'</span>)); <span class="comment">%Patient Age Notation%</span>0196 ex_hdr = setfield(ex_hdr, <span class="string">'patsex'</span>, fread(fid,1,<span class="string">'int16'</span>)); <span class="comment">%Patient Sex%</span>0197 ex_hdr = setfield(ex_hdr, <span class="string">'patweight'</span>, fread(fid,1,<span class="string">'int32'</span>)); <span class="comment">%Patient Weight%</span>0198 ex_hdr = setfield(ex_hdr, <span class="string">'trauma'</span>, fread(fid,1,<span class="string">'int16'</span>)); <span class="comment">%Trauma Flag%</span>0199 ex_hdr = setfield(ex_hdr, <span class="string">'hist'</span>, fread(fid,61,<span class="string">'uchar'</span>)); <span class="comment">%Patient History%</span>0200 ex_hdr = setfield(ex_hdr, <span class="string">'reqnum'</span>, fread(fid,13,<span class="string">'uchar'</span>)); <span class="comment">%Requisition Number%</span>0201 ex_hdr = setfield(ex_hdr, <span class="string">'ex_datetime'</span>, fread(fid,1,<span class="string">'int32'</span>)); <span class="comment">%Exam date/time stamp%</span>0202 ex_hdr = setfield(ex_hdr, <span class="string">'refphy'</span>, fread(fid,33,<span class="string">'uchar'</span>)); <span class="comment">%Referring Physician%</span>0203 ex_hdr = setfield(ex_hdr, <span class="string">'diagrad'</span>, fread(fid,33,<span class="string">'uchar'</span>)); <span class="comment">%Diagnostician/Radiologist%</span>0204 ex_hdr = setfield(ex_hdr, <span class="string">'op'</span>, fread(fid,4,<span class="string">'uchar'</span>)); <span class="comment">%Operator%</span>0205 ex_hdr = setfield(ex_hdr, <span class="string">'ex_desc'</span>, fread(fid,23,<span class="string">'uchar'</span>)); <span class="comment">%Exam Description%</span>0206 ex_hdr = setfield(ex_hdr, <span class="string">'ex_typ'</span>, fread(fid,3,<span class="string">'uchar'</span>)); <span class="comment">%Exam Type%</span>0207 ex_hdr = setfield(ex_hdr, <span class="string">'ex_format'</span>, fread(fid,1,<span class="string">'int16'</span>)); <span class="comment">%Exam Format%</span>0208 <span class="keyword">if</span> byte_align; fseek(fid,6,0); <span class="keyword">end</span> <span class="comment">% 32-bit alignment</span>0209 ex_hdr = setfield(ex_hdr, <span class="string">'firstaxtime'</span>, fread(fid,1,<span class="string">'float64'</span>)); <span class="comment">%Start time(secs) of first axial in exam%</span>0210 ex_hdr = setfield(ex_hdr, <span class="string">'ex_sysid'</span>, fread(fid,9,<span class="string">'uchar'</span>)); <span class="comment">%Creator Suite and Host%</span>0211 fseek(fid,1,0); <span class="comment">% 16-bit alignment</span>0212 <span class="keyword">if</span> byte_align; fseek(fid,2,0); <span class="keyword">end</span> <span class="comment">% 32-bit alignment</span>0213 ex_hdr = setfield(ex_hdr, <span class="string">'ex_lastmod'</span>, fread(fid,1,<span class="string">'int32'</span>)); <span class="comment">%Date/Time of Last Change%</span>0214 ex_hdr = setfield(ex_hdr, <span class="string">'protocolflag'</span>, fread(fid,1,<span class="string">'int16'</span>)); <span class="comment">%Non-Zero indicates Protocol Exam%</span>0215 ex_hdr = setfield(ex_hdr, <span class="string">'ex_alloc_key'</span>, fread(fid,13,<span class="string">'uchar'</span>)); <span class="comment">%Process that allocated this record%</span>0216 fseek(fid,1,0); <span class="comment">% 16-bit alignment</span>0217 ex_hdr = setfield(ex_hdr, <span class="string">'ex_delta_cnt'</span>, fread(fid,1,<span class="string">'int32'</span>)); <span class="comment">%Indicates number of updates to header%</span>0218 ex_hdr = setfield(ex_hdr, <span class="string">'ex_verscre'</span>, fread(fid,2,<span class="string">'uchar'</span>)); <span class="comment">%Genesis Version - Created%</span>0219 ex_hdr = setfield(ex_hdr, <span class="string">'ex_verscur'</span>, fread(fid,2,<span class="string">'uchar'</span>)); <span class="comment">%Genesis Version - Now%</span>0220 ex_hdr = setfield(ex_hdr, <span class="string">'ex_checksum'</span>, fread(fid,1,<span class="string">'uint32'</span>)); <span class="comment">%Exam Record Checksum%</span>0221 ex_hdr = setfield(ex_hdr, <span class="string">'ex_complete'</span>, fread(fid,1,<span class="string">'int32'</span>)); <span class="comment">%Exam Complete Flag%</span>0222 ex_hdr = setfield(ex_hdr, <span class="string">'ex_seriesct'</span>, fread(fid,1,<span class="string">'int32'</span>)); <span class="comment">%Last Series Number Used%</span>0223 ex_hdr = setfield(ex_hdr, <span class="string">'ex_numarch'</span>, fread(fid,1,<span class="string">'int32'</span>)); <span class="comment">%Number of Series Archived%</span>0224 ex_hdr = setfield(ex_hdr, <span class="string">'ex_numseries'</span>, fread(fid,1,<span class="string">'int32'</span>)); <span class="comment">%Number of Series Existing%</span>0225 ex_hdr = setfield(ex_hdr, <span class="string">'ex_series'</span>, struct(<span class="string">'length'</span>, fread(fid,1,<span class="string">'uint32'</span>), <span class="keyword">...</span>0226 <span class="string">'data'</span>, fread(fid,1,<span class="string">'uint32'</span>))); <span class="comment">%Series Keys for this Exam%</span>0227 ex_hdr = setfield(ex_hdr, <span class="string">'ex_numunser'</span>, fread(fid,1,<span class="string">'int32'</span>)); <span class="comment">%Number of Unstored Series%</span>0228 ex_hdr = setfield(ex_hdr, <span class="string">'ex_unseries'</span>, struct(<span class="string">'length'</span>, fread(fid,1,<span class="string">'uint32'</span>), <span class="keyword">...</span>0229 <span class="string">'data'</span>, fread(fid,1,<span class="string">'uint32'</span>))); <span class="comment">%Unstored Series Keys for this Exam%</span>0230 ex_hdr = setfield(ex_hdr, <span class="string">'ex_toarchcnt'</span>, fread(fid,1,<span class="string">'int32'</span>)); <span class="comment">%Number of Unarchived Series%</span>0231 ex_hdr = setfield(ex_hdr, <span class="string">'ex_toarchive'</span>, struct(<span class="string">'length'</span>, fread(fid,1,<span class="string">'uint32'</span>), <span class="keyword">...</span>0232 <span class="string">'data'</span>, fread(fid,1,<span class="string">'uint32'</span>))); <span class="comment">%Unarchived Series Keys for this Exam%</span>0233 ex_hdr = setfield(ex_hdr, <span class="string">'ex_prospcnt'</span>, fread(fid,1,<span class="string">'int32'</span>)); <span class="comment">%Number of Prospective/Scout Series%</span>0234 ex_hdr = setfield(ex_hdr, <span class="string">'ex_prosp'</span>, struct(<span class="string">'length'</span>, fread(fid,1,<span class="string">'uint32'</span>), <span class="keyword">...</span>0235 <span class="string">'data'</span>, fread(fid,1,<span class="string">'uint32'</span>))); <span class="comment">%Prospective/Scout Series Keys for this Exam%</span>0236 ex_hdr = setfield(ex_hdr, <span class="string">'ex_modelnum'</span>, fread(fid,1,<span class="string">'int32'</span>)); <span class="comment">%Last Model Number used%</span>0237 ex_hdr = setfield(ex_hdr, <span class="string">'ex_modelcnt'</span>, fread(fid,1,<span class="string">'int32'</span>)); <span class="comment">%Number of ThreeD Models%</span>0238 ex_hdr = setfield(ex_hdr, <span class="string">'ex_models'</span>, struct(<span class="string">'length'</span>, fread(fid,1,<span class="string">'uint32'</span>), <span class="keyword">...</span>0239 <span class="string">'data'</span>, fread(fid,1,<span class="string">'uint32'</span>))); <span class="comment">%ThreeD Model Keys for Exam%</span>0240 ex_hdr = setfield(ex_hdr, <span class="string">'ex_stat'</span>, fread(fid,1,<span class="string">'int16'</span>)); <span class="comment">%Patient Status%</span>0241 ex_hdr = setfield(ex_hdr, <span class="string">'uniq_sys_id'</span>, fread(fid,16,<span class="string">'uchar'</span>)); <span class="comment">%Unique System ID%</span>0242 ex_hdr = setfield(ex_hdr, <span class="string">'service_id'</span>, fread(fid,16,<span class="string">'uchar'</span>)); <span class="comment">%Unique Service ID%</span>0243 ex_hdr = setfield(ex_hdr, <span class="string">'mobile_loc'</span>, fread(fid,4,<span class="string">'uchar'</span>)); <span class="comment">%Mobile Location Number%</span>0244 ex_hdr = setfield(ex_hdr, <span class="string">'study_uid'</span>, fread(fid,32,<span class="string">'uchar'</span>)); <span class="comment">%Study Entity Unique ID%</span>0245 ex_hdr = setfield(ex_hdr, <span class="string">'study_status'</span>, fread(fid,1,<span class="string">'int16'</span>)); <span class="comment">%indicates if study has complete info(DICOM/genesis)%</span>0246 ex_hdr = setfield(ex_hdr, <span class="string">'ex_padding'</span>, fread(fid,516,<span class="string">'uchar'</span>)); <span class="comment">%Spare Space%</span>0247 <span class="keyword">if</span> byte_align; fseek(fid,4,0); <span class="keyword">end</span> <span class="comment">% byte alignment</span>0248 0249 <span class="keyword">return</span>0250 0251 0252 0253 0254 0255 <span class="comment">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span>0256 0257 <a name="_sub3" href="#_subfunctions" class="code">function se_hdr = ge_readHeaderSeries(fid, byte_align)</a>0258 0259 <span class="comment">% returns the series header as a structure.</span>0260 <span class="comment">% if byte_align = 1 then 32-bit alignment (SGI, LX2 format)</span>0261 <span class="comment">% if byte_align = 0 then 16-bit alignment (Sun, 5.X format)</span>0262 0263 <span class="comment">% define the structure and read in the data</span>0264 <span class="comment">% to overcome the byte alignment problems</span>0265 <span class="comment">% break up the assignment into pieces using the setfield function</span>0266 se_hdr = struct(<span class="string">'se_suid'</span>, fread(fid,4,<span class="string">'uchar'</span>)); <span class="comment">%Suite ID for this Series%</span>0267 se_hdr = setfield(se_hdr, <span class="string">'se_uniq'</span>, fread(fid,1,<span class="string">'int16'</span>)); <span class="comment">%The Make-Unique Flag%</span>0268 se_hdr = setfield(se_hdr, <span class="string">'se_diskid'</span>, fread(fid,1,<span class="string">'uchar'</span>)); <span class="comment">%Disk ID for this Series%</span>0269 fseek(fid,1,0); <span class="comment">% 16-bit alignment</span>0270 se_hdr = setfield(se_hdr, <span class="string">'se_exno'</span>, fread(fid,1,<span class="string">'uint16'</span>)); <span class="comment">%Exam Number%</span>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -