三维场景中显示立体内容的方法及其系统与流程

文档序号:11139292阅读:406来源:国知局
三维场景中显示立体内容的方法及其系统与制造工艺

本发明涉及图像处理技术领域,尤其涉及一种三维场景中显示立体内容的方法及其系统。



背景技术:

图像是由照相机、摄像机等成像设备捕捉实际的画面而产生的图片或视频。随着人们对于图像的要求越来越高,通常希望看到立体图像,立体图像是指具有两个带有位置差的画面代表左右双眼观看的内容,利用左右眼视差让观察人产生带有深度感觉效果的图像。

现有技术中,为呈现三维(以下简称:3D)场景的立体视效,通常通过部署两台相机,生成视差图。视差图通过3D显示设备,比如3D眼镜或者裸眼3D屏幕,将左右眼视差图分别显示到观看者的左眼和右眼,实现立体视效的显示。

发明人在研究中发现,目前现有技术还没有实现在3D场景中观看3D图像,即3D图片或3D视频的功能。



技术实现要素:

本发明提供的三维场景中显示立体内容的方法及其系统,实现了在3D场景中观看3D图像,丰富了3D场景中的显示内容,增强了立体显示的视觉冲击。

在第一方面,本发明提供一种三维场景中显示立体图像的方法,所述方法包括:

获取所述立体图像的立体图片,其中,所述立体图片包括左图图片及右图图片;

分别利用所述左图图片或右图图片,渲染获得三维场景左图及右图;

根据所述三维场景的左图及右图,显示三维场景中的所述立体图像。

可选地,所述利用所述左图图片,渲染获得三维场景左图,具体包括:

将所述左图图片加载为左图纹理;

将所述左图纹理贴至所述三维场景中用于确定所述立体图片显示位置和区域的四边形;

利用左摄像头渲染获得所述三维场景左图。

可选地,所述利用所述右图图片,渲染获得三维场景右图,具体包括:

将所述左图图片替换为所述右图图片;

将所述右图图片加载为右图纹理;

将所述右图纹理贴至所述三维场景中用于确定所述立体图片显示位置和区域的四边形;

利用右摄像头渲染获得所述三维场景右图。

可选地,所述利用所述右图图片,渲染获得三维场景右图,具体包括;

将所述右图图片加载为右图纹理;

将所述右图纹理贴至三维场景中用于确定所述立体图片显示位置和区域的四边形;

利用右摄像头渲染获得所述三维场景右图。

可选地,所述利用所述左图图片,渲染获得三维场景左图,具体包括:

将所述右图图片替换为所述左图图片;

将所述左图图片加载为左图纹理;

将所述左图纹理贴至三维场景中用于确定所述立体图片显示位置和区域的四边形;

利用左摄像头渲染获得所述三维场景左图。

可选地,所述利用左摄像头渲染获得三维场景左图,具体包括:

根据所述左摄像头的位置、方向及视角,生成左摄像头的投影矩阵;

将所述左摄像头的投影矩阵乘以所述四边形的每个顶点坐标,生成所述四边形每个顶点投影至屏幕上的第一坐标;

通过插值,将贴至所述四边形上的所述左图纹理的每个像素投影,生成投影到屏幕上的第一图像;

将所述三维场景内的其余物体的各个顶点乘以所述左摄像头的投影矩阵,通过渲染管线,将所述三维场景内的其余物体生成投影到屏幕上的第二图像;

将生成的投影到屏幕上的所述第一图像和所述第二图像作为所述三维场景左图。

可选地,所述利用右摄像头渲染获得三维场景右图,具体包括:

根据所述右摄像头的位置、方向及视角,生成投影矩阵;

将所述右摄像头的投影矩阵乘以所述四边形的每个顶点坐标,生成所述四边形每个顶点投影至屏幕上的第二坐标;

通过插值,将贴至所述四边形上的所述右图纹理的每个像素投影;生成投影到屏幕上的第三图像;

