3. 锥束CT重建与FDK算法

扇束CT把X射线限制在一个薄层内,探测器只接收该层投影;锥束CT则让X射线源发出一个锥形束,平板探测器一次采集就能覆盖多排甚至整个体积。这带来两个直接后果:一是扫描效率大幅提高,旋转一圈即可获得三维投影数据;二是重建问题从二维反投影变成三维反投影,射线不再共面,经典滤波反投影不能直接照搬。FDK算法正是为解决圆轨迹锥束重建而提出的近似方法,由Feldkamp、Davis和Kress在1984年给出,至今仍是医用和工业锥束CT最常用的重建算法之一。

锥束几何与坐标约定

先固定参照系,全文及图示保持一致。设旋转轴为z轴,射线源S在半径为R的圆轨迹上运动,源到旋转中心的距离为R,源到探测器平面的距离为D。探测器为平板,其横轴u对应扇角方向,纵轴v对应锥角方向。被扫描物体置于旋转中心附近,体素坐标记为(x, y, z)。

锥束与扇束的本质差别在v方向:扇束中所有射线位于同一平面,而锥束中同一投影行内的射线在v方向有不同倾角。当射线偏离中心平面越远,锥角越大,投影数据与物体真实线积分之间的偏差也越大。这个偏差正是锥角伪影的根源,也是FDK只能近似重建的原因。

锥束几何与FDK重建流程 源圆轨迹 R 旋转中心 O 源 S 平板探测器 u 横轴 / v 纵轴 锥角 2γ 被扫描物体 FDK 重建链路 锥束投影 P(β,u,v) β 为旋转角 余弦加权 cosθ 补偿射线倾斜 斜坡滤波 h(u) 沿 u 方向卷积 加权反投影 1/L² 距离加权 三维体数据 f(x,y,z) 锥角伪影需评估 锥角伪影判据 锥角 γ 越大、物体在 z 方向越厚,FDK 近似误差越明显:表现为上下端面模糊、杯状伪影、密度偏移。 工程上常用指标:中心平面重建与边缘平面重建的差异、HU 值随 z 的漂移量、边缘体素的振铃幅度。 缓解手段:减小锥角(增大 R 或减小探测器 v 覆盖)、采用半扫描/短扫描、改用迭代或精确锥束算法。

FDK近似原理

FDK的核心思想是把三维锥束问题拆成“先滤波、再反投影”的两步,并在每一步引入近似。第一步,对每个投影视角β下的投影数据P(β,u,v)做余弦加权,权重为D/√(D²+u²+v²),用来补偿射线相对于中心平面的倾斜;随后沿u方向做斜坡滤波,滤波核与二维扇束滤波反投影相同。第二步,把滤波后的投影按锥束几何反投影回三维体素,每个体素累加所有经过它的射线贡献,并乘以1/L²的距离加权因子,L为源到体素的距离。

需要明确:FDK不是精确重建。它假设物体在z方向变化缓慢,且锥角足够小,使得不同倾斜角的射线可以用同一套滤波结果近似。当锥角增大或物体在z方向剧烈变化时,近似误差会以伪影形式显现。理解这一点,比记住公式更重要。

圆轨迹FDK实现要点

实际实现时,投影数据通常按角度索引存储为三维数组,尺寸为[Nβ, Nu, Nv]。重建体数据尺寸为[Nx, Ny, Nz]。关键参数包括源到中心距离R、源到探测器距离D、探测器像素间距du和dv、旋转角步长Δβ。下面给出一个简化的重建循环骨架,用于说明数据流与索引关系:

for beta in range(Nbeta):
    proj = data[beta]                      # 形状 [Nv, Nu]
    cos_w = D / sqrt(D**2 + u**2 + v**2)   # 余弦加权
    proj = proj * cos_w
    proj = ramp_filter(proj, du)           # 沿 u 方向斜坡滤波
    for each voxel (x, y, z):
        u_p, v_p = project(x, y, z, beta)  # 锥束投影坐标
        L2 = distance_sq(source, voxel)
        f[x,y,z] += proj[v_p, u_p] / L2    # 加权反投影
f *= dbeta * D / 2                      # 角度与几何归一化

实现中最容易出错的是投影坐标u_p、v_p的计算和插值。由于体素投影到探测器上通常落在非整数位置,需要双线性插值;若插值方式与滤波核不匹配,会出现条纹或分辨率下降。另一个常见问题是角度归一化因子漏乘,导致重建值整体偏大或偏小,表现为HU值不准确。

锥角伪影分析

锥角伪影的典型表现有三类。第一类是上下端面模糊:远离中心平面的层重建清晰度下降,边缘出现拖尾。第二类是杯状伪影:均匀圆柱体在横截面上呈现中心低、边缘高的灰度分布,类似杯口。第三类是密度漂移:同一材料在不同z位置的CT值不一致,影响定量分析。

判断锥角伪影是否可接受,可以做一个简单实验:用均匀圆柱体模体扫描,分别取中心平面和边缘平面重建,比较两者的均值与标准差。若边缘平面均值相对中心平面偏移超过预设阈值(例如5 HU),或标准差明显增大,说明锥角影响已不可忽略。此时应优先考虑减小锥角,而不是盲目增加迭代次数。

半扫描与短扫描重建

圆轨迹FDK通常需要360°完整投影。但在某些场景下,例如C形臂或滑环受限,只能获得180°加扇角的短扫描数据。此时若直接套用FDK,反投影覆盖不全,会出现明显条状伪影。半扫描重建的思路是对冗余射线做加权,使180°加扇角的数据等效于完整扫描。常用权重函数在扫描两端做平滑过渡,避免数据突变。

短扫描的代价是噪声和伪影水平通常高于全扫描,且对角度范围精度更敏感。工程上需要确认实际采集角度是否覆盖180°加扇角,并检查权重函数是否在两端正确归零。若角度范围不足,任何后处理都无法完全弥补缺失的投影信息。

实际锥束数据重建任务

假设拿到一组工业锥束CT投影数据,参数为:源到中心R=600 mm,源到探测器D=900 mm,探测器2048×2048,像素间距0.2 mm,旋转360°,共1200个视角。重建目标为512×512×512体素,体素尺寸0.1 mm。任务可以按以下顺序推进:

  1. 读取投影数据,确认角度序列是否等间隔、是否有坏帧或暗场未校正。
  2. 做暗场与亮场校正,把原始灰度转为线积分。
  3. 按FDK流程做余弦加权、斜坡滤波、加权反投影,输出三维体数据。
  4. 取中心层和边缘层分别查看,评估锥角伪影程度。
  5. 若边缘层伪影明显,尝试减小重建z范围或改用短扫描加权,比较效果。

结果判断上,先看中心层是否清晰、有无明显条纹;再看边缘层是否出现杯状或模糊;最后用已知尺寸的标记物测量几何精度。若中心层正常而边缘层异常,问题多半在锥角近似;若所有层都有条纹,则应检查滤波核、插值和角度归一化。重建不是一次调参就结束,而是根据伪影形态反推环节,逐步收敛到可接受的结果。