首页 > 范文大全 > 正文

基于GPU加速的TIP技术

开篇:润墨网以专业的文秘视角,为您筛选了一篇基于GPU加速的TIP技术范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘 要:为加快TIP(Tour Into the Picture)的绘制速度,提出1种基于gpu(Graphics Processing Unit)的方法,充分利用GPU的运算能力,把背景纹理提取过程从CPU转移到GPU中进行,利用GPU固定管道进行TIP绘制,CPU负责前景模型的深度计算及纹理提取. 因此,CPU与GPU可以并行运算,显著提高纹理映射速度从而缩短整个TIP绘制时间,满足用户在虚拟场景中漫游的实时性要求.

关键词:TIP; 图形处理单元; 顶点着色器; 像素着色器

中图分类号:TP391.9文献标志码:A

0 引 言

近年来,虚拟现实技术一直是研究热点.如何能快速逼真地构造虚拟场景并能对其在互联网上实时漫游,始终是个难题.基于图像的建模和绘制方法大大加速虚拟场景的建模与浏览速度,而且其真实感相对也强.TIP(Tour Into the Picture)[1]基于图像绘制技术(Image-Based Rending,IBR),在数字旅游与数字娱乐等许多领域中都拥有良好的应用前景.

传统TIP方法由CPU完成所有计算任务,在一定程度上影响性能.随着图形处理器GPU(Graphical Processing Unit)性能的大幅提高,人们开始把图形处理的某些过程从CPU转向GPU;同时随着GPU可编程性的提升,人们在处理图形图像时的选择更多,灵活性大大增加.本文提出的方法就是利用GPU的可编程性,进一步加快TIP的绘制速度.

1 TIP简介及相关研究

TIP是基于IBR技术的1个独特分支.IBR技图 1 TIP绘制流程术是指充分利用图像本身所具有的真实感,发挥图像显示速度快的特点进行绘制.目前该技术已成为实现虚拟现实漫游的主要手段之一.TIP由HORRY等[1]于1997年在SIGGRAPH上首次提出,主要思想是由单幅图像出发,构造1个伪3D场景,用户漫游其中会感受到真实的场景.TIP的绘制流程见图1.

构造该3D场景,首先要恢复图像的三维模型,然后获得模型的纹理图像,进行纹理映射,最终完成整个伪3D场景的构造.三维模型的恢复分为构造前景物体模型和构造背景模型两个独立过程.前景物体模型的构造比较简单,根据事先准备好的蒙板图片和原始图像把前景纹理从原始图片中提取出来并映射到伪3D模型中即可.而背景模型的构造相对要复杂一些,HORRY提出1种类似蜘蛛网的交互建模方法,见图2.

通过用户指定的灭点和内窗口位置,得到整个背景模型的三维位置数据.整个背景图片被蜘蛛网模型分为5部分,分别对应三维模型的5个平面,即上平面、下平面、左平面、右平面和背面.三维模型构造完成后,从背景图片分别提取各个面的纹理,映射后可完成背景模型的构造.至此,整个TIP的三维场景就已完成.

由于TIP简单易行且漫游效果相对逼真,引起很多研究人员的注意,并提出许多基于TIP的改进方法.CHU等[2]对于TIP在中国画中的应用以及TIP与全景的融合方面进行较深入研究.与传统的透视艺术作品相比,该方法在单幅画里构造多个子场景,在各个场景间切换浏览并且获得非常好的艺术效果.LI等[3]把多分辨率图片引入TIP中,在TIP漫游的过程中选择最合适分辨率的图片绘制.该方法可解决视点移近时图像纹理模糊的问题.KANG等[4]提出1种简化的TIP模型,用灭线代替灭点作为蜘蛛网模型的关键元素.这样的TIP模型更加简便并可以很方便地扩展为全景图漫游.FLEISHMEN等[5]提出新的TIP扩展技术,利用照相机沿着某一路径每隔1段时间拍1张照片,然后用这一系列的参考图像生成漫游场景.吴琼玉等[6]改进TIP建模方法,使用曲线建模方法,大大扩展TIP技术的适用性.赵侃等[7]则提出1种基于相对深度计算的图像漫游技术,根据图像的几何透视关系计算出场景的背景与前景的深度关系,实现从参考图像到TIP模型的连贯切换.刘喜作等[8]改进基于单灭点的TIP模型,提出双灭点的松弛蜘蛛网格算法,显著改善图像的绘制质量,提高漫游效果.