将三维场景内的其余物体的各个顶点乘以所述右摄像头的投影矩阵,通过渲染管线,将所述三维场景内的其余物体生成投影到屏幕上的第四图像;

将生成的投影到屏幕上的所述第三图像和所述第四图像作为所述三维场景右图。

可选地,所述立体图像包括立体视频;

所述方法还包括:

对所述立体视频解码,并生成每一视频帧的立体图像。

在第二方面,本发明还提供一种三维场景中显示立体内容的系统,所述系统包括:

立体图像获取单元,用于获取立体图像的立体图片,其中,立体图片包括左图图片及右图图片;

立体显示位置及区域确定单元,用于确定所述立体图片显示位置和区域,并承贴加载为纹理的所述左图图片或右图图片;

左摄像头,用于根据承贴于所述立体显示位置及区域确定单元且加载为左图纹理的所述左图图片,渲染获得三维场景左图;

右摄像头,用于根据承贴于所述立体显示位置及区域确定单元且加载为右图纹理的所述右图图片,渲染获得三维场景右图;

显示单元,用于将所述渲染获得三维场景左图或右图分别显示至用户的左右眼。

可选地,所述左摄像头具体用于:

根据所述左摄像头的位置、方向及视角,生成左摄像头的投影矩阵;

将所述左摄像头的投影矩阵乘以所述四边形的每个顶点坐标,生成所述四边形每个顶点投影至屏幕上的第一坐标,

通过插值,将贴至所述四边形上的所述左图纹理的每个像素投影,生成投影到屏幕上的第一图像;

将所述三维场景内的其余物体的各个顶点乘以所述左摄像头的投影矩阵,通过渲染管线,将所述三维场景内的其余物体生成投影到屏幕上的第二图像;

将生成的投影到屏幕上的所述第一图像和所述第二图像作为所述三维场景的左图。

可选地,所述右摄像头具体用于:

根据所述右摄像头的位置、方向及视角,生成投影矩阵;

将所述右摄像头的投影矩阵乘以所述四边形的每个顶点坐标,生成所述四边形每个顶点投影至屏幕上的第二坐标;

通过插值,将贴至所述四边形上的所述右图纹理的每个像素投影,生成投影到屏幕上的第三图像;

将三维场景内的其余物体的各个顶点乘以所述右摄像头的投影矩阵,通过渲染管线,将所述三维场景内的其余物体生成投影到屏幕上的第四图像;

将生成的投影到屏幕上的所述第三图像和所述第四图像作为所述三维场景的右图。

可选地,所述系统还包括:

加载单元,用于将所述左图图片或右图图片加载为左图纹理或右图纹理。

可选地,所述立体图像包括立体视频;

所述系统,还包括:

立体图片生成单元,用于对所述立体视频解码,并生成每一视频帧的立体图片。

在本发明实施例中,通过获取所述立体图像的立体图片,分别利用立体图片中的左图图片或右图图片,渲染获得三维场景左图及右图;并根据所述三维场景的左图及右图,显示三维场景中的所述立体图像,实现了在3D场景中观看3D图像,丰富了3D场景中的显示内容,增强了立体显示的视觉冲击。

附图说明

图1为本发明实施例3D场景中显示立体内容的方法流程示意图;

图2为本发明实施例在3D场景中显示3D图片的方法流程图;

图3为本发明实施例3D场景中显示立体内容的系统结构示意图。

具体实施方式

下面结合附图和实施例对本发明进行详细说明。

需要说明的是,如果不冲突,本发明实施例以及实施例中的各个特征可以相互结合,均在本发明的保护范围之内。另外,虽然在系统示意图中进行了功能单元划分,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于系统中的单元划分,或流程图中的顺序执行所示出 或描述的步骤。

