袁 斌
(北京应用物理与计算数学研究所,北京 100088)
基于曲率的绘制十分有用,它可以帮助科学家分析曲率分布,设计新的计算模型。曲率可以用来表现线状特征和粒状特征。K. Gordon等在CPU中实现了基于B样条滤波的曲率计算[1],但计算速度较慢。采用 GPU可以大大加速曲率的计算。
现代 GPU已经发展成为众核处理器,具有强大的计算能力和高内存带宽。在一般的图形卡上,采用多条绘制流水线,可以对顶点(vertex)计算和片元(fragment)计算进行并行处理。采用GPU可以大大加速体绘制,如基于切片的体绘制方法[2-4]和GPU的光线投射方法[5-7]。预先计算一阶导数、二阶导数,需要占用大量的存储空间(存储梯度和Hessian矩阵),这显然是不能接受的。因此需要实时计算他们。
本文在GPU上实现了基于线性滤波的曲率计算方法和并将C.Sigg方法结合到GPU光线投射方法中,按需计算导数,曲率和光照效果。在线性滤波情况下,一阶导数和二阶导数无法精确计算,只能采用差分方法。在三三次B样条滤波条件下,可以精确计算标量,一节导数、二阶导数。本文给出有效的计算曲率的方法。设计多种关于曲率的函数,实现了交互选择曲率函数,突出感兴趣特征的方法。
S. Stegmaier给出单趟GPU光线投射方法[5]。该方法预先计算梯度并保存起来,这样必然占用大量的内存。在透视投影下,光栅化时如果直接采用线性插值,就不能正确计算片元的颜色、纹理坐标等属性,为此OpenGL对插值算法作了修正,这样它可以正确计算片元的属性[8],这是基于代理面的GPU光线投射的基础。……