2 用GPU加速TIP绘制的方法

随着GPU的快速发展,其可编程性得到很大提高.1999年,NVIDIA公司推出GEFORCE 256图形芯片,这是第1款集成多边形变换和光照(Transfor-

图 3 GPU可编程流水线mation & Lighting,T&L)计算的硬件,即其功能的显示核心能够分担部分原来由CPU完成的工作,随后陆续增加更多功能,大大加强GPU的处理能力.从GEFORCE 3开始,NVIDIA为GPU增加可编程模块,最初只有顶点着色器(Vertex Shader),后来又增加像素着色器(Pixel Shader).这2个可编程着色器替代原固定图形流水线中的相应处理阶段.目前的GPU可编程流水线见图3.

新图形硬件的特征[9]概括如下:(1)在顶点级和像素级提供灵活的可编程性;(2)在顶点级和像素级运算上都支持IEEE 32位浮点运算;(3)支持多遍绘制的操作,避免多次CPU与GPU之间的数据交换;(4)支持绘制到纹理的功能(Render-to-Texture/Pbuffer),从而避免将计算结果拷贝到纹理这个比较耗时的过程;(5)支持依赖纹理功能,以方便数据的索引访问,可以将纹理作为内存使用.

GPU还支持单指令多数据(Single Instruction Multiple Data,SIMD)功能.SIMD是指多个渲染管道和RGBA 4个颜色通道可同时运算,即向量运算.而CPU本质上采用标量计算模型,计算单元偏少,主要针对复杂控制和低延时而非高带宽的优化.本文利用GPU的这些功能加速基于TIP的虚拟漫游.

TIP绘制过程中由输入图像向图像平面进行投影的过程就是把输入图像的每个像素映射到参考图像相应的位置.如果该过程由CPU进行,必须串行地对图像进行逐像素的处理,且要对每个像素的颜色通道进行逐字节的映射处理.本文提出把背景纹理提取转移到GPU中进行处理的方法,利用GPU的SIMD特性并行进行映射运算.使用绘制到纹理的功能,使映射结果直接保存到纹理中,这样在主程序中可直接使用所得到的纹理进行下一步绘制.

由于前景建模需要采用FloodFill[2]算法提取前景纹理,比较耗费CPU时间;背景的5个面纹理提取同样耗时,本文提出由CPU负责前景模型的深度计算及纹理提取.这样CPU与GPU可以并行运算,大大缩短绘制的延迟时间.其流程见图4.

利用GPU进行背景纹理提取步骤为:

(1)构造渲染对象纹理.利用通过蜘蛛网格和相对深度计算方法获得的三维模型各个面的数据,分别构造背景5个面的渲染对象纹理,纹理像素数据初始化为0.以图5为例,三维模型中的右墙由8,12,4和2这4个点构成,根据计算得到该三维平面的具体大小构造1个目标纹理.因为在DirectX 9中不能直接读写渲染对象纹理,无法初始化,所以需要在系统内存中创建1个大小一致的临时纹理并进行初始化,再用DirectX函数UpdateTexture()把临时纹理数据拷贝到渲染对象纹理中,然后调用DirectX 9的函数SetRenderTarget()设置该纹理.从渲染对象纹理读取数据时用同样的方式,只是函数换为GetRenderTargetData().

(2)构造顶点缓冲区.构造1个四边形,顶点的坐标分别为(-1.0f,-1.0f),(+1.0f,-1.0f),(+1.0f,+1.0f)和(-1.0f,+1.0f);每个顶点的纹理坐标可以根据前面构造的蜘蛛网格得到.仍以图5中的右墙为例,假设输入图像的宽度为width,顶点8相对于左边图像边界的距离为d,那么该点纹理坐标u值为d/width,同理可以得到纹理坐标v值.对于顶点12要特别注意,由于该点位于输入图像的上方,所以纹理坐标v为负值.在计算得到4个顶点的纹理坐标后就可以构造顶点缓冲区.

