基于GPU加速的改进的光线投射算法研究

时间:2022-08-02 08:10:03

【前言】基于GPU加速的改进的光线投射算法研究由文秘帮小编整理而成,但愿对你的学习工作带来帮助。(School of Information Engineering, Inner Mongolia University of Science and Technology, Baotou 014010, China) Abstract: The traditional volume rendering algorithms of medical image are mostly realized with CPU. In order to solve the problems...

基于GPU加速的改进的光线投射算法研究

摘 要: 传统的医学图像体绘制算法大多通过CPU端实现,为解决传统算法存在绘制时间较长,交互不够流畅,且使用平台单一等问题,提出了一种基于图形处理器(gpu)的医学序列影像的实时体绘制技术。通过对不透明度值设置阈值,提前终止光线计算,并在光线遍历体数据时,调整采样间距,改进光线投射算法。实验结果表明,对其中一组最大数据(931张切片)的绘制时间为1.3 s左右,交互时的绘制帧数在20~40之间。在绘制时间方面,不仅比传统的基于CPU的算法有大幅度提高,相比于前人的基于GPU的算法也有明显改进,加速比可以达到1.5左右。

关键词: GPU; 光线投射算法; 体绘制; 采样间距; 不透明度值

中图分类号: TN911.73?34; TP391.9 文献标识码: A 文章编号: 1004?373X(2016)21?0056?05

Study on improved ray casting algorithm based on GPU acceleration

TANG Zhenyu, L? Xiaoqi, REN Guoyin

(School of Information Engineering, Inner Mongolia University of Science and Technology, Baotou 014010, China)

Abstract: The traditional volume rendering algorithms of medical image are mostly realized with CPU. In order to solve the problems of long rendering time, poor interaction and single platform existing in traditional algorithms, a real?time volume rendering technology of medical sequence image based on graphics process unit (GPU) is put forward. With the technology, the threshold of opacity value is set to terminate the light ray early, and the sampling interval is adjusted while the light ray traversing the volume data to improve the ray casting algorithm. The experimental results show that the volume rendering time of a group biggest data including 931 slices is about 1.3 s, and the rending frame is among 20~40 while interacting. The rendering time is faster than that of the traditional algorithm based on CPU, and the speed?up ratio can reach to about 1.5.

Keywords: GPU; ray casting algorithm; volume rendering; sampling interval; opacity value

0 引 言

近年来,计算机断层技术(CT)、磁共振(MRI)和超声(US)[1]等医学影像技术快速发展。通过这些成像技术,医生能够获得病人病变组织的二维切片图像,辅助医生进行诊断和治疗。但是,这些成像技术所提供的人体二维切片图像只能表达人体病变组织的二维信息,病灶的大小和形状只能凭医生的经验去估算,此方法缺乏准确性和直观性。医学图像三维可视化技术的发展极大地改善了这种状况,医学图像三维可视化就是利用计算机将人体组织和器官的二维数字断层切片通过插值技术将其转化为具有直观立体效果的图像。

医学图像的三维可视化技术主要包括面绘制和体绘制[2]。与面绘制相比,体绘制重建出的图像效果渲染质量更高,更能清晰地展示体数据的内部细节。体绘制中最常用的算法为光线投射算法,其绘制质量高,绘制效果好,但计算量大,耗费时间长。在图像质量和绘制速度之间寻找一个最佳的解决方案,是目前三维可视化技术的研究热点。随着现代计算机图形处理器(GPU)的快速发展,其浮点运算速度已大大超过CPU,很多基于CPU实现的光线投射算法被加以改进,以便能在GPU上运行。文献[3]提出了一种基于Pixel Shader 2.0 API的多步光线投射算法。文献[4]实现了基于GPU的最大密度投影(MIP)绘制。尽管基于GPU的光线投射算法越来越成熟,绘制的效果也越来越好,但在绘制速度方面仍然有可提高的空间。本文基于GPU加速技术,实现了一种改进的光线投射算法,该算法不仅绘制效果好,而且在绘制速度上有明显提高。

1 体绘制算法的主要内容

1.1 可编程GPU的绘制管线

GPU渲染流程主要由图形绘制管线描述,即“给定视点、照明模式、三维物体、纹理和光源等元素,绘制一幅二维图像”。图形绘制管线的三个阶段为:应用程序阶段、几何阶段和光栅阶段。

