3. MRI重建中的傅里叶变换工程实现
在MRI重建链路中,k空间采样数据与图像域像素之间由二维傅里叶变换对连接。工程实现上,我们不会真的去计算连续积分,而是把离散采样点交给FFT/IFFT。但“调用一次FFT”远不等于“得到正确图像”:采样轨迹是否落在规则网格、相位方向是否一致、零填充与缩放是否处理得当,都会直接改变最终图像。本节围绕k空间到图像域的数值细节展开,重点讲清FFT/IFFT的工程约定、非笛卡尔采样下的网格化(gridding)与去网格化(degridding),以及如何判断结果是否可信。
一、FFT/IFFT的工程约定:先定符号与缩放
MRI重建中常用约定是:图像域 I(x,y) 经二维傅里叶变换得到k空间 S(kx,ky),重建时对采样数据做逆变换。不同软件库对正变换与逆变换的符号、归一化因子定义不同,工程上必须固定一套约定并贯穿始终。以常见的实现为例:
# 约定:k空间 -> 图像域使用 ifft2,并做 fftshift 把零频移到中心
# 假设 ksp 为 [Ny, Nx] 的复数k空间数据,已按 ky 行、kx 列排列
img = np.fft.ifft2(np.fft.ifftshift(ksp))
img = np.fft.fftshift(img) # 将零频移到图像中心,便于观察
img = img * (Nx * Ny) # 若库的 ifft 自带 1/N 归一化,需乘回总点数
这里有两个容易出错的点。第一,fftshift 与 ifftshift 的方向:如果k空间采集时零频位于矩阵中心,进入FFT前必须用 ifftshift 把零频移到左上角,变换后再用 fftshift 移回中心;若顺序颠倒,图像会出现半个视野的平移。第二,归一化:NumPy的 ifft2 默认除以 Nx*Ny,而某些GPU库或C++实现不除,重建后整体亮度会差一个总点数因子。工程上建议在重建入口处显式记录“是否已归一化”,并在输出前统一乘回,避免后续定量分析(如SNR、T1拟合)被整体缩放污染。
二、规则笛卡尔采样:FFT直接可用,但要注意零填充
笛卡尔采样是最常见的情形:k空间按等间距 Δkx、Δky 采样,重建直接对补零后的矩阵做IFFT。零填充(zero-padding)不是“提高分辨率”,而是对图像做sinc插值,使像素网格更密、边缘更平滑。例如原始矩阵 256×256,补零到 512×512 后IFFT,图像仍是同一物理视野,但像素间距减半。判断零填充是否合理,可以看两点:一是图像边缘是否出现明显截断振铃,二是补零后像素值是否出现负值或过冲。若原始数据已加窗,补零带来的振铃会被抑制;若未加窗,补零只会让Gibbs伪影更显眼。
三、非笛卡尔采样:网格化与去网格化的核心作用
当采样轨迹为径向、螺旋或随机轨迹时,采样点不在规则网格上,不能直接调用FFT。此时需要网格化:把非均匀采样点“搬”到规则网格上,再对规则网格做FFT/IFFT。去网格化则是反向操作,用于把规则网格上的数据插值回非均匀轨迹,常见于迭代重建中的正向算子与伴随算子。工程实现中,网格化通常包含三步:密度补偿、卷积插值、网格FFT。
密度补偿用于修正采样密度不均。径向轨迹中心采样密、边缘稀疏,若不补偿,重建图像中心会过亮、边缘会过暗。常用做法是按轨迹半径计算密度权重 w(k),在网格化前乘到采样值上。卷积插值则用一个紧支撑核(如Kaiser-Bessel核)把每个非均匀点扩散到邻近的规则网格点。核的宽度与形状决定插值精度与计算量:核越宽,精度越高,但每个点影响的网格数越多。工程上常用核半径2~4个网格点,配合过采样因子1.5~2.0,即把规则网格建得比目标图像矩阵更大,以减少混叠。
四、数值细节:从采样到图像的完整链路
把上述步骤串起来,一个典型的非笛卡尔重建流程是:读取轨迹与采样数据 → 计算密度补偿权重 → 将每个采样点用卷积核扩散到过采样规则网格 → 对网格做IFFT → 裁剪到目标矩阵并做fftshift → 输出图像。若用于迭代重建,还需要实现去网格化:给定规则网格上的估计图像,通过同样的核插值出非均匀轨迹上的预测值,与实测值比较后更新图像。正向算子与伴随算子的核必须一致,否则迭代不收敛。
数值上还有两个细节值得注意。第一,网格化后的数据是复数,卷积核通常为实数且归一化,保证总能量守恒;若核未归一化,重建图像整体亮度会随核宽度变化。第二,过采样网格的尺寸通常取目标矩阵的1.5~2倍,且最好为2的幂或5的倍数,以便FFT库高效计算。裁剪时只取中心目标矩阵大小的区域,相当于在图像域做低通滤波,抑制网格化引入的高频混叠。
五、结果判断与常见问题
重建完成后,判断结果是否可信可以从三个层面看。第一,背景区域:若背景出现明显条纹或网格状纹理,通常是网格化核太窄或过采样不足。第二,图像中心与边缘的亮度一致性:若中心过亮,说明密度补偿不足;若边缘噪声异常放大,说明补偿过度。第三,与笛卡尔参考重建对比:在相同采样时长下,非笛卡尔重建的分辨率与伪影水平应接近参考,若出现明显模糊或重影,需检查轨迹方向与FFT符号约定是否一致。
总结来说,FFT/IFFT在MRI重建中不是黑盒。笛卡尔采样下要管好零填充、fftshift和归一化;非笛卡尔采样下要管好密度补偿、卷积核、过采样和去网格化。把这些数值细节固定成可复现的工程约定,才能让k空间到图像域的转换稳定、可解释、可验证。