下面对本发明实施例的3D场景中显示立体图像的方法进行简要描述。在本发明实施例中,在生成3D场景的左图时,将3D图像的左图作为纹理贴在3D空间中;在生成3D场景的右图时,将3D图像的右图作为纹理替换左图贴在3D空间中。这样在3D场景的左右图中,分别显示了3D图像的左图和右图,实现了在3D场景中观看3D图像的功能。

下面结合附图对本发明实施例作进一步阐述。

图1为本发明实施例3D场景中显示立体内容的方法流程示意图,如图1所示,本发明实施例的方法,包括以下步骤:

S11,获取所述立体图像的立体图片,其中,所述立体图片包括左图图片及右图图片。

在本发明实施例中,立体图像可以包括立体图片或者立体视频,其中,当立体图像为立体图片时,可以直接从存储介质上读取立体图片,并从立体图片上截取立体图片的左半部分,得到左图图片,从立体图片上截取右半部分,得到右图图片。当立体图像为立体视频时,从存储介质上读取立体视频,并根据立体视频的文件格式,选择对应的解码器,对立体视频解码,并生成每一个帧的立体图片,每一帧立体图片的左半部分作为左图图片,每一帧立体图片的右半部分作为右图图片。

S13,分别利用所述左图图片或右图图片,渲染获得3D场景左图及右图;

在本发明实施例中,可以先利用左图图片渲染获得3D场景左图,然后将左图图片替换为右图图片,利用右图图片渲染获得3D场景右图。也可以先利用右图图片渲染获得3D场景右图,然后将右图图片替换为左图图片,利用左图图片渲染获得3D场景左图。

可以理解的是,在本发明实施例中,渲染是使图像符合3D场景的阶段,渲染可以有多种软件,渲染是采用软件从模型生成图像的过程。其中,模型是用严格定义的语言或者数据结构对于三维物体的描述,它 包括几何、视点、纹理以及照明信息。图像是数字图像或者位图图像。

在本发明实施例中,利用左图图片渲染获得3D场景左图,具体包括:将所述左图图片加载为左图纹理,将所述左图纹理贴至3D场景中用于确定立体图片显示位置和区域的四边形,利用左摄像头渲染获得3D场景左图。

在本发明实施例中,在获得3D场景左图后,为了获得3D场景右图,则需要将所述左图图片替换为右图图片,利用右图图片渲染获得3D场景右图。其中,利用右图图片渲染获得3D场景右图,具体包括:将所述右图图片加载为右图纹理,将所述右图纹理贴至3D场景中用于确定立体图片显示位置和区域的四边形,利用右摄像头渲染获得3D场景右图。

在本发明实施例中利用左摄像头渲染获得3D场景左图,具体包括:

根据所述左摄像头的位置、方向及视角,生成左摄像头的投影矩阵;

将所述左摄像头的投影矩阵乘以所述四边形的每个顶点坐标生成所述四边形每个顶点投影至屏幕上的第一坐标;

通过插值,将贴至所述四边形上的左图纹理的每个像素投影,生成投影到屏幕上的第一图像;

将3D场景内的其余物体的各个顶点乘以所述左摄像头的投影矩阵,通过渲染管线,将所述三维场景内的其余物体生成投影到屏幕上的第二图像;

将生成的投影到屏幕上的所述第一图像和所述第二图像作为3D场景的左图。

在本发明实施例中,利用右摄像头渲染获得3D场景右图,具体包括:

根据所述右摄像头的位置、方向及视角,生成投影矩阵;

将所述右摄像头的投影矩阵乘以所述四边形的每个顶点坐标生成所述四边形每个顶点投影至屏幕上的第二坐标;

通过插值,将贴至所述四边形上的右图纹理的每个像素投影,生成 投影到屏幕上的第三图像;

将3D场景内的其余物体的各个顶点乘以所述右摄像头的投影矩阵,通过渲染管线,将所述三维场景内的其余物体生成投影到屏幕上的第四图像;

将生成的投影到屏幕上的所述第三图像和所述第四图像作为3D场景的右图。

