4. 迭代重建基础与代数方法

解析重建(FBP)把投影数据视为连续 Radon 变换的采样,通过滤波反投影一次性求出图像。迭代重建则把成像问题写成线性方程组 Ax = b:x 是待求的 N 维像素向量,b 是 M 维投影测量向量,A 是 M×N 的系统矩阵,元素 a_ij 表示第 j 个像素对第 i 条射线的贡献(即射线穿过该像素的路径长度)。迭代法从一个初始图像出发,反复用当前估计做前投影、与实测投影比较、再把误差反投影回去修正图像,直到满足收敛条件。它的优势在于:可以在迭代中引入噪声统计模型、非负约束、先验正则,因而在低剂量、稀疏视角、金属伪影等病态条件下通常优于 FBP。

Kaczmarz 迭代与 ART

Kaczmarz 方法是最基础的代数迭代格式。它每次只取一个方程(一条射线),把当前解投影到该方程对应的超平面上:

x^(k+1) = x^(k) + λ · (b_i − a_i·x^(k)) / ||a_i||² · a_i^T

其中 a_i 是系统矩阵第 i 行,b_i 是第 i 条射线的测量值,λ 是松弛因子。ART(Algebraic Reconstruction Technique)就是按射线逐条更新的 Kaczmarz 迭代。它的几何含义是:每次修正只让当前图像满足一条射线的投影约束,逐条扫过全部射线称为一轮(one sweep)。ART 收敛快,但结果对射线访问顺序敏感,且噪声下容易震荡。

SIRT 与 SART

SIRT(Simultaneous Iterative Reconstruction Technique)把一轮内所有射线的修正量先累加、再统一更新,等价于对全部方程做一次最小二乘梯度下降:

x^(k+1) = x^(k) + λ · C · A^T · R · (b − A·x^(k))

其中 R 是按射线归一化的对角矩阵(通常取 1/行和),C 是按像素归一化的对角矩阵(通常取 1/列和)。SIRT 每轮只更新一次,稳定性好、噪声抑制强,但收敛慢,且趋于平滑、丢失细节。SART(Simultaneous Algebraic Reconstruction Technique)是折中方案:把投影按固定角度分块,块内所有射线同时更新(类似 SIRT),块间顺序推进(类似 ART)。它兼顾了 ART 的收敛速度和 SIRT 的抗噪能力,是工程中最常用的代数迭代格式之一。

ART / SIRT / SART 更新策略对比 ART(逐射线) 取第 i 条射线 a_i, b_i 计算残差 b_i − a_i·x 立即更新 x i → i+1,下一射线 每轮更新 M 次 收敛快 · 对顺序敏感 噪声下易震荡 λ 通常取 0.1 ~ 1.0 SIRT(全同步) 遍历全部射线求残差 累加 A^T·R·(b − A·x) 乘 C 归一化后统一更新 进入下一轮 每轮更新 1 次 稳定 · 抗噪强 收敛慢 · 偏平滑 λ 通常取 0.5 ~ 2.0 SART(分块) 按角度分块(如每 20°) 块内射线同时更新 块间顺序推进 下一块 每轮更新 块数 次 速度与抗噪折中 工程最常用 λ 通常取 0.5 ~ 1.5

松弛因子与收敛性

松弛因子 λ 控制每次修正的步长。λ 过大,迭代会在真解附近来回跳甚至发散;λ 过小,收敛极慢。对 Kaczmarz/ART,理论上 0 < λ < 2 可保证收敛(在无噪声、相容方程组下),工程中常取 0.1~1.0;SIRT 的稳定区间更宽,常取 0.5~2.0。收敛判据一般用相邻两轮图像的相对变化或投影残差范数:

||x^(k+1) − x^(k)|| / ||x^(k)|| < ε   或   ||b − A·x^(k)|| / ||b|| < ε

典型 ε 取 1e-3 ~ 1e-4。需要注意:迭代法在噪声数据下并非收敛到真解,而是先逼近真解、随后被噪声主导而恶化,因此实际中常采用“早停”(early stopping)——在残差下降到某个平台前停止,或结合正则化项抑制噪声放大。

投影与反投影算子的实现

迭代重建的性能瓶颈在 A 和 A^T 的反复作用。工程上不显式存储 M×N 的 A,而是用“前投影”和“反投影”两个算子按需计算。常用实现有:

  • 像素驱动(ray-driven):沿每条射线步进,累加所穿像素的贡献,适合前投影。
  • 体素驱动(voxel-driven):对每个像素,找出所有穿过它的射线并累加,适合反投影。
  • 距离驱动(distance-driven):按射线与像素边界的交叠长度加权,精度高、伪影少,是 CT 中较常用的方案。

实现时要注意:前投影与反投影必须使用同一套几何模型(同一 A),否则迭代不收敛或收敛到错误结果。一个简化的距离驱动前投影伪代码如下:

for each ray i:
    for each pixel j crossed by ray i:
        w = overlap_length(i, j)      # 射线与像素交叠长度
        b[i] += w * x[j]              # 前投影
# 反投影(A^T):
for each ray i:
    r = b_meas[i] - b[i]              # 残差
    for each pixel j crossed by ray i:
        back[j] += w * r / row_sum[i] # 加权反投影

低剂量数据重建对比

低剂量 CT 的投影数据光子数少、噪声重,FBP 会因滤波放大高频噪声而产生明显条纹和斑点。迭代法通过约束和统计模型可显著抑制噪声。以下为教学示例(非实测),在 256×256 图像、180 个视角、加入泊松噪声条件下,各方法的典型表现趋势:

方法每轮更新次数噪声抑制细节保持收敛速度典型 λ
FBP—差好一次完成—
ARTM(射线数)中好快0.1~1.0
SIRT1强偏平滑慢0.5~2.0
SART块数较强较好较快0.5~1.5
工程建议:低剂量数据优先选 SART 或带正则的 SIRT;若追求速度且噪声可控,可用 ART 配合早停;无论哪种方法,前投影与反投影必须共用同一几何模型,并监控残差曲线判断是否早停。

实际调参时,可先固定 λ 跑 20~50 轮,观察残差范数曲线:若曲线持续下降后趋于平台,说明接近收敛;若曲线震荡上升,说明 λ 过大或噪声主导,应减小 λ 或提前停止。对 SART,块大小(每块包含的投影角度数)也影响结果:块越小越接近 ART,块越大越接近 SIRT,通常取每块 10°~30° 作为起点。