立体图像重现方法、装置、设备和存储介质
技术领域
本发明涉及计算机技术领域,尤其涉及一种立体图像重现方法、装置、设备和存储介质。
背景技术
目前,立体图像、立体视频的应用场景越来越广泛。比如,虚拟现实(VirtualReality,VR)电影或VR游戏。有时,为了满足用户对立体图像或者立体视频的保存以及重复观看的需求,需要对播放过的立体图像或立体视频进行录制并重现。
在现有技术中,通常采用摄像头对正在播放的立体图像或立体视频进行录制,具体来说,需要两个摄像机同时录制VR显示设备的左右显示屏。由于同一时刻,左右显示屏的显示内容存在略微差异,直接播放录制的图像时无法实现立体图像播放效果。
基于此,需要实现对立体图像的录制和重现的方案。
发明内容
有鉴于此,本发明实施例提供一种立体图像重现方法、装置、设备和存储介质,用以满足对立体图像的录制和重现的方案。
第一方面,本发明实施例提供一种立体图像重现方法,包括:
基于预设的视点对待重现立体图像扫描,获取所述待重现立体图像中天空球包络面图像相对于所述视点的天空包络面坐标和对应的天空包络面纹理;
获取所述待重现立体图像中物体图像相对于所述视点的物体图像坐标和对应的物体图像纹理;
根据所述天空包络面坐标和对应的所述天空包络面纹理,以及所述物体图像坐标和对应的所述物体图像纹理,还原生成立体图像。。
第二方面,本发明实施例提供一种立体图像重现装置,所述装置包括:
获取模块,用于基于预设的视点对待重现立体图像扫描,获取所述待重现立体图像中天空球包络面图像相对于所述视点的天空包络面坐标和对应的天空包络面纹理;获取所述待重现立体图像中物体图像相对于所述视点的物体图像坐标和对应的物体图像纹理;
还原模块,用于根据所述天空包络面坐标和对应的所述天空包络面纹理,以及所述物体图像坐标和对应的所述物体图像纹理,还原生成立体图像。
第三方面,本发明实施例提供一种电子设备,包括:存储器、处理器;其中,
所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行时实现如第一方面所述的立体图像重现方法。
第四方面,本发明实施例提供一种计算机存储介质,用于储存计算机程序,所述计算机程序使计算机执行时实现如第一方面所述的立体图像重现方法。
本发明实施例提供的立体图像重现方法、装置、设备和存储介质,通过预先设定用于对待重现立体图像进行扫描的视点,扫描获取待重现立体图像中的相关数据,包括:天空包络面图像相对于视点的天空包络面坐标和对应的天空包络面纹理,以及物体图像相对于视点的物体图像坐标和对应的物体图像纹理。在重现立体图像过程中,根据获得的天空包络面坐标和对应的天空包络面纹理,还原生成天空图像;根据获得的物体图像坐标和对应的物体图像纹理,还原生成物体图像。通过上述技术方案,能够获取待重现立体图像中天空球包络面图像对应的天空包络面坐标和天空包络面纹理,以及物体图像对应的物体坐标和物体纹理,以便更加真实、准确地还原得到立体图像。解决了无法对立体图像进行录制并还原重现的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种立体图像重现方法的流程示意图;
图2为本发明实施例中提供的光线投射方法获取图像数据的示意图;
图3为本发明实施例提供的天空球包络面图像的效果示意图;
图4为本发明实施例提供的还原立体图像的流程示意图;
图5为本发明实施例提供的立体图像重现装置的结构示意图;
图6为本发明实施例提供的一种用于实现图1所示方法的电子设备示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义,“多种”一般包含至少两种,但是不排除包含至少一种的情况。
应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
取决于语境,如在此所使用的词语“如果”、“若”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者***不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者***所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的商品或者***中还存在另外的相同要素。
图1为本发明实施例提供的一种立体图像重现方法的流程示意图,主要包括:
101:基于预设的视点对待重现立体图像扫描,获取所述待重现立体图像中天空球包络面图像相对于所述视点的天空包络面坐标和对应的天空包络面纹理。
在实际应用中,待重现立体图像主要包含两部分,天空球包络面图像和物体图像。在获取天空球包络面图像相关数据和物体图像相关数据时,首先需要确定视点,基于该视点进一步地获取天空球包络面图像相关数据和物体图像相关数据。这里所说的视点可以理解为是观看者所在的视角位置,因此,所获取的天空球包络面图像和物体图像都是基于视点所看到的效果图像。一般来说,该视点位于天空球的球心的位置。
天空球包络面图像主要包括多个天空球包络面,每个天空球包络面都有其对应的坐标和纹理,换言之,天空球包络面图像包含天空包络面坐标和对应的天空包络面纹理。
102:获取所述待重现立体图像中物体图像相对于所述视点的物体图像坐标和对应的物体图像纹理。
在实际应用中,物体图像中可能同时包含多个物体,每个物体都有其对应的坐标和纹理,换言之,物体图像包含物体坐标和对应的物体图像纹理。随着视点的变化,物体呈现角度和对应的物体图像纹理也发生变化。
如前文所述,在获取天空球包络面图像和物体图像时,可以采用光线投射算法(Raycasting),获取到所需的图像。例如,如图2所示,假设从图中视点发射出尽可能都的射线,每条射线都会与正方体相交于两点。由于正方体为凸面腔体,每条与之相交的射线会有穿入、穿出两个交点;若出现切点可以认为是穿入点与穿出点重合。根据足够多的交点,可以构成包络面。
103:根据所述天空包络面坐标和对应的所述天空包络面纹理,以及所述物体图像坐标和对应的所述物体图像纹理,还原生成立体图像。
在根据前文所述方法,获取到天空包络面坐标和对应的天空包络面纹理,以及对应的物体图像坐标和对应的物体图像纹理之后,可以采用光线投射算法合成得到所需立体图像。
在本发明的一个或者多个实施例中,所述基于预设的视点对待重现立体图像扫描,获取所述待重现立体图像中天空球包络面图像相对于所述视点的天空包络面坐标和对应的天空包络面纹理,具体可以包括:分解所述待重现立体图像,以获得多个所述天空球包络面图像;连接所述视点与所述天空球包络面图像的中心点,以生成扫描直线;确定所述扫描直线与所述天空球包络面图像的交点坐标为所述天空包络面坐标;读取所述天空包络面坐标对应的所述天空包络面纹理。
在实际应用中,将视点作为原点,建立一个三维坐标系。分解(比如,正三角形分割法)待重现立体图像后,可以得到多个天空球包络面图像,如图3所示,该图像比如可以是通过正三角形分割法分割得到的三角形图像。进一步地,将视点与天空球包络面图像的中心点连接,即将视点与三角形的中心点连接,生成扫描直线。将扫描直线与天空球包络面图像的交点坐标,作为天空包络面坐标,需要说明的是,天空包络面坐标是基于视点确定的。基于该天空包络面坐标,读取对应的天空包络面纹理。
例如,将待重现立体图像进行分解,可以得到由n个三角形的天空球包络面图像构成的天空球图像(一般来说,三角形越多,有三角形组成的包络面越接近球面本身)。进一步地,采用Raycasting算法,基于视点向各个三角形的中心点发射射线,连接得到扫描直线。基于视点,确定扫描直线与三角形之间形成的交点对应的坐标值。读取该坐标值对应的天空包络面纹理。
在本发明的一个或者多个实施例中,获得多个天空球包络面之后,还可以包括:标记所述天空球包络面的包络面编号;根据所述包络面编号的顺序,依次生成所述扫描直线。
如前文所述可知,经过分解后可以获得多个天空球包络面图像,为了便于对天空球包络面图像的相关数据的存储和管理,可以对获得的各个天空球包络面图像进行编号,并根据编号的顺序,依次生成通过视点和天空包络面图像中心的扫描直线。
在本发明的一个或者多个实施例中,所述获取所述待重现立体图像中物体图像相对于所述视点的物体图像坐标和对应的物体图像纹理,具体可以包括:标记所述物体图像中的各物体,以生成包含物体编号的物体列表;根据所述物体列表,依次获得各所述物体编号对应的所述物体图像坐标和所述物体图像纹理。
在实际应用中,物体图像中可能同时具有多个物体,为了便于对物体图像相关数据的存储和管理,可以对各个物体进行编号,生成物体列表。并根据物体列表,依次获得物体图像坐标和对应的物体图像纹理。换言之,在存储物体图像的物体编号时,对应存储该物体编号对应的物体图像坐标和物体图像纹理,以便后续可以根据物体图像列表实现对立体图像的还原。
在本发明的一个或者多个实施例中,所述标记所述物体图像中的各物体,以生成包含物体编号的物体列表,具体可以包括:根据生成所述扫描直线的顺序,标记所述物体图像中的各所述物体的物体编号;生成包含所述物体编号的所述物体列表。
具体来说,在对多个物体进行编号时,可以根据扫描直线的生成顺序进行标记。例如,在依次生成各个扫描直线时,部分扫描直线会穿过物体(与物体的至少两个面相交,形成两个交点),并且还可能存在多条扫描直线穿过同一物体的情况。为了便于对物体识别,按照扫描直线的生成顺序进行编号。进一步的,生成包含物体编号的物体列表。
在本发明的一个或者多个实施例中,标记所述物体图像中的各所述物体的物体编号之后,还可以包括:隐藏被标记的所述物体,以避免被重复标记;其中,所述物体编号为经过所述物体的第一条所述扫描直线时标记的所述物体编号。
如前文所述可知,可能存在多条扫描直线穿过同一个物体的情况。为了避免同一个物体被重复标记,因此,可以在确认物体被第一条扫描直线穿过后,对该物体进行编号,然后将物体隐藏(换言之,使得该物体相对于其他扫描直线来说是透明的状态)。
在本发明的一个或者多个实施例中,所述根据所述物体列表,依次获得各所述物体编号对应的所述物体图像坐标和所述物体图像纹理,具体可以包括:根据所述物体列表中所述物体编号的顺序,依次确定所述扫描直线与所述物体的交点坐标为所述物体图像坐标;读取所述物体图像坐标对应的所述物体图像纹理。
例如,在标记完成对物体图像中各个物体的物体编号后,根据物体编号的顺序依次确定物体图像坐标和对应的物体图像纹理。
在本发明的一个或者多个实施例中,所述根据所述天空包络面坐标和对应的所述天空包络面纹理,以及所述物体图像坐标和对应的所述物体图像纹理,还原生成立体图像,具体如图4所示,可以包括以下步骤:401:根据所述包络面编号对应的所述天空包络面坐标和所述天空包络面纹理,还原生成所述天空球包络面图像;402:根据所述物体编号对应的所述物体坐标和所述物体纹理,还原生成所述物体图像;403:合成所述天空球图像和所述物体图像,以获得所述立体图像。
如前文所述可知,在还原立体图像的时候,需要还原两部分,分别是还原天空球图像和还原物体图像。
还原天空球图像过程如下:
首先,按照天空包络面坐标,将其还原到天空球上,生成天空球的形状包络面。进一步地,从天空球中第一个坐标点开始,根据编号顺序依次读取每个点的天空包络面纹理,生成一张纹理颜色图,这个纹理颜色图可以是一个Delaunay三角形状图像。生成方式为在每个坐标点上构建切线空间,在法线和副法线方向上组成的2D平面上计算每一个点与原点的相对位置,确定天空包络面坐标,然后对三角形进行插值填充,即可恢复天空球的颜色信息。
还原物体图像过程与还原天空球过程类似,这里就不再赘述。具体方法可参考前文还原天空球方法。
需要说明的是,为了能够更好的还原立体图像,通过以上两步,场景内的天空球图像和物体图像都得到了重现。在场景内设定自发光着色器,也就是打开场景内的光源后,启动渲染引擎,用户就可以看之前录制的立体图像。
基于同样的思路,本发明实施例还提供一种立体图像重现装置,如图5所示,该装置包括:
获取模块51,用于基于预设的视点对待重现立体图像扫描,获取所述待重现立体图像中天空球包络面图像相对于所述视点的天空包络面坐标和对应的天空包络面纹理;获取所述待重现立体图像中物体图像相对于所述视点的物体图像坐标和对应的物体图像纹理。
还原模块52,用于根据所述天空包络面坐标和对应的所述天空包络面纹理,以及所述物体图像坐标和对应的所述物体图像纹理,还原生成立体图像。
进一步地,还包括:获取模块51,用于分解所述待重现立体图像,以获得多个所述天空球包络面图像;连接所述视点与所述天空球包络面图像的中心点,以生成扫描直线;确定所述扫描直线与所述天空球包络面图像的交点坐标为所述天空包络面坐标;读取所述天空包络面坐标对应的所述天空包络面纹理。
进一步地,还包括:标记模块53,标记所述天空球包络面的包络面编号;根据所述包络面编号的顺序,依次生成所述扫描直线。
进一步地,还包括:标记模块53,用于标记所述物体图像中的各物体,以生成包含物体编号的物体列表;
根据所述物体列表,依次获得各所述物体编号对应的所述物体图像坐标和所述物体图像纹理。
进一步地,标记模块53,用于根据生成所述扫描直线的顺序,标记所述物体图像中的各所述物体的物体编号;生成包含所述物体编号的所述物体列表。
进一步地,标记模块53,用于隐藏被标记的所述物体,以避免被重复标记;其中,所述物体编号为经过所述物体的第一条所述扫描直线时标记的所述物体编号。
进一步地,标记模块53,用于根据所述物体列表中所述物体编号的顺序,依次确定所述扫描直线与所述物体的交点坐标为所述物体图像坐标;读取所述物体图像坐标对应的所述物体图像纹理。
进一步地,还原模块52,用于根据所述包络面编号对应的所述天空包络面坐标和所述天空包络面纹理,还原生成所述天空球包络面图像;根据所述物体编号对应的所述物体坐标和所述物体纹理,还原生成所述物体图像;合成所述天空球图像和所述物体图像,以获得所述立体图像。
基于同样思路,如图6所示,本发明实施例还提供一种电子设备。包括:存储器61和处理器62;其中,所述存储器61用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器62执行时实现如前文所述的立体图像重现方法。
基于同样的思路,本发明实施例还提供一种计算机存储介质,用于储存计算机程序,所述计算机程序使计算机执行时实现如前文所述的立体图像重现方法。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助加必需的通用硬件平台的方式来实现,当然也可以通过硬件和软件结合的方式来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以计算机产品的形式体现出来,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程坐标确定设备的处理器以产生一个机器,使得通过计算机或其他可编程坐标确定设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程坐标确定设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程坐标确定设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。