Skip to content

MRI: Accelerated imaging in a non Cartesian trajectory

Fa-Hsuan Lin edited this page Aug 20, 2023 · 6 revisions

Here are routines to reconstruct MR images using an iterative solver. The purpose is to reconstruct images based on data encoded by either spatially linear or nonlinear gradient fields, including PatLoc or O-space imaging.

Definitions

Note: Please refer to the page for the range for k-space coordinates and the strength of spatial encoding magnetic fields (gradients).

MRI reconstruction: accelerated imaging in a non-Cartesian trajectory

Data:

Radial trajectory

This code simulated the MRI acquisition and reconstruction using a radial trajectory.

The k-space coordinates were specified here.

            %sampling of gradient-field encoded data
            for g_idx=1:1
                rr=[1:R{r_idx}(1):n_phase1];
                k_r=((rr-1)-n_phase1./2)./n_phase1.*2;
                theta=[0:R{r_idx}(2):(n_freq-1)]./n_freq.*pi;
                k_freq=[];
                k_phase1=[];
                for theta_idx=1:length(theta)
                    k_freq=cat(2,k_freq,k_r.*cos(theta(theta_idx)));
                    k_phase1=cat(2,k_phase1,k_r.*sin(theta(theta_idx)));
                end;
                K_general=[k_phase1(:) k_freq(:)];
            end;

This corresponds to the k-space sampling pattern shown below.

Here is the result of the reconstructed image over iterations.

Specifying the acceleration rate to be 2x2 down-samples the k-space data along both radial and angular directions by 2.

R={
    [2 2],
    };

Here is the result of the reconstructed image over iterations.

Spiral trajectory

This code simulated the MRI acquisition and reconstruction using a radial trajectory.

The k-space coordinates were taken from here. We arbitrarily took the first leaf of the spiral and scaled it by 0.6.

            %spiral trajectory from https://web.stanford.edu/class/rad229/Matlab.html
            load('spiral.mat');
            k_traj=ksp(:,1); %only the first leaf
 
            ...

            %sampling of gradient-field encoded data
            for g_idx=1:1
                
                kx=real(k_traj);
                ky=imag(k_traj);
                               
                kx=kx/(max(abs(real(k_traj)))).*.6;
                ky=ky./(max(abs(imag(k_traj)))).*.6;
                
                K_general=[kx(:) ky(:)];
            end;

This corresponds to the k-space sampling pattern shown below.

Here is the result of the reconstructed image over iterations.

Clone this wiki locally