本发明涉及3D视频
技术领域:
,特别是涉及一种基于GPU的4K超多视点3D视频实时转化方法及装置。
背景技术:
:近几年,立体显示技术得到了快速发展,并且逐渐走向普通用户。立体显示内容的匮乏成为限制立体显示技术普及的一项重要因素。立体显示是通过同时提供同一场景的不同视点的多视点图像来实现的。裸眼立体显示不需要佩戴辅助设备,从而具有更多的将会使更多的人体验到立体显示带来的无穷乐趣。由于裸眼立体显示需要的视点数较多,直接通过多摄像机拍摄显示内容,成本太高。因此,将三维场景表示为“彩色图+深度图”的数据格式,在此基础上进行虚拟视点渲染合成3D视频是广泛采用的制作3D视频的方式。彩色图是一个视点图,深度图是这个视点对应的深度图。现有的多视点立体视频合成的一般步骤是:首先通过参考视点以及深度图生成虚拟视点,对虚拟视点进行填充空洞修复,再将所有的虚拟视点合成立体显示图。这种方法会产生大量的信息冗余,对于超多视点的高分辨率视频,占用显卡内存较多,普通显卡难以满足要求。同时,在现有的虚拟视点渲染方法中,空洞填充计算占用时间较多。因此对于4K高分辨率视频的超多视点计算难以实现实时,应用受到限制。4K高分辨率具体指的是3840*2160分辨率。参见图1a,现有技术中多视点立体视频合成方法需要基于参考视点的RGB图像和深度图来生成n个虚拟视点View0、View1、View2、……、Viewn-2、Viewn-1的图像序列,然后对每个虚拟视点的图像进行填充空洞修复,最后再将所有的虚拟视点的图像合成为立体显示图。在视点数量较多(例如大于20个)、视频分辨率较高时,占用显卡内存较多,且计算耗时较多,难以实时实现。一些研究人员提出对深度图进行预处理,以避免渲染虚拟视点时产生空洞的算法,但是这种算法改变了实际深度图结构,带来了边缘变形,并且在视差较大时难以完全避免产生空洞。因此,希望有一种技术方案来克服或至少减轻现有技术的上述缺陷中的至少一个。技术实现要素:视差:视差值定义为两个视点图像中匹配像素点横坐标(水平坐标)的差值,视差产生立体视觉,对应物体的视差值的大小直接影响立体感知的强弱。虚拟多视点:将三维场景表达为“视频+深度”的数据格式,利用虚拟视点生成技术渲染出多个虚拟视点位置的图像,可为自由立体显示器提供同一场景的多视点图像和视频。本发明的目的在于提供一种技术方案来克服或至少减轻现有技术的上述缺陷中的至少一个。为此,本发明提供一种3D视频实时转化方法,所述3D视频实时转化方法包括:步骤1:基于输入视频每帧图像的视点图、深度图,对应于多个虚拟视点位置,计算所述输入视频的每帧视频的视差值;步骤2:根据所述视差值计算视差水平梯度值;步骤3:根据所述视点图计算图像纹理结构图;步骤4:根据视点图、图像纹理结构图、视差值、视差水平梯度值和显示器参数直接合成对应于每帧图像的立体图像;以及步骤5:输出立体图像。优选地,所述多个虚拟视点与主视点在x方向上成直线排列。优选地,以下述方法来计算视差水平梯度值,视差水平梯度值等于在与虚拟视点对应的虚拟视点图上水平方向上相邻两点视差值之差:disp_gradient(x)=disp(x+1)-disp(x)其中,x是当前点的水平坐标;(x+1)表示相邻点的水平坐标;disp表示视差值,disp_gradient是视差水平梯度值,即相邻两个视点的视差值之差。优选地,步骤4包括:根据视差值和视点图映射生成局部虚拟视点图,并将之合成至立体图像,如果disp_gradient(x)为零,则待合成的局部虚拟视点图不存在遮挡,合成映射关系为:其中,Idst表示合成目标图像,xdst表示目标图像像素横坐标,Isrc表示视点图的图像,xsrc表示Isrc图像中像素横坐标,如果disp_gradient(x)为正,则待合成的虚拟视点图存在重叠,此时取重叠部位处视差值较大的虚拟视点图的局部图像作为立体图像的组成部分。优选地,在步骤4中,预测空洞位置,并进行空洞填充,其中通过视差值和视差水平梯度值预测虚拟视点图中空洞的位置。优选地,若disp_gradient(x)为负,则虚拟视点图中会存在空洞,空洞所在的坐标为:xdst=xsrc+j-disp(xsrc),其中,空洞的水平宽度为视差值之差的绝对值,j为任选整数,但是满足下式:disp_gradient(xsrc)≤j<0。优选地,根据预测的空洞点坐标以及图像纹理结构图预测空洞应填充的像素值,通过计算能量函数获得参考填充点的优先级,以对应能量值最大的参考点的像素值作为空洞填充点的像素值。优选地,能量函数表示为深度相似性Edepth,结构相似性Estructure和距离相似性Eproximity的乘积:E(q)=Edepth(q)·Eproximity(q)·Estructure(q)其中,中心点坐标p=Isrc(xsrc,ysrc),参考区域的半径为2,q是任意参考点坐标;深度相似性Edepth通过参考点的深度dq与中心点深度dp之差来判断,当其小于0时,参考点的相似性设置为1,当其不等于0计算比值;结构相似性Estructure表示为纹理结构值S(q)相对于100的截断值,其中100是经验值,n为空洞的位置的编号;距离相似性Eproximity表示为参考点与中心点欧式几何距离euclidean(p,q)的指数函数,γp为常数参数。优选地,fi为裸眼光栅显示对应在第i个视点的蒙版,在不存在空洞时,映射过程表示为:在存在空洞及填充时,前向映射过程表示为:α参数表示深度与视差平移量的转换关系;Idst-disp表示目标图对应的视差图。优选地,根据视点图获得纹理结构图的方法是视点图与sobel算子进行卷积。本发明的3D视频实时转化方法直接输出包含多个视点信息的立体图,可以直接通过显示屏输出立体效果。附图说明图1a是现有技术中多视点立体视频合成方法的流程图。图1b是根据本发明的视频实时转化方法的流程图。图2是根据本发明的视频实时转化装置的方框图。图3是3D视频转化模块的工作流程图。图4是空洞填充前后效果对比图。在图4中,椭圆遮挡方块在右视点产生空洞。颜色越浅,表示物体视差值越大,物体越靠近摄像机。图5是空洞的坐标预测图。图6是p、q两点的附图标记:1视频输入模块23D视频转化模块3显示模块具体实施方式在附图中,使用相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面结合附图对本发明的实施例进行详细说明。如图2所示,本发明提供一种基于GPU的4k超多视点3D视频实时转化装置,所述装置包括视频输入模块、3D视频转化模块和显示模块。视频输入模块将视频解码为RGB图像序列以及视差图序列,并传输到显卡内存。视差图中记录了视差值。3D视频转化模块采用预测填充空洞的前向映射算法进行虚拟视点渲染,结合立体显示器参数输出立体图像序列,能够在立体显示屏上显示出立体效果的图像就称之为立体图像。需要指出的是,图像总是二维的,但通过特殊的显示屏,看起来是立体的。目标图即输出图,是可直接在显示器上显示立体效果的立体图像。显示模块将立体图像序列通过OpenGL直接输出到裸眼显示器上进行显示。OpenGL(全写OpenGraphicsLibrary)是个定义了一个跨编程语言、跨平台的编程接口规格的专业的图形程序接口。它用于三维图像(二维的亦可),是一个功能强大,调用方便的底层图形库。OpenGL是个与硬件无关的软件接口,可以在不同的平台如Windows95、WindowsNT、Unix、Linux、MacOS、OS/2之间进行移植。因此,支持OpenGL的软件具有很好的移植性,可以获得非常广泛的应用。上述装置采用的基于GPU的4k超多视点3D视频实时转化方法,利用CUDA与OpenGL混合编程,提出一种适合于并行计算的预测映射算法,在CUDA内以每个像素点为一个线程进行并行计算,同时根据参考视点的视差梯度进行空洞预测,可以有效的填充空洞以及处理遮挡,结合显示器参数直接渲染出精确度较高的立体视频,可以实现4K分辨率28视点的实时立体显示。优点:虚拟视点渲染产生的空洞一般在背景区域,并且与深度变化率以及平移方向相关。本发明根据深度变化率计算出空洞可能产生的位置,根据纹理结构映射确定填充空洞的信息来源,此算法填充空洞比较真实,保持了图像的连续性,减少计算量的同时保证了虚拟视点生成的质量。这种算法不需要在保存虚拟视点图之后利用图像的连续性进行空洞填充,减少了内存使用,减少了显示器内存大小对算法的限制,促进了超多视点的广泛应用。随着显卡的发展,GPU(ComputeUnifiedDeviceArchitecture,统一计算设备架构)越来越强大,而且GPU为显示图像做了优化。在计算上已经超越了通用的CPU。如此强大的芯片如果只是作为显卡就太浪费了,因此NVidia推出CUDA,让显卡可以用于图像计算以外的目的。为此,本发明提供一种3D视频实时转化方法,所述3D视频实时转化方法包括:步骤1:基于输入视频每帧图像的视点图、深度图,对应于多个虚拟视点位置,计算所述输入视频的每帧视频的视差值;步骤2:根据所述视差值计算视差水平梯度值;步骤3:根据所述视点图计算图像纹理结构图;步骤4:根据视点图、图像纹理结构图、视差值、视差水平梯度值和显示器参数直接合成对应于每帧图像的立体图像;以及步骤5:输出立体图像。优选地,所述多个虚拟视点与主视点在x方向上成直线排列。优选地,以下述方法来计算视差水平梯度值,视差水平梯度值等于在与虚拟视点对应的虚拟视点图上水平方向上相邻两点视差值之差:disp_gradient(x)=disp(x+1)-disp(x)其中,x是当前点的水平坐标;(x+1)表示相邻点的水平坐标;disp表示视差值,disp_gradient是视差水平梯度值,即相邻两个视点的视差值之差。优选地,步骤4包括:根据视差值和视点图映射生成局部虚拟视点图,并将之合成至立体图像,如果disp_gradient(x)为零,则待合成的局部虚拟视点图不存在遮挡,合成映射关系为:其中,Idst表示合成目标图像,xdst表示目标图像像素横坐标,Isrc表示视点图的图像,xsrc表示Isrc图像中像素横坐标,如果disp_gradient(x)为正,则待合成的虚拟视点图存在重叠,此时取重叠部位处视差值较大的虚拟视点图的局部图像作为立体图像的组成部分。优选地,在步骤4中,预测空洞位置,并进行空洞填充,其中通过视差值和视差水平梯度值预测虚拟视点图中空洞的位置。优选地,若disp_gradient(x)为负,则虚拟视点图中会存在空洞,空洞所在的坐标为:xdst=xsrc+j-disp(xsrc),其中,空洞的水平宽度为视差值之差的绝对值,j为任选整数,但是满足下式:disp_gradient(xsrc)≤j<0。优选地,根据预测的空洞点坐标以及图像纹理结构图预测空洞应填充的像素值,通过计算能量函数获得参考填充点的优先级,以对应能量值最大的参考点的像素值作为空洞填充点的像素值。优选地,能量函数表示为深度相似性Edepth,结构相似性Estructure和距离相似性Eproximity的乘积:E(q)=Edepth(q)·Eproximity(q)·Estructure(q)其中,中心点坐标p=Isrc(xsrc,ysrc),参考区域的半径为2,q是任意参考点坐标;深度相似性Edepth通过参考点的深度dq与中心点深度dp之差来判断,当其小于0时,参考点的相似性设置为1,当其不等于0计算比值;结构相似性Estructure表示为纹理结构值S(q)相对于100的截断值,其中100是经验值,n为空洞的位置的编号;距离相似性Eproximity表示为参考点与中心点欧式几何距离euclidean(p,q)的指数函数,γp为常数参数。优选地,fi为裸眼光栅显示对应在第i个视点的蒙版,在不存在空洞时,映射过程表示为:在存在空洞及填充时,前向映射过程表示为:α参数表示深度与视差平移量的转换关系;Idst-disp表示目标图对应的视差图。优选地,根据视点图获得纹理结构图的方法是视点图与sobel算子进行卷积。本发明的3D视频实时转化方法直接输出包含多个视点信息的立体图,可以直接通过显示屏输出立体效果。下面进一步介绍3D视频转化模块。在3D视频转化模块中,首先计算深度视频获得每一帧视频的视差图,根据视差计算视差水平梯度图;根据RGB视点图计算图像纹理结构图。根据RGB视点图、纹理结构图、视差图、视差水平梯度图和显示器参数合成立体图像,进行空洞填充,输出完整立体图像。预测空洞填充前后效果如下图表示:图4是空洞填充前后效果对比图。椭圆遮挡方块在右视点产生空洞。颜色越浅,表示物体视差值越大,物体越靠近摄像机。详细步骤如下:1.根据视差图获得视差水平梯度图的方法是计算水平方向上相邻两点视差值之差。disp_gradient(x)=disp(x+1)-disp(x)x是视差图的水平坐标;(x+1)表示相邻点的水平坐标;disp表示视差值,disp_gradient是视差水平梯度值,即相邻两点的视差值之差。省略y坐标,无需考虑y坐标,因为y没有变化。2.根据视差图和RGB视点图前向映射生成虚拟视点图。令Idst表示合成目标图像,xdst表示目标图像像素横坐标,Isrc表示原参考视点,xsrc表示Isrc图像中像素横坐标。由于空洞与遮挡发生在视差值变化的区域,即视差水平梯度值不为0的区域。以下分析都取视差取向左平移为正值,disp_gradient(x)为0,则不存在空洞或者遮挡,映射关系为:disp_gradient(x)为正,则合成的虚拟视点图存在遮挡,此时取视差值较大的参考点作为虚拟视点值,映射关系为:3.通过视差图和视差水平梯度图可以预测虚拟视点图中空洞的位置。若disp_gradient(x)为负,则虚拟视点图中会存在空洞,空洞所在的坐标为xdst=xsrc+j-disp(xsrc),disp_gradient(xsrc)≤j<0空洞的坐标预测图如图5,黑色表示空洞区域,可以看出,空洞的水平宽度由视差值之差确定。4.根据RGB视点图获得纹理结构图的方法是视点图与sobel算子进行卷积。纹理结构图表示为RGB_structure。5.根据步骤3所预测的空洞点坐标以及步骤4提供的纹理结构图可以预测空洞应填充的像素值。通过计算能量函数获得参考填充点的优先级,对应能量值最大的参考点作为空洞填充点,参考填充点包括原视点图中的参考点以及目标视点中的参考点。通过能量函数保证了目标图的视觉上的连续性,提高空洞填充的真实感。已知xdst=xsrc+j-disp(xsrc)disp_gradient(xsrc)≤j<0能量函数表示为深度相似性Edepth,结构相似性Estructure和距离相似性Eproximity的乘积:E(q)=Edepth(q)·Eproximity(q)·Estructure(q)其中,从RGB视点图中选择的参考区域如图6,其中中心点坐标p=Isrc(xsrc,ysrc),参考区域的半径为2,q是任意参考点坐标。深度相似性Edepth通过参考点的深度dq与中心点深度dp之差来判断,当其小于0时,参考点的相似性设置为1。当其不等于0时如公式(1)。结构相似性Estructure表示为纹理结构值S(q)相对于100的截断值,其中100是经验值,n为空洞的位置的编号,如图6所示,如公式(2)。距离相似性Eproximity表示为参考点与中心点欧式几何距离euclidean(p,q)的指数函数,γp为常数参数,如公式(3)。Idst(xdst)=q0,E(q0)=max(E(q))。6.同时合成多个虚拟视点图,结合显示器的蒙版参数直接合成立体图像。fi为裸眼光栅显示对应在第i个视点的蒙版。不考率空洞时前向映射过程表示为:考虑空洞填充时,α参数表示深度与视差平移量的转换关系,可以通过调整α改变视差范围。Idst_disp表示目标图对应的视差图,由于目标图包含多个视点的信息,目标图的视差图也是由多个视点的视差值组成的。7.对立体图填充空洞。经过以上处理,此时图像中存在的空洞主要是由于坐标取整产生,空洞范围较小,在3D视频中可以通过最临近插值填充,不影响最终效果的准确性。在一个具体实施例中,采用下述的技术参数来实现上述技术方案:输入参考视频与深度视频的分辨率:3840*2160裸眼立体显示器分辨率:3840*2160裸眼立体显示方式:柱镜光栅分光式裸眼立体视点数:>=28计算机:NVIDIA显卡,显存2G以上。最后需要指出的是:以上实施例仅用以说明本发明的技术方案,而非对其限制。本领域的普通技术人员应当理解:可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。当前第1页1 2 3