Variable Density sampling and Radial view-ordering (VDRad) MATLAB DEMO

For 3D Cartesian imaging, we focus the design of the data acquisition scheme on achieving motion-robustness and ideal undersampling patterns for accelerated imaging techniques. The technique that we have developed is the variable density sampling and radial view-ordering, VDRad for short. For more information, please see Ref. 1.

This DEMO creates the Fig. 9 shown in Ref. 1 using the VDRad sampling/ordering scheme. The goal of of this DEMO is to illustrate the flexiblity of the sampling pattern and ordering. The sampling patterns are designed for a $256\times256$ matrix. The main matlab function used to generate these example sampling patterns is vo_vdrad. For more details about specific parameters, see help vo_vdrad.

The VDRad scheme also has a temporal component. To see the temporal component, use the matlab function vo_drawordertrain. See the specific help descriptions for more details.

References:

  1. Cheng JY, Zhang T, Ruangwattanapaisarn N, Alley MT, Uecker M, Pauly JM, Lustig M, Vasanawala SS. Free-breathing pediatric imaging with nonrigid motion correction and acceleratedion. J Magn Reson Imaging 2014. Accepted Oct 6, 2014.
  2. Cheng JY, Zhang T, Alley MT, Lustig M, Vasanawala SS, Pauly JM. Variable-density radial view-ordering and sampling for time-optimized 3D Cartesian imaging. In Proceedings of the ISMRM Workshop on Data Sampling and Image Reconstruction, Salt Lake City, Utah, USA, 2013.
  3. Winkelmann S, Schaeffter T, Koehler T, Eggers H, Doessel O. An optimal radial profile order based on the Golden Ratio for time-resolved MRI. IEEE Trans Med Imaging 2007; 26:68–76.

Return to software.

(c) Joseph Y. Cheng (jycheng@mrsrl.stanford.edu) 2013.

Contents

We first setup the library and a number of common parameters.

addpath mlib; % location of matlab functions

fov   = [300 300]; % field of view (in [mm])
msize = [256 256]; % matrix size
tl    = 24;        % spoke train length
ncal  = 24;        % calibration region diameter
nph   = 1;         % number of temporal phases

Example 1: Elliptical sampling density

To generate an elliptical sampling density, the function for $k_r$ is as follows:

$$k_r(k_y,k_z) = \sqrt{(\alpha k_y)^2 + k_z^2}.$$

Setup parameters:

param_a = {'type', 'ellipse',... % default
           'corner',    1,...    % default (corner cut ON)
           'cornercal', 1,...    % default (corner cut calib ON)
           'spiral',    0,...
           'demo',      1};
acc_a = [2 2];
[yo_a,zo_a] = vo_vdrad(fov,msize,acc_a,ncal,tl,nph,param_a);

Example 2: Elliptical sampling density with a spiral twist

Function for $k_r$ is the same as Example 1. To add the spiral twist, the following function for $k_\theta$ is used:

$$k_\theta(k_y,k_z) = \arg\left\{(\alpha k_y + i k_z)\times e^{i2\pi\beta
k_r(k_y,k_z)}\right\}$$

Setup parameters:

param_b = {'type', 'ellipse',... % default
           'corner',    1,...    % default (corner cut ON)
           'cornercal', 1,...    % default (corner cut calib ON)
           'spiral',   20,...    % degree of spiral twist
           'demo',      2};
acc_b = [2 2];
[yo_b,zo_b] = vo_vdrad(fov,msize,acc_b,ncal,tl,nph,param_b);

Example 3: Ellipitical sampling density (anisotropic) with a spiral twist

Function for $k_r$ and $k_\theta$ are the same as Example 1 and Example 2 respectively. Here, an anisotropic sampling density is used ($\alpha\neq1$).

Setup parameters:

param_c = {'type', 'ellipse',... % default
           'corner',    1,...    % default (corner cut ON)
           'cornercal', 1,...    % default (corner cut calib ON)
           'spiral',   20,...
           'demo',      3};
acc_c = [4 2];
[yo_c,zo_c] = vo_vdrad(fov,msize,acc_c,ncal,tl,nph,param_c);

Example 4: Square sampling density (anisotropic)

To generate a square sampling density, the function for $k_r$ is as follows:

$$k_r(k_y,k_z) = \max\left\{|\alpha k_y|, |k_z|\right\}$$

Setup parameters:

param_d = {'type', 'square',...
           'corner',    0,...
           'cornercal', 0,...
           'spiral',    0,...
           'demo',      4};
acc_d = [4 2];
tl_d = 23; % change spoke number for aesthetic reasons
[yo_d,zo_d] = vo_vdrad(fov,msize,acc_d,ncal,tl_d,nph,param_d);

Example 5: Triangle sampling density (anisotropic)

To generate a triangle sampling density (separable sampling density), the function for $k_r$ is as follows:

$$k_r(k_y,k_z) = |\alpha k_y| + |k_z|$$

Setup parameters:

param_e = {'type', 'triangle',...
           'corner',    0,...
           'cornercal', 0,...
           'spiral',    0,...
           'demo',      5};
acc_e = [4 2];
tl_e = 23; % change spoke number for aesthetic reasons
[yo_e,zo_e] = vo_vdrad(fov,msize,acc_e,ncal,tl_e,nph,param_e);

About

This DEMO is for illustration purposes only. Please let me know if you have suggestions or see any errors/bugs. Thanks!

disp(sprintf('This DEMO was generated on %s.',date));
This DEMO was generated on 16-Oct-2014.