Function compute_model

Computes model in image space and consistant model for each projection

Contents

Input

Output

Copyrights

(C) All rights reserved.

The code may be used free of charge for non-commercial and educational purposes, the only requirement is that this text is preserved within the derivative work. For any other purpose you must contact the authors for permission. This code may not be redistributed without written permission from the authors.

ABOUT: This software implements basic functionalities of the FIR-MAP algorithm

IMPORTANT: If you use this software you should cite the following in any resulting publication: [1] Michal Staniszewski and Uwe Klose. Improvements of Fast Model-based Acceleration of Parameter Look-Locker T1 Mapping

function [ cons_model_coil, cons_model_sos, diff ] = compute_model( n_size, recon_grog, M0s_prodsens, M0_new, n_iter, exp_factor, meanPhase, mask_k)

    np = n_size(1); % number of projections
    nc = n_size(2); % number of coils
    nr = n_size(3); % number of image rows
    diff = zeros(nc,1);
    cons_model_coil = zeros(nr,nr,nc,np); %image

    % iterate for all projections
    for a = 1:np
        fprintf('Iter #%d. Calculate consistant model for each projection and coil. Projection -> #%d\n', n_iter, a)
        M_t = M0s_prodsens - (M0_new + M0s_prodsens) .* exp_factor(:,:,a); % magnetization curve M(t) in image space
        projection_model = fftshift(fft(fft(fftshift(M_t),[],1),[],2)); % go back to k-space
        single_proj_raw = recon_grog(:,:,:,a); % in k-space single projection from raw data

        % calculate corresponding mask and reinsert initial projections
        mask=logical(abs(single_proj_raw)); % creating mask for single projection
        diff(a)=mean(abs(abs(projection_model(mask))-abs(single_proj_raw(mask)))); % calculating difference for termination criterion
        projection_model(mask)=single_proj_raw(mask); % reinserting single projection
%         projection_model(~mask_k) = 0; % optional k-space mask

        % calculate consistant model
        projection_model_coil=fftshift(ifft(ifft(fftshift(projection_model),[],1),[],2)); % move to image space
        cons_model_coil(:,:,:,a) = projection_model_coil;
    end

    % calculate combined model
    cons_model_coil = shiftdim(cons_model_coil,3);
    cons_model_sos = calculateSos(meanPhase, cons_model_coil);

end