MATLAB中执行ifft2后MRI图像四分的原因及解决方法
问题成因
四分块错位是MRI k空间重建时频移操作缺失的典型表现:
- MRI设备导出的原始k空间数据,默认将能量最高的直流分量(即k空间中心,对应图像的亮度基准)存放在矩阵四个角的位置,而非矩阵几何中心
- MATLAB内置
ifft2函数默认将输入矩阵的(1,1)索引位置作为零频基准执行变换,直接传入角点存储零频的原始k空间时,本该集中在图像中心的能量会被拆分到四个象限,最终输出四块错位的分块图像。该问题和线圈数量、是否存在欠采样无关,哪怕是单线圈全采样数据,不做频移直接重建也会出现完全一致的异常。
修复方法
在逆傅里叶变换前后补充对应频移操作即可,注意调用顺序不能颠倒:
- 先对单通道原始k空间调用
ifftshift,把存放在矩阵角落的k空间零频点移到(1,1)位置,匹配ifft2的输入规则 - 对移位后的k空间数据执行
ifft2,得到复数域的变换结果 - 对逆变换输出调用
fftshift,把图像零频分量移回矩阵几何中心,得到方位正确的线圈图像
修正后的可运行代码:
for i =1:8 % 频移顺序:ifftshift调整k空间零频位置 -> ifft2做逆变换 -> fftshift归位图像中心 raw_i = fftshift(ifft2(ifftshift(kspace(:,:,i)))); imshow(abs(raw_i),[]); end
注意:如果你的k空间数据此前已经被做过
fftshift处理、零频点已经处于矩阵中心,可跳过第一步的ifftshift,直接做ifft2后再fftshift即可。但绝大多数设备直接导出的原始k空间都未做过前置移位,必须按上述顺序处理。
内容的提问来源于stack exchange,提问作者talkingPotato
相关产品推荐
相关产品推荐

