医学CT成像的迭代算法 SART和OS-SART算法

医学CT成像的迭代算法 SART和OS-SART算法

  • 前言
  • 论文连接
  • 任务描述
  • SART
  • OS-SART

前言

由测量得到的投影数据恢复到真实的CT图像,这一任务目前分为两类算法,第一种就是以反向投影FBP为主的算法,第二类则是迭代的算法(IR),本文所提到的SART和其改进版本OS-SART均为迭代算法,即需要一定的运算时间。

对于算法的证明与解析本文并不涉及,只是单纯从下面这篇论文中翻译对应的部分罢了。因为发现网上对于OS-SART的解析甚少。

论文连接

论文连接An Improved Ordered-subset Simultaneous Algebraic Reconstruction Technique

任务描述

这本质上是一个图像的重建问题,即从投影图像到真实图像的一个映射,其映射的关系需要我们重建出来,对真实模型进行合理简化,整个任务可以描述为一个线性系统:

R x = y (1) \bold{R}\bold{x}=\bold{y}\tag{1} Rx=y(1)

其中 y = ( y 1 , y 2 , . . . , y l ) T y=(y^1, y^2, ..., y^l)^T y=(y1,y2,...,yl)T是测量得到的投影数据, x = ( x 1 , x 2 , . . . , x J ) T x=(x_1, x_2, ..., x_J)^T x=(x1,x2,...,xJ)T是我们不知道的真实图片(也是要求的),我们认定 R = ( r i j ) I × J \bold{R}=(r_{ij})_{I\times J} R=(rij)I×J是响应矩阵(response matrix), r i j r_{ij} rij表示了第j个像素与第i条射线交线的长度,因此 r i j r_{ij} rij是非负的。需要注意,大部分像素并不与射线相交,故 R \bold{R} R实际上非常稀疏。

SART

算法公式如下:
x j ( l + 1 ) = x j ( l ) + λ l ∑ i = 1 I r i j R + , j ( y i − R i x ( n ) ) R i , + (2) x_j^{(l+1)} = x_j^{(l)} + \lambda_l\sum_{i=1}^I\frac{r_{ij}}{R_{+,j}}\frac{(y^i - R^ix^{(n)})}{R_{i,+}}\tag{2} xj(l+1)=xj(l)+λli=1IR+,jrijRi,+(yiRix(n))(2)
R i , + = ∑ j = 1 J ∣ r i j ∣ , i = 1 , 2 , . . . , I {R_{i,+}} = \sum_{j=1}^J|r_{ij}|, i=1, 2, ..., I Ri,+=j=1Jrij,i=1,2,...,I
R + , j = ∑ i = 1 I ∣ r i j ∣ , j = 1 , 2 , . . . , J R_{+,j}= \sum_{i=1}^I|r_{ij}|, j=1, 2, ..., J R+,j=i=1Irij,j=1,2,...,J

其中 R i R^i Ri是矩阵 R R R的第i行, λ l \lambda_l λl是对第 l l l次迭代的松弛系数。该方法实际是Landweber方法对于 R x = y Rx=y Rx=y的最小二乘解的收敛。

OS-SART

为了加速SART的迭代速率,该方法实际上可以理解为把原来一个大的计算分为好几个子集进行迭代。具体算法也是如此。

令投影数据为 y = ( y 1 , y 2 , . . . , y l ) T y=(y^1, y^2, ..., y^l)^T y=(y1,y2,...,yl)T,将这些投影数据分配到几个有序集合中: S 1 , S 2 , . . . , S T S_1, S_2, ..., S_T S1,S2,...,ST,其中 T T T是设定好是OS等级(OS level,大概意思就是要分几组),于是算法可以写成以下形式:

x j ( l + 1 ) = x j ( l ) + λ l ∑ i ∈ S [ l ] r i j ∑ i ∈ S [ l ] ( y i − R i x ( n ) ) R i , + (2) x_j^{(l+1)} = x_j^{(l)} + \lambda_l\sum_{i\in S_{[l]}}\frac{r_{ij}}{\sum_{i\in S_{[l]}}}\frac{(y^i - R^ix^{(n)})}{R_{i,+}}\tag{2} xj(l+1)=xj(l)+λliS[l]iS[l]rijRi,+(yiRix(n))(2)

其中 [ l ] = l ( m o d T ) + 1 , l ≥ T [l]=l(mod T)+1, l\geq T [l]=l(modT)+1,lT.

你可能感兴趣的:(算法)