表格 2.2 分析法计算重构体素值的公式
分析 FDK
= 在坐标系 中的体素值
= 在探测器中的坐标系
= 射线源到物体中心的距离
= 射线源到探测器中心的距离
= 高通滤波器
= 旋转角度 下的投影
由于三维重构算法巨大的计算量,为了降低运算时间,采用CPU和GPU(图像处理器)并用。适合GPU的编程语言为OpenGL。分别采用CPU和GPU做三维重构,在结果差异可以忽略的情况下,采用GPU的运行速度大致是CPU的2000倍。原因是CPU处理的最小单位是一个体素,而GPU是一张纹理。
从 [1] 中我们能知道,用SART-,SMART-,MLEM-方法采用GPU做三维重构,将分四个计算步骤(投影,校正,逆投影和更新)。通过表格2.1中公式的对比就能发现它们最根本的区别在于,SART的更新步骤是做加法运算,而SMART和MLEM是做乘法运算。这些算术运算采用Shader-程序(OpenGL Shading 语言)可以很容易的得以实现。表格2.2中的插图描述了FDK算法的几何结构。这种分析的算法只有两个计算步骤(逆投影和更新)。每张投影会首先进行一次信号过滤,然后向被检测物体做逆投影,最后执行更新。在具体的编程中,是首先将所有接收到的投影进行Cos-加权变换和高频滤波(Rampen-Filter[7]),这些运算都是发生在频谱范围内。最后剩下的两个运算步骤(逆投影和更新),在GPU上运行,与SART算法类似。
2.2 变化重构法
变化重构法,实际上是在传统重构法之后增加一个评估的步骤,即将重构后的所有体素分成“好”和“坏”两组。只有那些“坏”的体素将继续重复进行重构,来提高重构质量。所以这种变化重构法只适合表格2.1中的重复叠代的方法。下图2.2分别是传统法和变化法的程序流程。
图 2.1 传统法 (左) 和变化法 (右)
: 所有体素
: “好”的重构体素
: “坏”的重构体素
在编程中变化重构法是通过λj 来实现的,以下以SART算法为例:
“好”的重构体素用λj = 0 标记,vj(k+1) = vj(k)
“坏”的重构体素用λj = 1 标记,vj(k+1) = vj(k) + Δvj(k+1)
表格 2.1 变化法计算重构体素值的公式
重复叠代 SART
SMART
MLEM
N
P
k+1
vj
pi
wij
λ
λj = 被重构物体的体素个数
= 投影像素的个数
= 当前重构次数
= 第j 个体素值
= 在投影中第i个像素的明暗值
= 第j个体素在第i条光线下的加权系数
= 张弛因素
= 二进制系数,用来控制变化重构法
3 重构体素值的标准化
在重构之前必须定义一个重构体积的棱长和总的体素的个数。根据章2.1所介绍的过程,被检测物体将在这个体积里被重构。因此这个体积的每个体素在重构之后具有一个相对应的值。
表格 3.1 SART-算法重构
体积精度: 64×64×64 Voxel
体积大小: 1,0×1,0×1,0 mm
圆形轨迹: 360° xy-平面
yz-平面
xz-平面
表格3.1描述了被检测物体“空心球”重构后的三个切平面。沿着xy-平面中的箭头,其体素值的曲线如下图所示。
图 3.1 沿xy-平面中箭头的体素值
从图3.1可以看出,圆环重构后的平均体素值约为0.051。但是实际的体素值为3.3。为了能使这两个值相互比较,需要将重构后的体素值标准化。首先也是以这个“空心球”作为被检测物体,改变其实际体素值,然后按四种不同的算法做一次重构。对应的重构后的体素值记录在下表中。
表格 3.2 “空心球”圆环重构后的体素值
实际体素值 重构后体素值
SART SMART MLEM FDK
0 0 0 0 0
0,5 0,008 0,01 0,01 0,25
1 0,015 0,017 0,017 0,54
1,5 0,024 0,028 0,028 0,75
2 0,031 0,035 0,035 1,155
2,5 0,039 0,043 0,043 1,5
3 0,048 0,0535 0,0537 1,83
3,3 0,051 0,06 0,06 1,9
3,5 0,054 0,063 0,063 2
4 0,062 0,071 0,07 2,2
4,5 0,071 0,078 0,078 2,5
5 0,078 0,093 0,092 2,8
5,5 0,087 0,098 0,098 3
6 0,095 0,104 0,103 3,4
6,5 0,102 0,109 0,109 3,7
7 0,111 0,125 0,127 4,09
7,5 0,118 0,133 0,134 4,3
8 0,126 0,14 0,14 4,5
9 0,14 0,16 0,16 5,1
10 0,156 0,18 0,183 5,72
借助软件“MATLAB”能根据表格3.2中离散的数值得到一条渐近线,把被检测物体实际的和重构后的体素值之间的最佳关系反映出来。
3.1 SART-算法的标准化
图 3.2 渐近线-SART
“MATLAB”将对图3.2中的红线自动生成公式:
(3.1)
其中f(x)是重构后的体素值,x是实际体素值。很明显,重构后的体素值与实际体素值成正比。分母64正好等于重构前定义的体积的层数(64×64×64 Voxel)。所以推测,SART-方法中实际体素值平分于重构前定义体积的每一层,如图3.3。
为了验证上述推测,需要对同一个被检测物体定义不同精度的重构体积做三维重构。图3.4描绘了三条分别沿着表格3.3中箭头的重构值曲线。
表格 3.3 不同体积精度的重构-SART
体积大小: 1,0×1,0×1,0 mm 圆形轨迹: 360° 实际体素值: 3,3
体积精度 32×32×32 Voxel 64×64×64 Voxel 128×128×128 Voxel
xy-平面
图 3.4 不同体积精度的重构值曲线-SART
一个32×32×32 Voxel的体积由32层组成。从图3.4可以看出,重构体素值与重构体积的层数成反比。
接下来保持层数(精度)不变,只改变重构体积的棱长,对应的重构值曲线如图3.5所示。
表格 3.4 不同体积棱长的重构-SART
体积精度: 64×64×64 Voxel 圆形轨迹: 360° 实际体素值: 3,3
体积大小 1,0×1,0×1,0 mm 2,0×2,0×2,0 mm 3,0×3,0×3,0 mm
xy-平面
图 3.5 不同体积棱长的重构值曲线-SART
从图3.5可以看出,重构体素值还与重构体积的棱长成正比。这是之前推测的补充。
最后需要研究,不同角度的圆形轨迹是否对重构体素值有影响。改变圆形轨迹的角度范围,对应的沿着表格3.5中箭头的重构值曲线如图3.6所示。
表格 3.5 不同角度的圆形轨迹的重构-SART
体积精度: 64×64×64 Voxel 体积大小: 1,0×1,0×1,0 mm 实际体素值: 3,3
圆形轨迹 180°
(32 张投影) 270°
(48 张投影) 360°
(64 张投影)
xy-平面
图 3.6 不同角度的圆形轨迹的重构值曲线-SART
从图3.6可以看出,圆形轨迹角度范围的大小不影响重构体素值,因为SART-算法属于重复叠代的方法。唯一的区别在于,小角度与大角度的圆形轨迹相比,需要更多的重构次数,直到两者的重构体素值都接近理想值。
总结:SART中被检测物体的重构体素值(vj)与实际体素值(pha),棱长(length)成正比,与重构体积的层数(lengthvox)成反比。用公式表达:
(3.2)
因此重构体素值的标准化公式为:
(3.3)
3.2 SMART- 和MLEM-算法的标准化
SMART- 和MLEM-算法都属于重复叠代的方法,所以对于标准化来说,他们和SART算法具有同样的属性。在运行重构的四个步骤之前,所有的投影必须进行Cos-加权变换。但是与SMART和MLEM相比,SART要额外再做一次单独的投影更新,所以公式3.3对于SMART和MLEM的标准化来说不是完全适应。推测其中相差一个系数。根据表格3.2中SMART和MLEM的数据,借助软件“MATLAB”,得到如图3.7的渐近线和相对应的公式3.4:
三维重构技术在X光检测领域中的匹配和评估(二)由毕业论文网(www.huoyuandh.com)会员上传。