在本发明实施例中,在左摄像头渲染获得3D场景的左图前,需要将左图图片加载为左图纹理,并贴至3D场景中用于确定立体图片显示位置和区域的四边形,具体包括:将左图图片使用3D图像接口(比如opengl接口或Direct 3D接口)传给图像处理器(Graphics Processing Unit,简称:GPU),并由GPU加载为左图纹理;然后将加载得到的左图纹理的四个顶点绑定到3D场景中用于确定立体图片显示位置和区域的四边形的各个顶点。

可以理解的是,在本发明实施例中,插值是将感光器件所形成的实际像素,通过内置的软件,依据实际感光影像的像素,依照一定的运算方式进行计算,产生出新的像素点,并将其插入到本来像素邻近的空隙处,从而实现增加了像素总量和增大了像素密度的目的。插值的计算方式有很多,比较常用的有像素插值算法、双线性插值算法、双三次插值算法和分形算法的四种。其中,像素插值算法是最简单的一种插值算法,这种方式是当图片放大时,缺少的像素通过直接使用与之最接近的原有像素的颜色生成,也就是说照搬旁边的像素。当图片扩大时,要增加X点处的像素,由于X点与A、B这两个有效像素中的B点最接近,因此X点会直接照搬B点的像素,从而使到X点生成的效果与B点一样。这种算法简单,因此处理的速度很快,但结果通常会产生明显可见的锯齿。双线性插值算法,是指输出的图像的每个像素都是原图中四个像素运算的结果,由于它是从原图四个像素中运算的,因此这种算法很大程度上消除了锯齿现象,而且效果也比较好。双三次插值算法是双线性插值算 法的改良算法,它输出图像的每个像素都是原图16个像素运算的结果,由于效果好,运算速度也不慢,因而这种插值方式是一种很常见的算法,广泛用在图像编辑软件、打印机驱动和数码相机上。分形算法具有无限的细节和自相似的特点,它可以使到图形无论如何放大,看起来都与原图形很相似,因此得到的图像效果,跟其他算法相比更清晰、更锋利,但在计算上也相对照其他算法要庞杂很多。在本发明实施例中,本领域技术人员可以根据实际需要,选择具体的算法,此处不再赘述。

S15,根据所述3D场景的左图及右图,显示3D场景中的所述立体图像。

在本发明实施例中,将S13中获得的3D场景的左右图传给3D显示设备,将3D场景的左右图分别显示在用户的左右眼;由于整个3D场景的左图里渲染的是3D图片的左图,3D场景的右图里是3D图片的右图,实现了在3D场景中观看3D图片的效果。

在本发明实施例中,对于立体视频,由于立体视频可以解码为多个帧,且每一帧图像的左右图片可以用来生成3D场景中的左右图,从而可以实现在3D场景中显示立体视频,实现了用户在3D场景中观看3D电影的功能。

在本发明实施例中,通过获取所述立体图像的立体图片,分别利用立体图片中的左图图片或右图图片,渲染获得3D场景左图及右图;并根据所述3D场景的左图及右图,显示3D场景中的所述立体图像,实现了在3D场景中观看3D图像,丰富了3D场景中的显示内容,增强了立体显示的视觉冲击。

下面结合具体实施例,以在3D场景中显示3D图片为例对本发明作进一步步阐述。

图2为本发明实施例在3D场景中显示3D图片的方法流程图,如图所示,该方法包括以下步骤:

S21,在3D场景中设置左右摄像头,

其中,为了实现3D显示,需要对3D场景中设置的摄像头进行相应的参数设置,包括调节视角、远/近面、融合面等参数,设置的摄像头包括左摄像头和右摄像头,摄像头的个数可以为一个或多个,左摄像头用于渲染3D场景左图,右摄像头用于渲染3D场景右图。

S22,在3D场景中放置一个四边形,

其中,该四边形用于确定立体图片的显示位置和区域。