(3)利用前面2个步骤得到的渲染对象纹理和顶点缓冲区以及GPU固定渲染管道进行图像映射,获得5个背景纹理.子线程流程见图6.

函数DrawPrimitive()运行后,纹理映射的结果就保存到指定的缓冲区中,程序随后就可以直接利用该纹理进行后边的贴图显示.

3 实验结果

把本文提出方法应用于具体的TIP绘制中去,得到比较理想的结果.实验采用的电脑配置:CPU为奔腾1.73 GHz,内存为1.5 GB(DDR2 533),显卡为ATI X300(128 MB).输入图像的分辨率为640×400.利用蜘蛛网格得到构造三维模型的参数见图7.

用纯CPU的TIP方法进行绘制,经测算,构造三维空间中右墙纹理所耗时间平均为11.81 ms(共进行5次实验);用基于GPU加速方法构造同样的TIP场景计算,同样进行5次实验,平均绘制时间为0.89 ms.

显然,基于GPU的绘制方法速度远远高于一般方法.而且,以上数据只是构造5个三维面纹理中的1个,若完全构造5个面,那么GPU方法的优势更加明显.另外,当CPU把纹理投影计算任务交给GPU完成时,自己便可以去完成其他计算任务,做到并行运算.由于实验采用的场景较简单,实际给用户的延迟并不明显.如果所需绘制的场景复杂且需经互联网传输,那么此方法的优势会更加明显.图8为实验绘制的TIP漫游场景.

4 总 结

首先简单介绍TIP绘制原理,并通过分析传统绘制方法的不足,提出基于GPU加速的tip绘制方法,把原来由CPU负责运算的纹理映射过程移到GPU中进行,利用GPU的并行运算能力,可以显著提高纹理映射速度从而减少整个TIP绘制时间,满足用户在虚拟场景中漫游的实时性要求.

本文提出利用GPU固定管道进行TIP绘制的方法,没有采用可编程的绘制管道,所以尚未充分利用GPU的运算能力和灵活性.今后的工作就是把顶点着色器和像素着色器引入绘制中,进一步减轻CPU的负担,充分利用GPU的运算能力,加强CPU与GPU的并行性运算.

参考文献:

[1] HORRY Y, ANJYO K,ARAI K. Tour into the picture: using a spidery mesh interface to make animation from a single image[C]// ACM SIGGRAPH 97 Conf Proc, Los Angeles, USA, 1997: 225-232.

[2] CHU, NELSON S H. Animating Chinese landscape paintings and panoramas[D]. Hong Kong: Hong Kong Univ of Sci & Tech, 2001.

[3] LI N, HUANG Z. Tour into the picture revisited[C]//Proc WSVG 2001, Louisville, USA, 2001: 41-48.

[4] KANG H W, PYO S H, ANJYO K, et al. Tour into the picture using a vanishing line and its extension to panoramic images[C]//Proc Eurographics 2001, Manchester, UK, 2001: 3-12.

[5] FLEISHMEN S, CHEN B, KAUFMAN A E. Navigating through sparse views[C]// Proc Symp on Virtual Reality Software & Tech 1999, London, UK, 1999: 82-87.

[6] 吴琼玉,周东翔,蔡宣平. 1种基于TIP技术的场景重建和漫游方法[J]. 计算机工程与科学, 2006, 28(4): 45-47.

[7] 赵侃,曹智清,石教英. 基于相对深度计算的图像漫游技术及其应用[J]. 计算机辅助设计与图形学学报, 2005, 17(10): 2184-2190.

[8] 刘喜作,徐晓刚,周明,等. 图像漫游:双灭点的松弛蜘蛛网格算法[J]. 中国图像图形学报, 2005, 10(3): 344-348.

[9] 吴恩华,柳有权. 基于图形处理器(GPU)的通用计算[J].计算机辅助设计与图形学学报, 2004, 16(5): 601-612.