一种基于图形处理芯片的视觉凸壳加速绘制方法

文档序号:6517222阅读:173来源:国知局
专利名称:一种基于图形处理芯片的视觉凸壳加速绘制方法
技术领域
本发明属于计算机图形学和虚拟现实技术领域,具体涉及一种基于图形处理芯片(Graphics Processing Unit-GPU)的视觉凸壳加速绘制方法。
背景技术
在计算机图形学中,传统的三维场景的绘制技术是基于几何模型的绘制技术。它将场景描述成一系列基本的几何基元,然后定义光源的分布与性质,物体表面材质与反射特性,最后通过绘制公式的计算产生出虚拟的图像。这种技术不但计算量大,而且很难逼真的再现真实物体的纹理效果和光照效果。
随着虚拟现实技术的发展,出现了基于图像的绘制技术。这种技术避免了复杂的建模过程,直接利用采集的图像来绘制三维场景。它的优点在于能够更加逼真的再现三维场景的光照效果。例如,文献“Image-Based Visual Hulls.”(Matusik,W.,Buehler,C.,Raskar,R.,Gortler,S.,and McMillan,L.SIGGRAPH 2000,July23-28,2000,369-374)提出了一种基于图像的三维物体的分布式绘制方法。
这种方法没有计算出物体的完整的三维模型,而是在绘制每帧图像时,根据视点的位置和所采集的图像的三维位置,计算出视觉图像上的象素点和采样图像上的象素点之间的对应关系,并通过一定的融合方法绘制出最终的视觉图像。由于这种方法需要处理的图像数量很大,以及对实时性的要求,文献中给出一种分布式的实时绘制系统。此系统虽然可以实现动态物体的实时绘制,但是所需的硬件和实现方式相当复杂。
由此可以看出,虽然基于图像绘制技术具有一定的优点,但是它需要实时地处理大量的图像,因此运算缓慢。
为了从硬件上提高图形计算的速度,现在已经出现了很多可编程的图形处理芯片。这种芯片与计算机中传统的中央处理器(CPU)不同,它虽然没有CPU的功能强大,不具有通用性,但是它对图形处理的操作具有更快速度,和更强大的并行机制。这主要表现在,GPU可以在显卡的存储单元中对三维模型进行两方面的可编程操作,它包括对模型顶点的变换,以及模型栅格化后的颜色处理。随着硬件技术的发展,GPU的可编程能力也越来越强,所使用的编程接口也越来越规范。这些都为基于图像的三维模型的加速绘制提供了可能。

发明内容
本发明的目的是针对目前大多数基于图像的绘制方法速度较慢的问题,提出了一种基于GPU的视觉凸壳加速绘制方法。这种方法结合了传统绘制方法和基于图像绘制方法的优点,并且能够充分利用GPU的并行运算能力来进行加速绘制,实现对真实静态物体的实时显示。
为达到上述目的,本发明采用的技术方案是一种基于GPU的视觉凸壳加速绘制方法,包括以下几个步骤1)生成基于图像的视觉凸壳模型。
我们使用基于图像的方法生成视觉凸壳模型。首先对特定的物体进行拍照,然后对所得的图像进行相机标定。最后根据图像的三维位置信息和物体在图像中的轮廓信息计算出物体的视觉凸壳模型。
2)生成基于图像的纹理信息。
保存步骤1)中所采集的所有图像,同时保存通过相机标定计算出的图像三维位置信息。这些信息将作为模型绘制阶段的纹理信息使用。
3)初始化GPU的运行环境。
将纹理信息输入GPU的存储器中。同时对GPU的可编程单元进行功能设定,包括两方面顶点处理单元的功能设定和纹理处理单元的功能设定。
4)加载视觉凸壳模型,并进行加速绘制和显示。
将步骤1)中生成视觉凸壳模型输入GPU的存储器中,同时将浏览视觉凸壳模型时的视点信息输入GPU的存储器中。然后利用GPU的并行能力进行加速绘制,生成最终的视图。
本发明的优点在于将传统的基于几何模型的绘制方法和基于图像的绘制方法相结合,以达到对三维物体的真实的绘制效果。本方法使用的图像采集设备简单,只需普通的照相机即可,无需三维扫描仪等昂贵的采集设备;本方法在相机标定,视觉凸壳的生成,纹理融合方面都是全自动的,无需手工干预;同时,由于使用真实照片作为模型纹理,并且借助图形硬件的加速功能,本方法达到了逼真的绘制效果和高效的绘制速度。


