MRI切片图像重建

信息处理 matlab IFFT
2022-02-06 06:29:54

我有一个来自 < mridata.org > 的 MRI K 空间数据 320 x 320 x 256 x 8(4D 复数双精度)。数据代表来自 8 个通道的 256 个切片的 320 x 320 K 空间。我正在尝试为每个切片重建图像。这是我试过的matlab代码:

% 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);

在版本 - 1 中,我对整个 kspace 数据进行逆变换,并绘制对应于切片 100 的图像数据。在版本 - 2 中,我取对应于切片 100 的 kspace 数据,并对这个 kspace 进行逆变换并绘制图像数据。这是我获得的输出图像。

在此处输入图像描述

我认为两个版本都会以相同的方式重建。但图像看起来不同。如何获取一个切片对应的kspace数据并进行逆变换来重建切片图像?

谢谢。

1个回答

这两种重构通常都是有效的。在 MRI 中,图像可以在多个 2D 切片中获取,也可以作为 3D 体积获取。

在切片中采集数据时,您将对每个切片(以及每个通道,如果它是多通道线圈)的 k 空间进行 2D 傅里叶变换。然后你会像你一样以平方和的方式对通道数据求和。结果将是重建的切片。

当以真正的 3D 模式获取数据时,您没有单独的 k 空间,而只有一个大的 k 空间。要重建此数据,您将对 k 空间进行 3D 傅立叶变换(如果线圈有多个通道,则对每个通道单独执行此操作)。在对通道进行平方和求和后,您已经重建了整个体积。

如果您的数据是在 2D 或 3D 模式下采集的,您可以轻松检查:获取 k 空间数据的绝对值。如果您的数据中只有一个最大值(一个 DC 分量),则数据是以 3D 形式采集的。如果有多个相同数量级的最大值(每个切片一个),则以 2D 模式获取数据。

请注意,您不能通过对每个切片应用 2D FFT 来替换 3D FFT。这就是你的第二次重建失败的原因。查看与您显示的内容的正交“切片” - 您将清楚地看到典型的 k 空间调制,中间具有最大强度。

希望有帮助。