We solve both by using the NFFT 3.0 library of S. Kunis and D. Potts. The NFFT 3.0 which includes the NFFT as well as the inverse NFFT can simply be used for both approaches.

For more information please read related paper.

From the MR Research Center at the University of Aarhus (Denmark) and from Philips Research (Hamburg, Germany) we got real-life data from a MRT scanner.

The above picture shows the reconstructed data of Philips Research. Please click on the images to see all slices.

For numerical results we used a 3-dimensional shepp-logan phantom as example. The left picture shows the original phantom of size 256*256*36. The right picture shows the image we reconstructed with SPIRAL data and Voronoi weights after ten iteration. Please click on the images to see all 36 slices.

18th slice of the phantom (left) and the profile of the 128th row of this slice (right) after

64th slice of the 128x128x128 phantom (left) and the profile of the 64th row of this slice (right) after

18th slice of the phantom (top) and the profile of the 128th row of this slice (bottom) after

64th slice of the phantom (top) and the profile of the 64th row of this slice (bottom) with 3d-RADIAL data and

64th slice of the phantom (top) and the profile of the 64th row of this slice (bottom) with 3d-RADIAL data and

18th slice of the phantom (top) and the profile of the 128th row of this slice (bottom) after

18th slice of the phantom (top) and the profile of the 128th row of this slice (bottom) after

18th slice of the phantom (top) and the profile of the 128th row of this slice (bottom) after

18th slice of the phantom (top) and the profile of the 128th row of this slice (bottom) after

18th slice of the phantom (top) and the profile of the 128th row of this slice (bottom) after

18th slice of the phantom (top) and the profile of the 128th row of this slice (bottom) after

% N is the number of points per row /column, Z is the number of slices. % First we construct the Phantom. Then we construct the nodes and compute % the k-Space data of the phantom. Next we compute the weights. The reconstruction follows. % Then we visualize the phantom and compute the signal to noise ratio. N = 256; Z = 36; construct_phantom(N,Z); M = construct_nodes_radial(N); system(['./construct_data ' 'output_phantom_nfft.dat ' int2str(N) ' ' int2str(M) ' ' int2str(Z)]); precompute_weights('output_phantom_nfft.dat',M); system(['./reconstruct_data_2+1d ' 'output_data_phantom_nfft.dat ' ... int2str(N) ' ' int2str(M) ' ' int2str(Z) ' 1 1']); visualize_phantom('pics_2+1d/pic', N,Z); snr('pics_2+1d/snr.txt');