下面结合附图对本发明进一步详细地说明图1是基于GPU的视觉凸壳加速绘制方法流程示意图;图2是视觉凸壳的生成过程示意图;图3是用于相机自动标定的平面控制面板示意图;图4是拍摄图像时的相机位置分布示意图;图5a是拍摄的图像示意图;图5b是对拍摄图像进行分割处理后的结果示意图;图6是视觉凸壳生成原理示意7是GPU加速绘制的流程示意图;图8是基于GPU的视觉凸壳加速绘制结果示意图。
最佳实施例详细描述下面参照本发明的附图,更详细地描述本发明的最佳实施例。
图1显示了本发明所提出的一种基于GPU的视觉凸壳加速绘制方法的具体流程。下面结合图示对本发明的具体实施方式
作进一步详细地描述本发明所提出的一种基于GPU的视觉凸壳加速绘制方法,包括以下几个步骤1)生成基于图像的视觉凸壳模型。即使用基于图像的方法提取出物体的视觉凸壳模型。这一步骤的流程如图2所示。具体包括以下步骤a)制作相机标定的控制场。
制作控制场的过程就是在被拍摄的物体的周围标定一些控制点,并记录下控制点在世界坐标系中的三维坐标的过程,这些控制点将用于相机参数的计算。不同的控制场具有不同的优点,例如三维控制场(所有的控制点不在一个平面上)可以获得较高的标定精度。但是,在实际中,选择平面控制场(所有的控制点都在一个平面上)更方便,因为从多个角度拍摄物体的时候,平面控制场不会遮挡被拍摄的物体。图3是我们使用的平面控制场,它是有一系列独立的纯色同心圆组成,我们需要记录每个同心圆的圆心位置。
b)拍摄图像,并对每幅图像进行相机位置的标定。
将目标物体放在控制场中,然后从不同角度对物体进行拍照。为了采样均匀,图像之间的角度间隔应该近似一致,图4显示了一系列拍摄的图像的三维位置。
为了自动的进行相机标定,首先通过图像分割的方法从图像中自动的提取出同心圆的圆心点,然后根据它的实际的三维位置,对每幅图像进行相机位置的标定。
c)制作侧影图像。
侧影图像就是已经分割出了目标和背景的图像。图像分割是一个比较复杂问题,它与图像中目标和背景的颜色信息有很大的关系,因此,很难设计出一种通用的图像分割方法。所以,我们使用手工的方法来对图像进行分割。图5a是一幅拍摄的图像,图5b是进行图像分割后的结果,我们将背景都填充为白色。
d)生成物体的视觉凸壳模型。
当有了标定信息和侧影图像后,我们就可以计算出物体的模型。如图6所示,每个侧影图像中的物体的轮廓和它的相机位置都构成了一个视线锥体,所有的锥体的交集就是目标物体的视觉凸壳,所以我们使用三维求交的方法就可以计算出目标物体的视觉凸壳。我们使用三角形网格模型表示物体。
整个步骤1)中对相机进行标定的方法,我们采用的是基于平面标志的标定方法。为了能够自动完成控制点的提取,我们将控制点设计为纯色同心圆。同时事先确定控制点坐标,以便实现整个标定过程的自动化。
2)生成基于图像的纹理信息。
这一步骤中保存的图像纹理信息,我们直接使用采集的图像作为绘制时的纹理图像,增强了绘制结果的真实感。
保存步骤1)中生成的的所有侧影图像,同时保存通过相机标定计算出的图像三维位置信息。这些信息将作为模型绘制阶段的纹理信息使用。
3)初始化GPU的运行环境这部分的步骤包括以下几步a)传递参数信息为了进行纹理的实时绘制,我们需要将步骤2)中记录的纹理图像信息,以及图像的三维位置信息输入到GPU的存储器中。同时,为了实现模型的三维浏览,我们也需要将视点的位置信息传入GPU。
b)对GPU的顶点处理单元进行功能设定。顶点处理单元的功能是根据模型和纹理图像的三维位置信息,计算出模型中每个顶点的纹理坐标和纹理权重。对顶点处理单元的功能设定包括模型顶点的三维位置信息的计算方法,顶点的纹理坐标的计算方法。
①计算模型中每个顶点在纹理图像上的纹理坐标的过程就是将每个顶点投影到纹理图像上的过程,其公式如下x=AR(X-T)其中,A,R,T分别表示投影,旋转和平移变换。x表示计算出的纹理坐标它的表达形式如下x=[u v 1]T其中,u,v为图像的平面坐标,单位是像素。
在计算机图形语言OpenGL中,纹理坐标的值是在
之间的,所以我们可以将计算出来的投影坐标变换到
之间,公式如下tx=u/widthty=v/height其中,width为纹理图像的宽度,height为纹理图像的高度。
②计算不同纹理图像的权重。
模型中的某一个顶点在不同的纹理图像中有不同的纹理坐标和纹理值。为了在绘制过程中进行加权平均,需要计算出每个顶点针对不同纹理图像的权值。
在计算中,权值的确定应满足的条件是离视线越近的纹理图像其权值越大。设Va,Vb为输入的两个纹理图像的相机拍摄方向,设Vn为视线方向。那么权值的计算公式为Wa=1/arccos(Va·Vn)Wb=1/arccos(Vb·Vn)
其中,·代表两个矢量的点积。
c)对GPU的纹理处理单元进行功能设定。纹理处理单元的功能就是从纹理图像中提取纹理值,并进行融合。在三维浏览时,为了实现不同纹理图像之间的平滑过渡,我们利用加权平均的方法对与视点最临近的两幅纹理图像进行融合。融合的权值根据纹理图像位置和视点的位置来确定。纹理融合的公式为Cf=[Σk=1NWk*Tk]/ΣΣk-1NWk]]>其中Tk是第k幅纹理图像的纹理颜色值,Wk是第k幅纹理图像的权值。
4)加载视觉凸壳模型,并进行加速绘制和显示。
我们利用步骤3)中设定的GPU的功能自动地对视觉凸壳模型进行绘制和显示。图7是GPU加速绘制的流程图。我们将视觉凸壳数据输入GPU的存储器中,GPU就会自动的根据步骤3)中输入的纹理图像信息和标定数据,首先执行顶点处理单元所设定的功能实现模型的三维变换和纹理坐标的计算,然后执行纹理处理单元所设定的功能实现纹理的融合,最后输出绘制出的视觉图像。图8是本方法的加速绘制的结果。
由以上的实施步骤可以看出,在本方法中,手工操作只在于图像的采集,以及目标和背景分割,相机标定,视觉凸壳的生成和绘制都是全自动的;同时,由于使用真实照片作为模型纹理,并且借助图形硬件的加速功能,本方法达到了逼真的绘制效果和高效的绘制速度。
尽管为说明目的公开了本发明的具体实施例和附图,其目的在于帮助理解本发明的内容并据以实施,但是本领域的技术人员可以理解在不脱离本发明及所附的权利要求的精神和范围内,各种替换、变化和修改都是可能的。因此,本发明不应局限于最佳实施例和附图所公开的内容。
权利要求
1.一种基于图形处理芯片的视觉凸壳加速绘制方法,具体包括以下步骤1)生成基于图像的视觉凸壳模型;2)生成基于图像的纹理信息;3)初始化图形处理芯片的运行环境;4)加载视觉凸壳模型,并进行加速绘制和显示。
2.如权利要求1所述的基于图形处理芯片的视觉凸壳加速绘制方法,其特征在于,生成基于图像的视觉凸壳模型的步骤具体如下a)制作相机标定的控制场;b)拍摄图像,并对每幅图像进行相机位置的标定;c)制作侧影图像;d)生成物体的视觉凸壳模型。
3.如权利要求1所述的基于图形处理芯片的视觉凸壳加速绘制方法,其特征在于,生成基于图像的纹理信息具体步骤如下直接使用采集的图像作为绘制时的纹理图像,保存步骤1)中所采集的所有图像,同时保存通过相机标定计算出的图像三维位置信息。
4.如权利要求1所述的基于图形处理芯片的视觉凸壳加速绘制方法,其特征在于,初始化图形处理芯片运行环境的具体步骤如下a)传递参数信息;b)对图形处理芯片的顶点处理单元进行功能设定;c)对图形处理芯片的纹理处理单元进行功能设定。
5.如权利要求1所述的基于图形处理芯片的视觉凸壳加速绘制方法,其特征在于,步骤4)的具体内容为将步骤1)中生成视觉凸壳模型输入图形处理芯片的存储器中,同时将浏览视觉凸壳模型时的视点信息输入图形处理芯片的存储器,然后利用图形处理芯片的并行能力进行加速绘制,生成最终的视图。
6.如权利要求4所述的基于图形处理芯片的视觉凸壳加速绘制方法,其特征在于,对顶点处理单元的功能设定包括模型顶点的三维位置信息的计算,和顶点的纹理坐标的计算。
全文摘要
本发明提出了一种基于GPU的视觉凸壳加速绘制方法,本发明采用的技术方案包括以下几个步骤1)生成基于图像的视觉凸壳模型。2)生成基于图像的纹理信息。3)初始化GPU的运行环境。4)加载视觉凸壳模型,并进行加速绘制和显示。本发明将传统的基于几何模型的绘制方法和基于图像的绘制方法相结合,以达到对三维物体的真实的绘制效果。本方法使用的图像采集设备简单,只需普通的照相机即可,无需三维扫描仪等昂贵的采集设备;本方法在相机标定,视觉凸壳的生成,纹理融合方面都是全自动的,无需手工干预;同时,由于使用真实照片作为模型纹理,并且借助图形硬件的加速功能,本方法达到了逼真的绘制效果和高效的绘制速度。
文档编号G06T15/10GK1667652SQ200510011579
公开日2005年9月14日 申请日期2005年4月15日 优先权日2005年4月15日
发明者周秉锋, 安维华, 章卫祥 申请人:北京大学, 北京北大方正技术研究院有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1