(1) 应用程序阶段。使用高级编程语言进行开发,主要对内存、CPU进行操作,比如空间八叉树、碰撞检测、视锥裁剪、场景图建立等经典算法都是在这个阶段执行的。在该阶段的末端,纹理坐标、顶点坐标、纹理、法向量等几何体数据通过数据总线传送到图形硬件。

(2) 几何阶段。主要负责投影、裁剪、屏幕映射、光照以及顶点坐标的变换,该阶段主要基于GPU运行。经过投影和变换之后的纹理坐标、颜色以及顶点坐标都是通过该阶段得到。

(3) 光栅阶段。根据几何阶段输出的数据,为每一个像素进行配色,然后绘制得到完整图像。光栅阶段是对单个像素进行操作,颜色缓冲器用来存储每个像素的信息。

1.2 光线投射算法

光线投射(Ray Casting,RC)方法是一种以空间图像为序列的DVR算法,RC算法的基本原理是:首先从成像平面的每一个像素,沿着视线方向发射一条光线穿过体数据,然后在此过程中对图像序列等间距的进行重采样并获得颜色值,对获得的颜色值进行累加,当光线穿越完图像序列,最后得到的累加值就是图像最终的渲染颜色[5]。其主要流程如图1所示。

RC算法的主要技术如下:

(1) 数据分类

三维数据场中的数据分类就是对多种不同的物质用不同的数值表示。在医学图像中,比如肾脏、骨骼、肌肉、皮肤等不同的组织器官具有不同的密度,因此其图像的CT值也不一样。对数据进行分类,是医学图像三维重建的一个十分重要的环节。只有分类准确,才能在后续的图像处理中得到较好的效果。一般来说,一个组织器官的图像中往往会有不同的CT值,而具有相同CT值的像素也会存在于不同组织器官的图像中,所以有时会需要人工对数据进行分类。

本文采用阈值分界法对医学图像的三维体数据进行分类。其原理就是根据人体器官和组织,为医学三维数据场中的数据点设置一些阈值分界点[dii=1,2,…,n]。假设数据点的像素值为[f(xi,yj,zk),]那么可以把满足式(1)的数据点归入到同一类中。

(2) 颜色赋值

一般来说,体绘制的结果显示的图像要具有一定的透明效果,以便更直观地展示内部结构,所以要给体素赋予一定的不透明度值[a,]当[a=1]时表示图像完全不透明,当[a=0]时表示图像完全透明。如果一个体素包含了多种物质,可以利用各种物质所占的百分比来表示该体素的颜色值。假设第[i]种物质所占的比例为[pi,]那么第[i]种物质的颜色值可以表示为[Ci=(aiRi,aiGi,][aiBi,ai),]该体素的最终颜色值就可以表示为:

(3) 明暗计算

因为体绘制中没有面的信息,因此体绘制中要求先算出法向量才能进行明暗计算。在体绘制中数据点的法向量用梯度值代替。假设三维数据场中某个数据点的函数值为[f(xi,yj,zk),]那么就可采用如式(3)所示的中心差分法求出此数据点处的梯度值。

[Grad_x=f(xi+1,yj,zk)-f(xi-1,yj,zk)2ΔxGrad_y=f(xi,yj+1,zk)-f(x,yj-1,zk)2ΔyGrad_z=f(xi,yj,zk+1)-f(xi,yj,zk-1)2Δz] (3)

各数据点的梯度值求出后,就可以利用光照模型计算出各个数据点的漫反射分量,也就更能够突显体数据中的边界面。

(4) 图像合成

图像合成是RC算法的最后一步。其主要原理为:根据像素点所发出的射线,此射线穿过三维体数据并进行采样,然后计算该采样点的不透明度值和颜色值,最后通过相关公式合成该像素点的最终颜色值。要想形成最终的图像,需要计算屏幕中所有的像素点的颜色值。体绘制中主要有两种图像的合成方法。

① 由前向后的图像合成

该算法通过沿着射线把各采样点的不透明度值和颜色值由前往后的合成在一起,得到最终的图像。假设[aout]和[Cout]分别是经过第1个体素后的不透明度值和颜色值,[ain]和[Cin]分别是进入第[i]个体素的不透明度值和颜色值,[aout]和[Cnow]分别为第[i]个体素的不透明度值和颜色值,则有:

[Coutaout=Cinain+Cnowanow(1-ain)aout=ain+aout(1-ain)] (4)

② 由后向前的图像合成

[Cout=Cin(1-anow)+Cnowanow] (5)

可以看出,这两种图像合成方法符合光学的吸收和反射模型,实质上是一致的。其中,由前向后图像合成过程中阻光度是逐渐增大的。如果阻光度的值接近于1,就表明该像素点几乎为不透明,那么就可以把后面的像素点忽略掉。所以,由前向后的图像合成方法效率更高,速度较快。本文采用由前向后的图像合成方法。

2 改进的光线投射算法

采用RC算法生成的图像质量较高,绘制效果好,但计算量大,耗费时间长。即使采用高性能的GPU进行图形硬件加速,有时依然达不到所要求绘制的时间。这时就需要在算法方面进行加速优化,以满足实时性的要求。目前最常用的两种方法为:无效体素剔除法(Empty Skipping and Occlusion Clipping)[3,6]和提前光线终止法(Early Ray Termination)[5?6]。本文实现的是提前光线终止法。

2.1 无效体素剔除法

一些体素值转化为光学特性后,并不会显示,也不会影响最终图像的合成,这些体素称为空体素。三维体数据中一般都存在一定数量的空体素。所以,通过剔除冗余体素,不让其进入到GPU的渲染管线中,从而达到加速绘制的效果。

2.2 提前光线终止法

通过式(5)可以看出,在像素混合迭代求解的过程中,不透明度[a]的值是逐渐增大的,当[a]的值接近1时,表示该光线对像素值的计算结果趋近于饱和,即使继续采样,最终的像素值也几乎不会受到影响。因此,可以采用提前终止光线计算的方法,这样可以提高整体绘制的时间。可以设置一个阈值,只要[a]的值超过这个阈值,就终止光线,本文设置的阈值为0.95。同时,与自适应加速采样法结合,即当光线遍历体数据时,如果碰到无效的采样点,就适当增加采样的间距,降低重采样的频率,如果碰到有效采样点,就恢复重采样频率。通过将提前光线终止法与自适应采样加速法结合,可以进一步提高整体绘制的时间。流程图如图2所示。

(1) 通过投射光线对体数据进行重采样,获得体素的值并进行数据分类。

(2) 判断体素值是否有效。如果无效,则增大采样间距,并转到(5);如果有效,则采用原采样间距,并进行下一步。

(3) 对采样点进行颜色赋值和明暗计算,并进行图像合成。

(4) 判断不透明度值[a]是否大于阈值,如果没有大于阈值,则继续重采样;如果大于阈值,则转到(6)。

(5) 判断光线是否穿出包围体,如果没有穿出,则继续重采样;如果穿出,则进行下一步。

(6) 根据累加的颜色值,合成最终图像。

3 GPU加速光线投射算法

RC算法在GPU上实现的关键是能够利用GPU完成对体数据的遍历、采样和计算,并将得到的采样值进行混合,以产生最终的重建结果[7?9]。此部分通过Cg语言和OpenGL编写的顶点程序和片段程序实现。Cg语言是为GPU编程设计的高级着色语言,而OpenGL扩展则提供了可操作GPU的编程接口。顶点程序主要负责射线发出的方向和设置顶点的位置以及变换顶点坐标、顶点颜色和纹理坐标。而片段程序主要负责核心算法,即改进的光线投射算法。通过可编程GPU编写着色器,可以非常灵活方便地实现各种绘制效果。本文通过结合GPU加速技术和改进的光线投射算法实现了最大密度投影绘制(Maximum Intensity Projection,MIP)[10]以及合成体绘制(包括骨骼、皮肤、肌肉等)[11]。不同的绘制方法分别对应不同的组织结构。

3.1 最大密度投影绘制

最大密度投影就是通过计算每条射线所遇到的最大像素密度确定最终图像的颜色值和不透明度值。图像效果可以反映组织密度的差异,对比度高,常应用于密度相对较高的组织结构。用基于GPU的光线投射算法实现最大密度投影算法的原理为:计算发射光线与体数据相交时的最大密度值,并把值赋予该像素。如图3所示。

MIP绘制的效果如图4所示。

3.2 合成体绘制

