首页> 中国专利> 一种双目系统中基于GPU的实时绘制方法

一种双目系统中基于GPU的实时绘制方法

摘要

本发明涉及一种双目系统中基于GPU(图形处理器)的实时绘制方法。本发明在双目系统的发送端绘制出空洞掩膜图像并提取大空洞的纹理信息,然后在系统的接收端利用提取的纹理信息填充大空洞,同时利用插值算法填充小空洞;本发明采用GPU加速虚拟视点图像的绘制,首先利用CUDA(通用并行计算架构)技术将每个像素投影到三维空间,然后应用OpenGL(开源的图形程序接口)技术将三维空间中的像素投影到二维平面完成虚拟视点图像的绘制。本发明大幅度提高了绘制的速度,合成的新视点图像在主、客观质量上达到了较好的效果,可实现双目系统的实时绘制。

著录项

  • 公开/公告号CN102930593A

    专利类型发明专利

  • 公开/公告日2013-02-13

    原文格式PDF

  • 申请/专利权人 上海大学;

    申请/专利号CN201210366761.X

  • 发明设计人 郑专;安平;邬芙琼;王奎;张兆杨;

    申请日2012-09-28

  • 分类号G06T15/20(20060101);

  • 代理机构上海上大专利事务所(普通合伙);

  • 代理人何文欣

  • 地址 200444 上海市宝山区上大路99号

  • 入库时间 2024-02-19 17:52:51

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-01-13

    授权

    授权

  • 2013-03-20

    实质审查的生效 IPC(主分类):G06T15/20 申请日:20120928

    实质审查的生效

  • 2013-02-13

    公开

    公开

说明书

技术领域

本发明涉及一种双目三维视频系统中基于深度图像的绘制技术,特别是一种双目系统中基于GPU(图形处理器)达到实时的绘制方法。

背景技术

3DTV(三维电视)是立体显示技术的主要应用之一,其典型的系统组成如下:视频采集,编码传输,接收端解码,3D(三维)场景重建和3D显示。传统的电视系统只需要传输一路视频,而3DTV系统则需要传输两路或者多路的视频,但是考虑到相机的成本和带宽的限制,只能传输有限的视频,因此在终端进行虚拟视点绘制显得尤为重要,同时3D场景重建的好坏也直接关系到整个3DTV系统的好坏。虚拟视点绘制可以通过两类技术完成:MBR(基于模型的绘制)和IBR(基于图像的绘)。MBR需要场景复杂度的实验模型,主要用以3D游戏和纯虚拟场景的创建,并不适合动态场景的绘制;IBR则利用二维图像作为数据源来生成虚拟视点图像,并不需要复杂的3D场景信息。在众多IBR技术中DIBR(基于深度的图像绘制)技术由于其绘制的图像的真实性和其操作的简单性,使之成为最为行之有效的虚拟视点绘制的方法,因此DIBR更适合于3DTV系统终端的绘制。

DIBR利用参考视点图像和其对应的深度图像把各个像素投影到3D空间,从而为每一个像素建立一个简单的3D场景模型;然后把这个简单的3D场景模型投影到虚拟摄像机图像平面,进而完成了虚拟视点的绘制,整个过程即三维图像变换。理论上DIBR能利用一路纹理图像和其对应的深度图像绘制出任意虚拟视点,但是DIBR存在空洞问题。空洞问题主要是由于参考视点图像不可能包含3D场景所有的信息,应用DIBR绘制虚拟视点时,由于虚拟视点相对于参考视点存在水平位移,可能使得一些物体在虚拟视点中是前景而在参考视点中却是背景,而参考视点的纹理图像并不提供任何关于背景物体的信息,因此在虚拟视点中产生了空洞。“一路纹理+一路深度”和“两路纹理+两路深度”是目前主要的虚拟视点绘制方法。“一路纹理+一路深度”方法是通过对纹理图像和其对应深度图像执行一次三维图像变换直接得到虚拟视点图像;而“两路纹理+两路深度”则是通过执行两次三维图像变换,然后再进行视点融合,最后得到虚拟视点图像。因此“一路纹理+一路深度”方法得到虚拟视点的空洞明显多于“两路纹理+两路深度”所得到的绘制结果。目前,深度图像预处理、三维图像变换和图像修复是绘制虚拟视点图像的三个主要步骤。深度图像预处理主要采用高斯平滑滤波、中值滤波和一些平滑边缘的滤波器,这些深度图像预处理的方法能够一定程度上减少虚拟视点图像中空洞的产生,但同样也对虚拟点图像产生了几何畸变。图像修复算法能有效的填充虚拟视点的空洞,但是其算法复杂度极高,很难应用到实时的3DTV系统中。另外,通过LDI(分层深度图像)也能够有效的填充空洞,它允许在相应的层存储空洞的像素,这样空洞就可以利用这些像素来填充,但是LDI不仅增加计算的复杂度而且耗费带宽严重。

