MATLAB: MRI Slice image reconstruction

mri-reconstruction

Hello all,
I have an MRI K-Space data 320 x 320 x 256 x 8 (4D complex double) from < mridata.org > . The data represents 320 x 320 K-Space of 256 slices from 8 channels. I am trying to reconstruct images for each slice. Here is the matlab code I tried:
% Version - 1
kspacedata= kspacefile.kdata;
imRef = ifftshift(ifftn(kspacedata));
imSOS = squeeze(sqrt(sum( abs(imRef).^2, 4))); % sum-of-squares to combine all channels

% Version - 2
kspaceSlicedata = kspacedata(:,:,100,:);
imSliceRef = ifftshift(ifftn(kspaceSlicedata));
imSliceSOS = squeeze(sqrt(sum(abs(imSliceRef).^2, 4))); % sum-of-squares to combine all channels
% Plotting
figure;
subplot(1,2,1); imagesc(imSOS(:,:,100));title('Version - 1');axis image; colormap(gray);
subplot(1,2,2); imagesc(imSliceSOS);title('Version - 2');axis image; colormap(gray);
In Version – 1, I take inverse transform on entire kspace data and plot image data corresponding to slice 100. In Version – 2, I take kspace data corresponding to slice 100 and do inverse transform on this kspace and plot the image data. Here is the output images I obtained.
I thought both versions will reconstruct the same way. But images appeared different. How can I take kspace data corresponding to one slice and perform inverse transform to reconstruct slice image?
Thanks.

Best Answer

the version 1 is 3D FFT, and version 2 is 2D FFT. It is about the way you acquired data. version 1: encode the entire 3D space and acquire the data to fill the k space. version 2: encode the slice and acquire the slice data then you encode the next slice and acquire data. That's the difference.
Related Question