S23,在左摄像头渲染左图前,将立体图片的左图加载为左图纹理贴在步骤S22的四边形上,该步骤具体包括(图中未示出):

S231,从存储介质上读取3D图片(图像排布为左右图,上下图等),本实施例中以左右图为例;

S232,截取步骤S231中3D图片的左半部分,生成左图图片;

S233,将步骤S232中的左图图片,加载为左图纹理;

其中可以使用3D图像接口,比如,opengl接口或Direct 3D接口,将步骤S232中的左图图片传给图形处理单元(GPU),并由GPU加载为左图纹理;

S234,将步骤S233中的左图纹理的四个顶点绑定到S22的四边形的各个顶点;

S24,通过左摄像头渲染整个3D场景左图,具体包括(图中未示出):

S241,根据步骤S21中的左摄像头的位置,方向和视角等,生成投影矩阵;

S242,将步骤S241中的投影矩阵乘以S22中四边形的每个顶点坐标,生成所述四边形每个顶点投影到屏幕上的第一坐标;

S243,通过插值,将贴在四边形上的左图纹理的每个像素投影,生成投影到屏幕上的第一图像;

S244,将3D场景内的其他物体的各个顶点乘以步骤S241中的左摄像头投影矩阵,通过渲染管线,将所述三维场景内的其余物体生成投影到屏幕上的第二图像;

S245,将生成的投影到屏幕上的第一图像和第二图像作为整个3D场景的左图;

S25,通过右camera渲染右图前,将立体图片的右图图片加载为纹理贴在S22的四边形上,替换S23中的左图纹理;该步骤具体包括(图中未示出):

S251,截取步骤S231中3D图片的右半部分,生成右图图片;

S252,将步骤S251中的右图图片,加载为右图纹理;

其中可以使用3D图像接口,比如,opengl接口或Direct 3D接口,将步骤S252中的右图图片传给图形处理单元(GPU),并由GPU加载为右图纹理;

S253,将步骤S252中的右图纹理的四个顶点绑定到S22的四边形的各个顶点;

S26:通过右摄像头渲染整个3D场景的右图;具体包括(图中未示出):

S261,根据步骤S21中的右摄像头的位置,方向和视角等,生成投影矩阵;

S262,将步骤S261中的投影矩阵乘以S22中四边形的每个顶点坐标,生成所述四边形每个顶点投影到屏幕上的第二坐标;

S263,通过插值,将贴在四边形上的右图纹理的每个像素投影,生成投影到屏幕上的第三图像;

S264,将3D场景内的其他物体的各个顶点乘以步骤S261中的右摄像头投影矩阵,通过渲染管线,将所述三维场景内的其余物体生成投影到屏幕上的第四图像;

S265,将生成的投影到屏幕上的第三图像和第四图像作为整个3D场景的右图;

S27,将S25,S26中生成的3D场景的左右图传给3D显示设备;

在本发明实施例中,由3D显示设备将3D场景的左右图分别显示在 用户的左右眼;由于整个3D场景的左图里渲染的是3D图片的左图,3D场景的右图里是3D图片的右图,实现了在3D场景中观看3D图片的效果。

在本发明实施例中,当3D图像为立体视频时,在渲染得到3D场景的左右图之前,需要将立体视频文件根据其视频文件格式,选用对应的解码器,对3D视频进行解码,并生成视频中每一帧的立体图片,该立体图片中包括渲染得到3D场景的左右图的左右图片。利用立体图片的左右图片渲染得到3D场景的左右图的实施方式如上述实施例所述,在此不再赘述。

需要说明的是,在本发明实施例中,先生成3D场景的左图,还是先生成3D场景的右图之间没有必然的先后关系,但需要保证在生成3D场景的左图时采用立体图片中的左图图片的左图纹理,生成3D场景的右图时采用立体图片中的右图图片的右图纹理。