合成体绘制是最常用的一种光线投射方法。其原理为:通过顶点程序把体数据值转换成颜色值和不透明度值等光学属性,并将这些属性值合成到屏幕上的像素中形成最终图像。如果改变颜色值和不透明度值的参数,就能实现不同的绘制效果,比如骨骼、肌肉等。

绘制显示效果如图5所示。

4 绘制速度对比

实验数据采用Philips公司Brilliance iCT设备产生的人体数据。计算机配置为Intel[?] CoreTM i7?3770 CPU @3.40 GHz;显卡为AMD HD 7470,1 GB显存;内存为3.49 GB;Windows 7 32位操作系统;开发平台为Eclipse Luna Service Release1(4.4.1)。绘制时间通过测量十次取平均值得到,绘制帧数采用第三方软件Fraps测量得到。

耳部数据集的大小为828 MB,头部数据集的大小为477 MB,脚踝数据集的大小为75 MB。通过表1可以看出,绘制时间上,基于GPU的算法明显快于基于CPU的算法,而本文实现的基于GPU改进的光线投射算法要优于传统的GPU算法,最大加速比达到1.79。同时可以看出,数据集越大,基于GPU的加速效果越明显。

5 结 语

随着现代医学成像设备的发展,其所生成的医学图像数据越来越庞大,传统的基于CPU的体绘制算法已不能满足医学临床需求,基于GPU的医学图像处理算法逐渐成为目前研究的热门领域。本文在Eclipse平台下,基于GPU加速,结合改进的光线投射算法,实现了最大密度投影绘制以及合成体绘制。Eclipse是一个兼容Windows系统和Linux系统的平台,基于Eclipse平台开发的程序移植也比较方便。通过结论可以看出,绘制效果已能满足医学临床实践的需求,且绘制速度上比传统的GPU算法有明显的提升。下一步的研究工作主要为完善程序的功能,实现更多的优化算法,并对各种算法进行优缺点的比较。

参考文献

[1] KUTTER O, SHAMS R, NAVAB N. Visualization and GPU?accelerated simulation of medical ultrasound from CT images [J]. Computer methods and programs in biomedicine, 2009, 94(3): 250?266.

[2] 常旖旎,鲁雯,聂生东.医学图像三维可视化技术及其应用[J].中国医学物理学杂志,2012,29(2):3254?3258.

[3] LI W, MUELLER K, KAUFMAN A. Empty space skipping and occlusion clipping for texture?based volume rendering [C]// Proceedings of 2003 the 14th IEEE Visualization Conference. Washington, D. C.: IEEE, 2003: 1?8.

[4] KRUGER J, WESTERMANN R. Acceleration techniques for GPU?based volume rendering [C]// Proceedings of 2003 the 14th IEEE Visualization Conference. Washington, D. C.: IEEE, 2003: 287?292.

[5] LEVOY M. Efficient ray tracing of volume data [J]. ACM tran?sactions on graphics, 1990, 9(3): 245?261.

[6] HADWIGER M, LJUNG P, SALAMA C R, et al. Advanced illumination techniques for GPU volume raycasting [C]// Procee?dings of 2008 ACM Siggraph Asia Courses. [S.l.]: ACM, 2008: 163?166.

[7] 胡剑,王明泉,侯慧琳,等.使用 GPU 编程的工业CT断层图像三维可视化技术[J].应用科技,2011,38(5):61?65.

[8] 康健超,康宝生,冯筠,等.一种改进的基于 GPU 编程的光线投射算法[J].计算机工程与应用,2012,48(1):199?201.

[9] 林碧英,陈达峰.基于GPU的三维数据场等值面绘制[J].中国电力教育,2008(z3):402?404.

[10] 诸葛斌,冯焕清,周荷琴.基于有序体数据的最大密度投影算法[J].中国科学技术大学学报,2003,33(4):473?479.

[11] 吕晓琪,张传亭,侯贺,等.基于图形处理器加速光线投射算法的多功能体绘制技术[J].计算机应用,2014,34(1):135?138.

[12] WANG X H, GOOD W F. Real?time stereographic rendering and display of medical images with programmable GPUs [J]. Computerized medical imaging and graphics, 2008, 32(2): 118?123.

上一篇:西宁市园林绿地养护管理中存在的问题及对策 下一篇:浙江大学农业试验站(农业科技园)体制机制调研...