= 在坐标系 中的体素值 = 在探测器中的坐标系 = 射线源到物体中心的距离 = 射线源到探测器中心的距离 = 高通滤波器 = 旋转角度 下的投影
由于三维重构算法巨大的计算量,为了降低运算时间,采用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:
首页 上一页 1 2 3 4 5 下一页 尾页 2/5/5 相关论文
首页 上一页 1 2 3 4 5 下一页 尾页 2/5/5