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

📄 readecatvol.m

📁 医学图像处理matlab工具箱
💻 M
字号:
function f1 = readecatvol( fpname, matnums )% vol = readecatvol( fpname, matnums )%% structure vol:% vol.vol{ fr }( x, y, z )% vol.hd{ fr }% vol.sf( fr ) % does never contain decay correction% vol.times( fr, 1:4 )% vol.decaycf( fr ) % not always valid% use matnums = [ -inf, -inf, -inf, -inf, -inf; inf, inf, inf, inf, inf ] %  in order to read the entire file.% the columns in matnums refer to frame, plane, gate, data, bedif size( matnums, 1 ) == 1  matnums = [ matnums; matnums ];endf1 = [];f1.fpname = fpname;[ fid1, message ]       = ecatfile( 'open', f1.fpname );[ mh1 ]                 = ecatfile( 'mh', fid1 );[ matranges, message ] = ecatfile( 'matranges', fid1 );if fid1 == -1  f1 = [];  returnendmatnums( 1, isinf( matnums( 1, : ) ) ) = ...  matranges( 1, isinf( matnums( 1, : ) ) );matnums( 2, isinf( matnums( 2, : ) ) ) = ...  matranges( 2, isinf( matnums( 2, : ) ) );f1.vol = {};f1.hd = {};for fr = matnums( 1, 1 ):matnums( 2, 1 ) %                     N O T E  if strcmp( mh1.file_system, 'ecat6.4' )    vol = [];    for pl = matnums( 1, 2 ):matnums( 2, 2 )      [ vol1, hd1, status ]    = ecatfile( 'read', fid1, [ fr pl 1 0 0 ] );      if pl == matnums( 1, 2 )        hd = hd1;      end      vol(:,:,pl) = vol1;      sf1(pl) = hd1.sh.quant_scale;    end    % convert to common scale factor. Only one hd is kept.    sf = max( sf1 );    hd.sh.quant_scale = sf;    hd.sh.plane_eff_corr_fctr = 1; %                         N O T E    for pl = matnums( 1, 2 ):matnums( 2, 2 )      vol(:,:,pl) = int16( round( double( round( vol( :, :, pl ) ) * ( sf1(pl) / sf ) ) ) );    end  else    [ vol, hd, status ]    = ecatfile( 'read', fid1, [ fr 1 1 0 0 ] );  end   f1.vol{ fr - matnums( 1, 1 ) + 1 } = vol;   f1.hd{ fr - matnums( 1, 1 ) + 1} = hd;   %fprintf( '.' ) endstatus = ecatfile( 'close', fid1 );f1.times = [];% f1.sf = [];f1.sf_nondecaycorr = [];f1.decaycf = [];for fr = 1:length(f1.hd)    start = f1.hd{fr}.sh.frame_start_time;    dur = f1.hd{fr}.sh.frame_duration;    f1.times( end + 1, : ) = [ start, start + dur / 2, start + dur, dur ];  if strcmp( mh1.file_system, 'ecat6.4' )    % ecat6.4    switch f1.hd{ fr }.mh.file_type    case 2 % image      f1.sf_nondecaycorr( end + 1 ) = f1.hd{fr}.sh.quant_scale / ...        f1.hd{fr}.sh.decay_corr_fctr * ...        f1.hd{fr}.sh.ecat_calibration_fctr;      f1.decaycf( end + 1 ) = f1.hd{fr}.sh.decay_corr_fctr;    end  else    % ecat7    switch f1.hd{ fr }.mh.file_type    case 11 % 3D sinogram      f1.sf_nondecaycorr( end + 1 ) = f1.hd{fr}.sh.scale_factor;      f1.decaycf( end + 1 ) = 1;    case 7 % image      f1.sf_nondecaycorr( end + 1 ) = f1.hd{fr}.sh.scale_factor / ...        f1.hd{fr}.sh.decay_corr_fctr * ...        f1.hd{fr}.mh.ecat_calibration_factor;      f1.decaycf( end + 1 ) = f1.hd{fr}.sh.decay_corr_fctr;    end  endendf1.times = f1.times / 1000;f1.sf = f1.sf_nondecaycorr;

⌨️ 快捷键说明

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