Changeset 120


Ignore:
Timestamp:
Apr 14, 2010, 5:03:43 PM (8 years ago)
Author:
tjniskan
Message:
  • Fixed an indexing bug in aedes_readfid when reading multireceiver

EPI data

  • Added EPIPhasedArrayData -property to aedes_readfid for manually

getting the data from individual coils from multireceiver EPI data

  • Fixed aedes_rot3d to work with n-D arrays
  • Added 18 new ROI colors and removed the ROI number limitation

M aedes_rot3d.m
M aedes.m
M aedes_readfid.m
M aedes_revision.m

Files:
4 edited

Legend:

Unmodified
Added
Removed
  • aedes.m

    r100 r120  
    29212921% Initialize volumes and slices ------------------------
    29222922Dat.Vols = Dat.ImageDim(Dat.DataInd,4);
     2923Dat.Rcvrs = size(DATA{1}.FTDATA,5);
    29232924Dat.CurrentVol = 1;
    29242925Dat.Slices = [1 1 1];
     
    32273228                255 0 128;...
    32283229                0 255 128;...
    3229                 64 128 256;...
    3230                 128 64 256;...
    3231                 256 64 128;...
    3232                 256 128 64;...
    3233                 128 256 64;...
    3234                 64 256 128];
     3230                64 128 255;...
     3231                128 64 255;...
     3232                255 64 128;...
     3233                255 128 64;...
     3234                128 255 64;...
     3235                64 255 128;...
     3236                255 128 128;...
     3237                128 255 128;...
     3238                128 128 255;...
     3239                255 255 128;...
     3240                255 128 255;...
     3241                128 255 255;...
     3242                255 64 64;...
     3243                64 255 64;...
     3244                64 64 255;...
     3245                255 255 64;...
     3246                255 64 255;...
     3247                64 255 255;...
     3248                255 64 0;...
     3249                64 255 0;...
     3250                64 0 255;...
     3251                0 64 255;...
     3252                0 255 64;...
     3253                255 0 64];
    32353254Dat.RoiView = [];
    32363255Dat.RoiUndo=[];
     
    75827601% Check if new ROI can be added
    75837602if length(ROI)==size(Dat.RoiColors,1)
    7584   h=warndlg('Unable to create a new ROI. Maximum number of ROIs reached.',...
    7585             'Maximum number of ROIs reached','modal');
    7586   return
     7603  h=warndlg(['Maximum number of separate colors for ROIs reached. ',...
     7604    'Individual ROIs are no longer visually separable.'],...
     7605    'Maximum number of ROI colors reached','modal');
     7606  uiwait(h)
    75877607end
    75887608
     
    76787698if le>0
    76797699  free_colors=Dat.RoiColors(find(ismember(Dat.RoiColors,...
    7680                                           reshape([ROI(:).color],3,le)', ...
    7681                                           'rows')==0),:);
    7682   ROI(roi_ind).color = free_colors(1,:);
     7700    reshape([ROI(:).color],3,le)', ...
     7701    'rows')==0),:);
     7702  if isempty(free_colors)
     7703    col_ind = roi_ind-floor(roi_ind/size(Dat.RoiColors,1))*size(Dat.RoiColors,1);
     7704    if col_ind==0
     7705      col_ind = size(Dat.RoiColors,1);
     7706    end
     7707    ROI(roi_ind).color = Dat.RoiColors(col_ind,:);
     7708  else
     7709    ROI(roi_ind).color = free_colors(1,:);
     7710  end
    76837711else
    76847712  ROI(roi_ind).color = Dat.RoiColors(1,:);
  • aedes_readfid.m

    r119 r120  
    148148%                                               % EPI data. Default=100
    149149%
     150%        'EPIPhasedArrayData' : ['on'|{'off'}]  % Return data from
     151%                                               % individual receivers from
     152%                                               % phased array EPI files.
     153%
    150154% Examples:
    151155%        [DATA,msg]=aedes_readfid(filename)             % Read image data from 'filename'
     
    222226Dat.RemoveEPIphaseIm = true;
    223227Dat.EPIBlockSize = 100;
     228Dat.EPIPhasedArrayData = false;
    224229Dat.OrientImages = true;
    225230
     
    441446      case 'epiblocksize'
    442447        Dat.EPIBlockSize = round(varargin{ii+1});
     448       
     449      case 'epiphasedarraydata'
     450        if strcmpi(varargin{ii+1},'on')
     451          Dat.EPIPhasedArrayData = true;
     452        else
     453          Dat.EPIPhasedArrayData = false;
     454        end
    443455      case 'orientimages'
    444456        if strcmpi(varargin{ii+1},'off')
     
    13531365      nRef = 3;
    13541366    end
    1355     nVols = size(kspace,3)/nRcv-1;
    1356     data = zeros(procpar.nv,procpar.np/2,procpar.ns,nVols+1,'single');
     1367    nVols = size(kspace,3)/nRcv-nRef;
     1368    if Dat.EPIPhasedArrayData
     1369      data = zeros(procpar.nv,procpar.np/2,procpar.ns,nVols+nRef,nRcv,'single');
     1370    else
     1371      data = zeros(procpar.nv,procpar.np/2,procpar.ns,nVols+nRef,'single');
     1372    end
    13571373    kssz=size(kspace);
    13581374    blksz = Dat.EPIBlockSize; % Process EPI data in 100 volume blocks (default)
     
    13681384      tmp_data = [];
    13691385      for kk=1:nRcv
    1370         inds = [kk:nRcv:nRcv*nRef ((ii-1)*blksz*nRcv+nRcv*nRef+kk):nRcv:min((nRcv*ii*blksz+kk),kssz(3))];
     1386        inds_ref = kk:nRcv:nRcv*nRef;
     1387        inds_im = (nRcv*nRef+kk):nRcv:kssz(3);
     1388        inds = cat(2,inds_ref,inds_im(((ii-1)*blksz+1):min(ii*blksz,nVols)));
    13711389        tmp_kspace = l_ReconstructKspace(kspace(:,:,inds),procpar,Dat);
    13721390        tmp_data(:,:,:,:,kk) = fftshift(fftshift(fft(fft(tmp_kspace,[],1),[],2),1),2);
    13731391      end
     1392      if Dat.EPIPhasedArrayData
     1393        data_block = abs(tmp_data);
     1394      else
     1395        data_block = sqrt(sum(tmp_data.*conj(tmp_data),5));
     1396      end
    13741397      if ii==1
    1375         data(:,:,:,1:size(tmp_data,4)) = sqrt(sum(tmp_data.*conj(tmp_data),5));
     1398        data(:,:,:,1:size(tmp_data,4),:) = data_block;
    13761399      elseif ii==nBlocks
    1377         tmp_data(:,:,:,1:nRef,:)=[];
    1378         data(:,:,:,((ii-1)*blksz+1+nRef):(nVols+1)) = sqrt(sum(tmp_data.*conj(tmp_data),5));
     1400        data_block(:,:,:,1:nRef,:)=[];
     1401        data(:,:,:,((ii-1)*blksz+1+nRef):(nVols+nRef),:) = data_block;
    13791402      else
    1380         tmp_data(:,:,:,1:nRef,:)=[];
    1381         data(:,:,:,((ii-1)*blksz+1+nRef):(ii*blksz+nRef)) = sqrt(sum(tmp_data.*conj(tmp_data),5));
     1403        data_block(:,:,:,1:nRef,:)=[];
     1404        data(:,:,:,((ii-1)*blksz+1+nRef):(ii*blksz+nRef),:) = data_block;
    13821405      end
    13831406    end
    13841407    fprintf(1,'\n')
    1385    
    1386 %     for kk=1:(size(kspace,3)/nRcv-1)
    1387 %       for ii=1:nRcv
    1388 %         tmp_kspace = l_ReconstructKspace(kspace(:,:,[ii kk*nRcv+ii]),procpar,Dat);
    1389 %         tmp_data(:,:,:,:,ii) = fftshift(fftshift(fft(fft(tmp_kspace,[],1),[],2),1),2);
    1390 %         
    1391 %         %tmp_kspace = l_ReconstructKspace(kspace(:,:,ii:nRcv:end),procpar,Dat);
    1392 %         %kspace2(:,:,:,:,ii)=tmp_kspace;
    1393 %       end
    1394 %       if kk==1
    1395 %         data = sqrt(mean(tmp_data.*conj(tmp_data),5));
    1396 %       else
    1397 %         data(:,:,:,kk+1) = sqrt(mean(tmp_data(:,:,:,2,:).*conj(tmp_data(:,:,:,2,:)),5));
    1398 %       end
    1399 %       fprintf(1,repmat('\b',1,bsl));
    1400 %       fprintf(1,['%0',lnumstr,'d/%0',lnumstr,'d'],kk,nVols);
    1401 %     end
    1402 %     fprintf(1,'\n')
    1403 %     %kspace = kspace2;
    1404 %     %data = fftshift(fftshift(fft(fft(kspace,[],1),[],2),1),2);
    1405 %     %data = sqrt(mean(data.*conj(data),5));
    1406 %     %kspace2=[];
    14071408   
    14081409    % Remove reference image if requested
    14091410    if Dat.isEPIdata && Dat.RemoveEPIphaseIm
    1410       %data = data(:,:,:,2:end);
    1411       data(:,:,:,1:nRef)=[];
     1411      data(:,:,:,1:nRef,:)=[];
    14121412    end
    14131413   
  • aedes_revision.m

    r119 r120  
    9393% bash-script every time it is called so that this file "aedes_revision.m" is
    9494% always in the list of committed files. DO NOT EDIT THE NEXT LINE!!!
    95 % - SVN Hook -
     95% - Svn Hook -
  • aedes_rot3d.m

    r80 r120  
    3535end
    3636
    37 if ndims(A)>4 || ~( isnumeric(A) || islogical(A) )
     37if ~( isnumeric(A) || islogical(A) )
    3838  error('First input argument must be a numerical 3D (or 4D)-matrix!')
    3939end
     
    4343end
    4444
     45dim_inds = 1:ndims(A);
     46
    4547switch dim
    4648  case 1
     49    dim_inds(1:3)=dim_inds(3:-1:1);
    4750        if k==1 % Rotate 90 degrees along dim 1 (rows)
    48           B = flipdim(permute(A,[3 2 1 4]),1);
     51          B = flipdim(permute(A,dim_inds),1);
    4952        elseif k==2 % Rotate 180 degrees along dim 1 (rows)
    5053          B = flipdim(flipdim(A,3),1);
    5154    elseif k==3 % Rotate 270 degrees along dim 1 (rows)
    52           B = flipdim(permute(A,[3 2 1 4]),3);
     55          B = flipdim(permute(A,dim_inds),3);
    5356        elseif k==0 || k==4
    5457          B=A;
    5558        end
    5659  case 2
     60    dim_inds(2:3)=dim_inds(3:-1:2);
    5761        if k==1 % Rotate 90 degrees along dim 2 (cols)
    58       B = flipdim(permute(A,[1 3 2 4]),3);
     62      B = flipdim(permute(A,dim_inds),3);
    5963    elseif k==2 % Rotate 180 degrees along dim 2 (cols)
    6064      B = flipdim(flipdim(A,3),2);
    6165    elseif k==3 % Rotate 270 degrees along dim 2 (cols)
    62       B = flipdim(permute(A,[1 3 2 4]),2);
     66      B = flipdim(permute(A,dim_inds),2);
    6367    elseif k==0 || k==4
    6468      B=A;
    6569        end
    6670  case 3
     71    dim_inds(1:2)=dim_inds(2:-1:1);
    6772    if k==1 % Rotate 90 degrees along dim 3
    68       B = flipdim(permute(A,[2 1 3 4]),1);
     73      B = flipdim(permute(A,dim_inds),1);
    6974    elseif k==2 % Rotate 180 degrees along dim 3
    7075      B = flipdim(flipdim(A,2),1);
    7176    elseif k==3 % Rotate 270 degrees along dim 3
    72       B = flipdim(permute(A,[2 1 3 4]),2);
     77      B = flipdim(permute(A,dim_inds),2);
    7378    elseif k==0 || k==4
    7479      B=A;
Note: See TracChangeset for help on using the changeset viewer.

Powered by Trac 1.0.9.Copyright © Juha-Pekka Niskanen 2008