发明内容

本发明旨在提供一种双目系统中基于GPU的实时绘制方法,利用空洞图像空洞分布的特点、GPU并行计算的能力和DIBR技术高度并行性的特点,在保证合成新视点图像在主、客观质量上达到较好效果的同时,大幅度提高绘制的速度。

为达到上述目的,本发明的构思是:

首先在双目系统的发送端绘制出空洞掩膜图像并提取大空洞的纹理信息,然后在系统的接收端利用提取的纹理信息填充大空洞,同时利用插值算法填充小空洞;采用GPU加速虚拟视点图像的绘制,首先利用CUDA(通用并行计算架构)技术将每个像素投影到三维空间,然后应用Open GL(开源的图形程序接口)技术将三维空间中的像素投影点反投影到二维平面完成虚拟视点图像的绘制。

根据上述构思,本发明的技术方案是:

一种双目系统中基于GPU的实时绘制方法, 其步骤是:

(1)     发送端绘制出空洞掩膜图像并提取纹理信息:绘制出空洞掩膜图像,利用空洞掩膜图像找到大空洞横向的最大值,根据此最大值提取相应的空洞填充图像,即HFI(空洞填充图像);

(2)     接收端空洞填充:利用发送端提取的纹理信息填充大空洞,并利用插值算法填充小空洞;

(3)     GPU加速绘制:利用CUDA技术将纹理图像中的像素逐一投影到三维空间,然后应用Open GL技术将三维空间中的像素投影点反投影到二维平面完成虚拟视点图像的绘制。

本发明的双目系统中一种基于GPU的实时绘制方法与已有技术相比较,具有如下显而易见的突出实质性特点和显著优点:该方法在双目系统的发送端绘制出空洞掩膜,提取大空洞的纹理信息HFI,在接收端利用提取的纹理信息HFI填充大空洞,特别是当场景的纹理发生突变时,传递HFI绘制所得到虚拟视点图像的客观质量越好;同时将CUDA技术和Open GL技术引入到基于深度的图像绘制中,合理地对常规的基于CPU(中央处理器)的绘制改成基于GPU的绘制,运行在NVIDIA Quadro 600图形卡上,对分辨率为1024×768和1920×1080图像的绘制速率分别达到45fps和28fps,同时合成的新视点图像在主、客观质量上达到了较好的效果,可实现双目系统的实时绘制。

附图说明

图1为本发明一种双目系统中基于GPU的实时绘制方法原理框图;

图2为测试序列“Book Arrival”的第8视点第17帧彩色纹理图像;

图3为图2 所示“Book Arrival”序列的彩色纹理图像对应的深度图;

图4为测试序列“Book Arrival”的第7视点第17帧彩色纹理图像;

图5为空洞图像的掩膜图像;

图6为发送端提取的空洞填充图像(HFI);

图7为绘制空洞掩膜图像原理框图;

图8为利用第8视点第17帧彩色纹理图像和其对应的深度图像绘制第7视点第17帧所产生的空洞图像;

图9为本发明方法所绘制的虚拟视点图像;

图10为应用CUDA技术把纹理图像中的每一个像素投影到三维空间的原理框图;

图11为应用Open GL技术把三维空间中的像素投影到二维平面的原理框图;

图12为序列“Book Arrival”绘制虚拟视点的客观质量比较;

图13为序列“Book Arrival”6-20帧的绘制时间(单位:ms)。

具体实施方式

以下结合附图对本发明的优选实施例作进一步的详细说明。

实施例一:

参见图1,本双目系统中基于GPU的实时绘制方法,其特征在于首先在双目系统的发送端绘制出空洞掩膜图像并提取大空洞的纹理信息HFI,然后在系统的接收端利用提取的HFI填充大空洞,并利用插值算法填充小空洞;为达到实时性的要求,采用GPU加速虚拟视点图像的绘制;首先利用CUDA技术将纹理图像中的像素投影到三维空间,然后应用Open GL技术将三维空间中的像素投影到二维平面完成虚拟视点图像的绘制;其步骤是:

(1)     发送端绘制出空洞掩膜图像并提取纹理信息:绘制出空洞掩膜图像,利用空洞掩膜图像找到大空洞横向的最大值,根据此最大值提取相应的空洞填充图像,即HFI;

(2)     接收端空洞填充:利用发送端提取的纹理信息HFI填充大空洞,并利用插值算法填充小空洞;

(3)     GPU加速绘制:利用CUDA技术将纹理图像中的像素逐一投影到三维空间,然后应用Open GL技术将三维空间中的像素投影点反投影到二维平面完成虚拟视点图像的绘制。

实施例二:

本实例与实施例一基本相同,特别之处如下:

所述步骤(1)发送端绘制出空洞掩膜图像并提取纹理信息的具体步骤如下:

①      利用深度图像和其对应的顶点索引进行三维图像变换,变换之后颜色缓冲区分别用0和255赋值,其中0表示空洞区域,255表示非空洞区域。根据Open GL的存储特点,图像的顶点索引、顶点的颜色数据和顶点的深度信息分别存储于顶点缓冲区、颜色缓冲区和深度缓冲区;而空洞掩膜是一幅起标记性作用的图像,它只记录空洞的位置,无需考虑所对应的颜色数据;

②      利用空洞掩膜图像找到大空洞横向的最大值,根据此最大值提取相应的空洞填充图像HFI。

所述步骤(2)接收端空洞填充的具体步骤如下:

①      空洞图像中大空洞利用发送端提取的HFI进行空洞填充,采用CUDA技术为每一行启动一个线程加速空洞的填充;

②      空洞图像中小空洞利用水平插值算法进行空洞填充,其优点是它具有高度的并行性,易于CUDA实现,可以为每个像素启动给一个线程,大幅度减少了空洞填充的时间,插值式如下: 

                                                                 (1)

其中是空洞位置的像素值,和分别是水平方向上空洞边界处左侧和右侧的像素值,是加权因子。

所述步骤(3)GPU加速绘制的具体步骤如下:

①      应用CUDA技术为纹理图像中的每一个像素启动一个线程,每一个线程均利用下式(2)把像素投影到三维空间,

                                                             (2)

其中是三维世界坐标系中的深度值,是图像坐标系中某像素的坐标,是三维世界坐标系中某像素的坐标,矩阵和分别是3×3的相机内参矩阵和3×4的相机外参矩阵;

②      应用Open GL技术对三维空间中的像素进行正投影变换、透视除法操作、视口变换、光栅化和基于片断的操作,最后带有空洞的虚拟视点图像存储在帧缓冲区中。

实施例三:

本实施例以本发明的技术方案为前提下进行实施,给出了详细的实施方式,但本发明的保护范围不限于下述的实施例。

本实施例的应用环境如下:用于基于深度的绘制的视频为“Book Arrival”标准测试序列,该序列的分辨率为1024×768,相机阵列的水平距离为6.0cm,相机的焦距是140cm;图2为测试序列“Book Arrival”第8视点第17帧彩色纹理图像;图3为图2 所示的彩色纹理图像所对应的深度图像;图4为测试序列“Book Arrival”的第7视点第17帧彩色纹理图像;为了模拟本文的双目实时系统,以H.264/AVC的标准参考软件JM18.0为实验平台,测试的帧数为15帧。

参见图1,本双目系统中基于GPU的实时绘制方法,其步骤是:

(1)     发送端绘制出空洞掩膜图像并提取纹理信息:绘制出空洞掩膜图像,利用空洞掩膜图像找到大空洞横向的最大值,根据此最大值提取相应的空洞填充图像,即HFI;

(2)     接收端空洞填充:利用发送端提取的纹理信息填充大空洞,并利用插值算法填充小空洞;

(3)     GPU加速绘制:利用CUDA技术将纹理图像中的像素逐一投影到三维空间,然后应用Open GL技术将三维空间中的像素投影点反投影到二维平面完成虚拟视点图像的绘制。

上述步骤(1)所述的绘制出空洞掩膜图像,利用空洞掩膜图像找到大空洞横向的最大值,根据此最大值提取相应的空洞填充图像HFI,空洞掩膜图像如图5所示,空洞填充图像HFI如图6所示,其具体步骤如下:

(1-1)利用深度图像和其对应的顶点索引进行三维图像变换即,变换之后颜色缓冲区分别用0和255赋值,其中0表示空洞区域,255表示非空洞区域。根据Open GL的存储特点,图像的顶点索引、顶点的颜色数据和顶点的深度信息分别存储于顶点缓冲区、颜色缓冲区和深度缓冲区。而空洞掩膜是一幅起标记性作用的图像,它只记录空洞的位置,无需考虑所对应的颜色数据。具体实现方法如图7所示。

