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, Alley MT, Uecker M, Pauly JM, Vasanawala SS, Lustig M. Free-breathing pediatric imaging with nonrigid motion correction and accelerated imaging. Magn Reson Med 2013. Submitted.
  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.

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 23-Jul-2013.