图3为本发明实施例3D场景中显示立体内容的系统结构示意图,如图3所示,所述系统包括:

立体图像获取单元31,用于获取立体图像的立体图片,其中,立体图片包括左图图片及右图图片;

立体显示位置及区域确定单元32,用于确定立体图片显示位置和区域,并承贴加载为纹理的所述左图图片或右图图片;

左摄像头33,用于根据承贴于所述立体显示位置及区域确定单元且加载为左图纹理的所述左图图片,渲染获得3D场景左图;

右摄像头34,用于根据承贴于所述立体显示位置及区域确定单元且加载为右图纹理的所述右图图片,渲染获得3D场景右图;

显示单元35,用于将所述渲染获得3D场景左图或右图分别显示至用户的左右眼。

在本发明实施例中,立体图像获取单元31可以从存储器获得需要显示的立体图片或立体视频,并从立体图片或立体视频解码生成的立体 图片中得到立体图片的左右图片。

立体显示位置及区域确定单元32,放置中3D场景中,在渲染得到3D场景左右图之前,可以将立体图像获取单元31获取的立体图片的左右图片经加载后得到纹理,并将纹理贴至该单元上。

左摄像头33用于渲染获得3D场景左图,具体用于:

根据所述左摄像头的位置、方向及视角,生成左摄像头的投影矩阵;

将所述左摄像头的投影矩阵乘以所述四边形的每个顶点坐标,生成所述四边形每个顶点投影至屏幕上的第一坐标;

通过插值,将贴至所述四边形上的左图纹理的每个像素投影,生成投影到屏幕上的第一图像;

将3D场景内的其余物体的各个顶点乘以所述左摄像头的投影矩阵,通过渲染管线,将所述三维场景内的其余物体生成投影到屏幕上的第二图像;

将生成的投影到屏幕上的所述第一图像和所述第二图像作为3D场景的左图。

左摄像头34用于渲染获得3D场景右图,具体用于:

根据所述右摄像头的位置、方向及视角,生成投影矩阵;

将所述右摄像头的投影矩阵乘以所述四边形的每个顶点坐标,生成所述四边形每个顶点投影至屏幕上的第二坐标;

通过插值,将贴至所述四边形上的右图纹理的每个像素投影,生成投影到屏幕上的第三图像;

将3D场景内的其余物体的各个顶点乘以所述右摄像头的投影矩阵,通过渲染管线,将所述三维场景内的其余物体生成投影到屏幕上的第四图像;

将生成的投影到屏幕上的所述第三图像和所述第四图像作为3D场景的右图。

在本发明实施例中,所述系统还包括:

加载单元36,用于将所述左图图片或右图图片加载为左图纹理或右图纹理。

其中,加载单元可以为图形处理器GPU,可以通过3D图像接口,比如,opengl接口或其他Direct 3D接口,将左右图片传给加载单元36,由加载单元36将左右图片分别加载为左右图纹理;

在本发明实施例中,当所述立体图像包括立体视频时,所述系统,还包括:

立体图片生成单元37,用于对所述立体视频解码,并生成每一视频帧的立体图片。

在本发明实施例中,针对不同的视频文件格式,立体图片生成单元可以选择不同的视频解码器,以实现对不同视频文件格式的视频文件实现解码。

需要说明的是,本发明实施例中的3D场景中显示立体内容的系统中各个单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,方法实施例中的具体内容同样适用。本发明实施例中的各个单元可以作为单独的硬件或软件来实现,并且可以根据需要使用单独的硬件或软件来实现各个单元的功能的组合。

在本发明实施例中,通过获取所述立体图像的立体图片,利用立体图片中的左图图片或右图图片,分别渲染获得3D场景左图或右图;并根据所述3D场景的左图及右图,显示3D场景中的所述立体图像,实现了在3D场景中观看3D图像,丰富了3D场景中的显示内容,增强了立体显示的视觉冲击。

以上所述仅为本发明的实施方式,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1