(1-2) 利用空洞掩膜图像找到大空洞横向的最大值,根据此最大值提取相应的空洞填充图像HFI。

上述的步骤(2)所述的利用发送端提取的纹理信息填充大空洞,并利用插值算法填充小空洞,带空洞的纹理图像如图8所示,空洞填充后效果图像如图9所示,其具体步骤如下:

(2-1) 空洞图像中大空洞利用发送端提取的HFI进行空洞填充,采用CUDA技术为每一行启动一个线程加速空洞的填充。 

(2-2) 空洞图像中小空洞利用水平插值算法进行空洞填充,其优点是它具有高度的并行性,易于CUDA实现,可以为每个像素启动给一个线程,大幅度减少了空洞填充的时间,插值式如下: 

                                                            (3)

其中是空洞位置的像素值,和分别是水平方向上空洞边界处左侧和右侧的像素值,是加权因子。

上述的步骤(3)所述的利用CUDA技术将纹理图像中的像素逐一投影到三维空间,然后应用Open GL技术将三维空间中的像素投影点反投影到二维平面完成虚拟视点图像的绘制,其具体步骤如下:

(3-1) 首先由于深度图像是0~255灰度值的灰度图像,在三维图像变换之前应根据式(4)把灰度级转换为真实三维空间中的深度值,

                                            (4)

其中表示真实三维空间中的深度值,和是距摄像机的最近和最远距离,是深度图像的深度级。

然后利用式(4)、应用CUDA技术为纹理图像中的每一个像素启动一个线程,每一个线程均利用式(5)把像素投影到三维空间,

                                                                (5)

其中是三维世界坐标系中的深度值,是图像坐标系中某像素的坐标,是三维世界坐标系中某像素的坐标,矩阵和分别是3×3的相机内参矩阵和3×4的相机外参矩阵。

应用CUDA技术把纹理图像中的像素逐一投影到三维空间的原理框图,如图10所示。缓冲区操作是通过Open GL驱动程序来完成的,主要目的是在GPU上开辟适当的存储空间并通过CUDA核函数为其赋值。实现图形互操作性的关键是要注册图形资源,CUDA运行时将返回一个指向缓冲区的句柄,以后CUDA将通过这个句柄来访问缓冲区。同时在显卡全局内存上分配适当的存储空间,用来为核函数执行三维图像变换提供数据源。启动核函数之前必须以一个实际的显存地址传递给它,所以首先映射图形资源,然后请求一个指向被映射资源的指针,执行三维图像变换之后的数据将存储在此地址空间。最后启动核函数执行三维图像变换,得到真实三维空间中的像素投影点数据。

(3-2) 三维空间中的像素投影点反投影到二维平面的原理框图如图11所示,关键步骤如下:首先把三维空间中物体的顶点坐标进行正投影变换;其次进行透视除法操作,得到规范化的设备坐标;再次进行视口变换,从而确立了设备坐标与屏幕像素之间的对应关系;下一步进行光栅化,为屏幕渲染图像做准备;基于片断的操作主要是启动深度测试功能,通过检测深度缓冲区中的归一化的深度值进行虚拟视点中正确像素的选择;经过渲染带有空洞的虚拟视点图像存储在帧缓冲区中。

本实施例以图像的PSNR(峰值信噪比)和SSIM(结构相似性指数)作为绘制质量的客观评价标准。表1列出了“Book Arrival”序列(QP值分别取22,27,32,37,42,47)应用所提出算法进行绘制的客观性能比较。可以看出,传送HFI提高了绘制的客观质量。当场景的纹理越复杂时,传递HFI绘制所得到虚拟视点图像的客观质量越好。从主观质量上看,图9为利用本发明方法合成虚拟视点的图像,图4为利用摄像机采集真实视点的图像,可见两幅图像的主观质量基本相当。

本实施例利用GPU计时,考虑到计时的误差,取10次新视点图像绘制时间的平均值作为最终的绘制时间。表2列出了绘制序列“Book Arrival”第6~20帧时各帧所需要的时间,由表可以看出GPU绘制一帧的时间平均在22ms左右,达到了实时绘制的目的。按照本发明所述方法,能保证合成新视点图像在主、客观质量上达到了较好效果的同时大幅度提高了绘制的速度,由此也验证了本发明的有效性。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号