传统的层析重建技术,通常是利用软件编程在计算机上直接完成,这要花费很长的时间,无法满足实时重建时对速度的要求,现在已有研究者开始着手研究在硬件(例如FPGA和DSP)上来实现层析重建技术,例如:在FPGA上实现ART算法。但是,由于ART算法在重建图像时对噪声的抑制能力较差,迭代格式复杂,且有除法运算,用FPGA实现起来较为复杂。同时迭代重建算法--SIRT能够有效抑制测量误差的影响,迭代格式简单,得到广泛应用,但该法用FPGA(现场可编程逻辑门阵列)来实现时,牵涉到小数运算问题。因为在FPGA中数据都是以二进制形式参与存储、运算的,小数计算问题是FPGA应用中的一大难点,目前业界用FPGA来处理小数大都采用定点处理,这种方法行之有效,但应用范围很有限,对于在层析重建中的小数,采用定点运算是无法处理的。
本文提出一种处理小数的方法,即把将要参与运算的数据转化为IEEE标准754的二进制单精度浮点数,然后调用Altera开放的浮点数运算IP核对数据进行运算,Altera提供的IP核是Altera公司经过严格测试和优化过的电路功能模块,在设计项目时调用IP核既减少了设计中的工作量,又在一定程度上节省了芯片资源,为迭代层析实时重建提供了可能。SIRT算法较ART算法迭代格式简单,且更易减小重建误差,提高重建速度,更适用于实时重建。FPGA在设计时采用Verilog编程和调用Altera的开放IP核相结合的方法来实现,软件设计和综合模拟仿真在QuartusⅡ5.1开发平台中完成,最后给出了一些模块仿真的波形。
2 SIRT算法
SIRT算法的迭代格式为:
物理意义为:取测量向量的反投影作为初始图像,在求k+1次估计F(k+1)时,利用k次估计F(k)加上校正图像。校正图像正比于第k次估计的误差矢量的反投影WT*(P-W*F(k))。因而每个像素的校正值实际是通过该像素的所有射线和的误差值之累加,而不是只与一条射线有关,这也是SIRT能有效地抑制测量数据中噪声的根本原因。由于每一像素的校正值是所有过该像素射线的共同贡献,一些随机误差被平均掉了,因此SIRT的校正过程被称为逐点校正。其中松弛因子的选取,会对误差收敛曲线产生影响,如果环境不变,松弛因子可以固定。 3 IEEE754对浮点数的规定
标准浮点数字长由一个符号位S、指数E和无符号(小数)的规格化尾数M构成。其格式如下:
考虑一个由一位符号位,E=8位指数宽度和M=23位的尾数(不包括隐藏的1)组成的浮点数表达式。现在来研究545.2510在单精度浮点数格式下的表达形式。由bias=2E-1-1计算偏移量如下:
定义二进制浮点数算法的IEEE754-1985标准还定义了一些其他有用的特殊数的处理,例如溢出和下溢。指数E=Emax=1…12与0尾数m=0组合是为∞保留的,0是用0指数E=Emin=0…02和与0尾数m=0编码的,注意由于有符号尾数表达式、正零和负零编码是不同的,在IEEE754标准中还定义了两个特殊数,但在FPGA浮点数算法中通常都不支持这些其他的表达式。这些其他数字是非正规数和(denormal)NaNs(not a number,非数字)。
4小数的预处理
IP核



