用于直播流化的虚拟现实360度视频相机系统的制作方法

文档序号:17851899发布日期:2019-06-11 22:17阅读:213来源:国知局
用于直播流化的虚拟现实360度视频相机系统的制作方法

本申请是2016年6月7日提交的第62/347,077号美国临时专利申请的非临时申请,该临时专利申请的内容通过引用合并于此。



背景技术:

流式(streaming)360度视频内容可以为虚拟现实(vr)和增强现实(ar)应用提供沉浸式环境。



技术实现要素:

一方面,提供了一种成像系统。成像系统包括多个相机,被配置为基于环境的相应视场捕捉视频图像数据。多个相机中的每个相机经由通信接口通信地耦合到多个相机中的相邻相机。多个相机中的每个相机包括至少一个处理器和存储器。至少一个处理器执行存储在存储器中的指令以执行操作。操作包括捕捉相应视场的视频图像数据并确定重叠区域。重叠区域包括由相应相机和至少一个相邻相机捕捉的视频图像数据的重叠部分。操作还包括基于重叠区域对捕捉到的相应视场的视频图像数据进行裁剪(cropping)和变形(warping),以形成相应经处理的视频图像数据。

一方面,提供了一种方法。该方法包括接收与成像系统的多个相机中的相应相机相关联的经处理的视频图像数据。多个相机中的每个相机被配置为捕捉环境的相应视场的视频图像。经处理的视频图像数据包括基于重叠区域被裁剪和变形的视频图像数据。重叠区域包括由多个相机中的至少两个相邻相机捕捉的视频图像数据的重叠部分。该方法还包括经由多个通信链路向客户端设备提供流式视频(streamedvideo)。流式视频基于经处理的视频图像数据。

一方面,提供了一种系统。该系统包括用于执行本文描述的其他相应方面的操作的各种装置。

通过阅读以下详细描述并参考适当的附图,这些以及其他实施例、方面、优点和替代方案对于本领域普通技术人员将变得显而易见。此外,应该理解的是,本发明内容以及本文提供的其他描述和附图旨在仅通过示例的方式说明实施例,并且如此一来,许多变型是可能的。例如,结构元件和处理步骤可以重新排列、组合、分配、消除或以其他方式改变,同时保持在所要求保护的实施例的范围内。

附图说明

图1示出了传统的虚拟现实360°视频流化管线(streamingpipeline)。

图2示出了传统的虚拟现实360°视频流化管线。

图3示出了传统的虚拟现实360°视频流化管线。

图4示出了传统的虚拟现实360°视频流化管线。

图5示出了根据示例实施例的分布式虚拟现实360°视频捕捉、处理和流化系统。

图6示出了根据示例实施例的系统。

图7示出了根据示例实施例的具有分离的相机的系统。

图8示出了根据示例实施例的几何相机布置。

图9a和9b示出了根据示例实施例的单元间连接。

图10示出了根据示例实施例的邻近相机单元中的变形和裁剪。

图11a和11b示出了根据示例实施例的通过估计深度图来对图像帧变形和裁剪。

图12示出了根据示例实施例的通过图形切割对图像帧的变形和裁剪。

图13示出了根据示例实施例的从捕捉到消费的直播流。

图14示出了根据示例实施例的从捕捉到消费的直播流。

具体实施方式

本文描述了示例方法、设备和系统。应当理解,词语“示例”和“示例性”在本文中用于表示“用作示例、实例或说明”。本文中描述为“示例”或“示例性”的任何实施例或特征并不必要被解释为比其他实施例或特征更优选或更具优势。在不脱离本文提出的主题的范围的情况下,可以利用其他实施例,并且可以进行其他改变。

因此,本文描述的示例实施例不意味着限制。如在此一般描述的和在附图中示出的本公开的各方面可以以各种不同的配置来布置、替换、组合、分离和设计,所有这些都在本文中考虑到。

此外,除非上下文另有所指,否则每个附图中示出的特征可以彼此组合使用。因此,附图通常应被视为一个或多个整体实施例的组成方面,应理解并非所有示出的特征对于每个实施例都是必需的。

i.概述

虚拟现实(vr)360°视频从生产到消费具有很长的管线(pipeline)。图1示出了传统的虚拟现实360°视频流化管线100。(1)它以vr360°相机开始,该相机通常由多个相机组成。这些相机安装在装备(rig)上,并且每个相机布置成捕捉不同的视角。这些相机包括重叠的视场(fov),以通过图像拼接(stitch)覆盖整个360×180度的球形视图。(2)将来自每个相机的数据读入到处理单元中,该处理单元将多个视频流对齐并拼接成一个360°流;(3)然后可以编辑该360°流;(4)然后对经编辑的视频进行编码并上传到云端;(5)然后该视频在云端被转码并准备好流化;(6)视频内容被分发至客户端;(7)客户端应用接收该内容并为最终用户渲染/显示它们。

在实际实现中,该管线可能会分成几个组件。例如,图2示出了传统的虚拟现实360°视频流化管线200,其由a.360°相机、b.强大的计算机、c.强大的云服务器、以及d.vr头盔或智能电话构成。在此配置中,强大的计算机(c)做了大量繁重的工作,从拼接、编辑、编码到上传。请注意,计算机从360°相机接收巨大量的数据,拼接和编码的计算成本是高昂的,本地存储必须足够大以容纳大数据,并且需要花费大量时间和带宽将经处理的视频上传到因特网中的云端。由于这些困难,使得此计算机必须是超级强大的(快速i/io、大量内存、快速cpu或gpu、以及快速的因特网连接),这是昂贵的。更重要的是,虽然360°相机可以为了更高的质量而轻松扩展以包含更多的相机,但相应地扩展该强大的计算机是困难的。因此,此解决方案通常对于直播流化而言无法足够快速地处理数据。

图3示出了传统的虚拟现实360°视频流化管线300,其中编码和上传是用(一个或多个)专用设备完成的,并且该强大的计算机仅处理视频编辑和拼接。但同样,随着360°相机的扩展,拼接可能对于直播流化而言无法足够快速地完成;并且另外,一个专用设备可能无法实时地编码高分辨率(例如4k、8k、12k)视频。

另一个传统的虚拟现实360°视频流化管线400如图4所示。拼接和编码是用360°相机中的硬件解决方案完成的,该强大的计算机进行进一步编辑和编码(如果需要的话)并上传最终结果。在这种配置中,vr相机中的工作通常非常繁重,以至于经常不得不牺牲视频质量和分辨率。

我们针对vr360°视频捕捉和直播流化提出分布式架构。图5示出了根据示例实施例的分布式虚拟现实360°视频捕捉、处理和流化系统500。系统的每个相机都集成有处理器(cpu、gpu)、储存体和传输单元。因此,每个相机可以合并到集成模块中。该模块可以被配置为针对小的fov执行图像捕捉、变形、拼接、编辑、编码、转码、上传。此vr360°视频相机系统由k个集成相机模块组成。这些模块彼此通信以获得最佳拼接,并且可以并行执行操作。

由于来自每个集成相机模块的视频都经过了仔细的变形和裁剪,因此无需再对齐来将它们拼接在一起。可以选择以相对低的计算成本在云端将所有视频拼接在一起,或者选择在最终显示设备(例如,vr头盔、智能电话等)上的渲染期间将它们拼接。

ii.示例系统

a.集成相机单元

在一个实施例中,相机、处理器、储存体和传输模块的集成单元可以制成一个模块,如图6所示。即,图6示出了根据示例实施例的系统600。

在另一个实施例中,相机可以与其他组件在物理上分离,如图7所示。图7示出了根据示例实施例的具有分离的相机的系统700。这样的布置可以使得更容易将相机附接到vr360°相机装备上的正确位置。

每个相机单元还可以包括麦克风,使得所有相机单元一起能够在不同方向上记录和流化声音。

b.vr360°相机系统的几何结构

vr360°相机系统可由各种数量的相机构成。这些相机可以以各种方式几何布置,以覆盖期望的fov。图8示出了根据示例实施例的几何相机布置800。图8示出了覆盖完整球形的视野的14个相机单元的示例性几何布置。上部的相机1(平面1)面向上,并用鱼眼镜头覆盖100°×100°的fov。平面2中的相机2-7面向外,并覆盖50°×360°的fov的圆柱视野,其中的每个视野覆盖50°×65°的fov,在连续(例如,邻近和/或相邻的)相机之间具有5°水平重叠。系统的下半部分(例如,相机8-14)可以相对于上半部分对称。

如果期望小于球形的fov,或者如果每个单独的相机具有更大的fov,则可以实现更少的相机。如果期望相机之间的更多重叠(例如,为了更容易拼接、更多冗余),或者如果每个单独相机具有更小的fov,则可以实现更多的相机。

在示例实施例中,可以沿每个平面(例如,在每个视点处)布置一对相机,以为每个视野提供立体视图。

另外,尽管本公开提供了涉及360°视频的示例,但是可以应用相同的方法和系统来提供具有小于360°的视场的视频。

c.相机单元之间的互连

在所提出的vr360°相机系统中,每个相机单元以以下方式处理视频帧:来自不同相机单元的输出帧可以被直接拼接以形成球形视图,或者可以被拼接以形成需少量进一步处理的球形视图。在这种情况下,每个相机需要从其相邻相机单元(例如,相邻相机)接收信息,以执行图像处理(例如,变形和/或裁剪)。

在一个实施例中,这些相机单元经由有线或无线通信接口(例如,蓝牙、蓝牙低功耗、wifi或其他类型的通信协议)彼此直接连接,如图9a所示。图9a示出了单元间(inter-unit)连接。在另一个实施例中,每个相机单元可以经由有线或无线通信接口连接到中央集线器(hub)设备,如图9b所示。该互连允许相机单元在运行时交换用于每个相机单元上的相应图像处理的信息。

在一个实施例中,可以预校准每个相机的几何位置,这可以避免运行时期间相机之间的通信。这以拼接质量为代价简化了系统。例如,高质量的拼接是相机的几何布置以及成像对象的空间位置两者的结果。

电池可以包含也可以不包含在集成单元中。例如,成像系统可以是外部供电的。附加地或替代地,电池可以为成像系统提供一些或全部电力。

在示例实施例中,网络设备可以合并在vr相机系统与云服务器之间的通信链路和硬件架构中,以便加速或帮助促进上传过程。

iii.示例方法

a.相机同步

所提出的vr360°相机系统中的每个相机单元捕捉球形视野的一部分。为将来自每个相机的图像一起拼接成360°图像帧(和360°视频),需要同步每个相机单元中的图像捕捉。可以基于相机之间的通信,来同步相机系统时钟。附加地或替代地,可以在相机捕捉视频的同时,发射同步闪光。在这种情况下,可以通过从相应视频数据中找到捕捉了该同步闪光的帧,来同步相机。附加地或替代地,可以通过分析最终视频片段(clip)(例如,通过在相同时间停止相机的视频捕捉),来同步相机。

如果所有相机都是同步的,则对于任何给定时间t,在目标360°视频中,可以在每个视频片段上定位最接近t的一帧,并且将它们拼接在一起。这里可以在时间维度中使用线性插值,从而得到更好的平滑度。

b.用于视频拼接的变形和裁剪

1.背景

视频拼接难度可以源于:1)镜头失真;以及2)相机之间的视场视差(disparity)。镜头失真可以通过相机校准很大程度地校正,这可以在运行时之前或在运行时完成。相机视差是依赖于场景的,并且可以使用视频正被捕捉时的相机重叠来解决。

来自一个相机单元的帧与来自其相邻相机单元的那些帧重叠。图10示出了来自不同相机单元的两个帧。重叠的区域使用红色矩形标记。这些重叠区域被用于对帧进行变形和裁剪。一旦对各个帧执行了这种变形和/或裁剪,就可以无缝地对帧进行拼接,如图所示。

可以以各种方式传输重叠区域的信息。1)可以向其相邻相机单元传输最大可能的重叠区域(如图10中的红色矩形所示);2)可以检测这些区域中的特征点(例如,尺度不变特征变换(sift)点),并将这些特征点传输到其相邻的相机单元;3)可以传输像素的重叠区域和检测到的特征点两者;4)可以对于每个帧、或帧的周期性或非周期性间隔,来传输这些信息。例如,响应于捕捉的场景改变了阈值量(例如,基于图像直方图或另一图像度量)和/或已知重叠区域附近的特征移动了超过阈值距离,可以将关于重叠区域的信息传输到相邻相机。

2.每个相机单元的视频变形和裁剪

图11a和11b示出了根据示例实施例的通过估计深°图来对图像帧进行变形和裁剪。图11a和11b示出了2d视野中的示例,其中五个相机在360°视野中均匀分布,每个相机覆盖90°fov。在一种方法中,每个相机单元负责产生来自中心点的视点(pointofview)的最终的72°的图像,使得对来自五个相机的所有帧进行组合产生了来自单个视点o的一个360°的帧。在校准期间,预先确定每个相机单元负责的fov。

如图11b所示,利用来自视点a的图像f1和分别来自相邻相机的来自点b和c的图像f2和f3,存在各种方式产生来自单个视点o的图像,示例处理如图11b所示:

1.在f1与f2之间,计算f1最右边的像素p1的视差,然后推断出该像素的深度。

2.在f1与f3之间,计算f1最左边的像素p2的视差,然后推断出该像素的深度。

3.估计f1中其他像素的深度,使用p1和p2的深度的线性插值。

4.随着每个像素的深度被估计,我们可以将f1重映射到对于视点o的目标72°。

不需要明确地计算出深度以产生目标图像。另一示例性解决方案如图12所示。图12示出了根据示例实施例的通过图形切割(cut)对图像帧的变形和裁剪。

1.对于来自点a的每一帧(2),取可能重叠的区域。例如,来自视点c和a的区域w和u、以及来自视点a和b的区域p和q。

2.对于每对重叠区域,找到使w与u之间、以及p与q之间的不连续性最小化的最佳切割,如(4)和(5)所示。在文献中已经提出了许多图形切割算法。

3.如(6)所示,从帧1裁剪掉区域w和区域q,然后将其余区域水平地变形成图像的矩形。

4.实际上,每个帧可以与其相邻的相机具有四个重叠区域。结果,可以在四个方向上裁剪帧1,如(7)所示的w、v、q、y。然后将其余区域水平地和垂直地变形为最终的矩形图像。

5.来自所有相机的经裁剪和变形的帧将覆盖整个球形视野,具有减少量的拼接伪影(artifact)。

在一个实施例中,对于时间平滑性,当在重叠区域之间找到最佳切割时,可以提出额外的平滑约束(例如,执行边缘对齐、运动补偿、颜色/形状匹配、色调映射、曝光校正等)。

可以对于每个帧或对于帧的周期性或非周期性间隔,来完成该处理。可以基于图像处理周期之间的相应图像中的估计出的移动速率和/或其他变化,来内插该图形切割(例如,裁剪和变形)。

c.数据储存体

来自每个相机单元的视频数据可以立即保存到本地储存体,或者也可以在保存到本地储存体之前首先被裁剪和变形(如之前部分中所描述的)。

在保存到本地储存体中的一个文件之前,还可以对视频数据进行编码(例如,h.264、vp8、vp9等)。视频数据还可以被编码成本地储存体中的一系列小的数据块文件(trunkfile),用于以后的流化(例如,hls、dash)。

d.视频数据上传和直播流

无论是否保存到本地储存体,经处理的视频数据都可以实时上传到云端。对于如图13所示的示例,随着视频数据被编码成小的数据块,每个数据块可以立即上传到云端。图13示出了根据示例实施例的从捕捉到消费的直播流1300。

在这种情况下,云端能够经由各种流协议(例如,hls、dash等)向多个用户广播。

注意,vr360°相机系统由许多相机单元构成。每个单元将一个数据流上传到云端,如图13所示。可以在云端流服务器中创建元数据,以描述vr360°相机系统的几何信息和其他视频元数据(例如,帧速率、分辨率、视频格式、视频/音频编解码器等)。

1.客户端应用上的流和拼接

客户端设备上的应用首先从流服务器抓取元数据,然后连接到所有所需的视频数据块列表。该应用被设计为根据需要对所需的视频数据块进行流化和同步、将它们拼接在一起、渲染到屏幕,从而为最终用户提供vr360°视频。在2016年4月8日提交的第62/320,451号美国临时专利申请中描述了一种可能的应用解决方案。

2.在云端上拼接,然后流化到客户端应用

还可以在云端上拼接来自的所有相机单元的视频数据。由于所有数据在上传之前已经被对齐,因此拼接的计算量相对较低并且可以实时完成。在拼接之后,拼接后的视频数据看起来是常规视频流,其可以经由常规流化协议(例如,hls、dash等)流化到客户端设备。

3.结合云拼接和客户端拼接

还可以在云端上拼接低分辨率360°视频,并在客户端应用中拼接高分辨率360°视频。为了节省云端上的计算,vr360°相机系统中的每个相机单元可以向云端上传两个系列的数据块,一个高分辨率数据块和一个低分辨率数据块,如图14所示。图14示出了根据示例实施例的从捕捉到消费的直播流1400。

图中所示的特定布置不应视为限制。应该理解的是,其他实施例可以包括给定附图中所示的每个元件的更多或更少。此外,可以组合或省略一些所示元件。此外,说明性实施例可包括图中未示出的元件。

表示信息处理的步骤或块可以对应于可以被配置为执行本文描述的方法或技术的特定逻辑功能的电路。替代地或另外地,表示信息处理的步骤或块可以对应于模块、段或程序代码的一部分(包括相关数据)。程序代码可以包括可由处理器执行的一个或多个指令,用于实现方法或技术中的特定逻辑功能或动作。程序代码和/或相关数据可以存储在任何类型的计算机可读介质上,例如包括磁盘、硬盘驱动器或其他存储介质的存储设备。

计算机可读介质还可以包括非暂时性计算机可读介质,诸如计算机可读介质,其存储短时间段的数据,如寄存器存储器、处理器高速缓存和随机存取存储器(ram)。计算机可读介质还可以包括非暂时性计算机可读介质,其存储程序代码和/或数据更长的时间段。因此,计算机可读介质可以包括二级或持久长期存储,例如只读存储器(rom)、光盘或磁盘、光盘只读存储器(cd-rom)。计算机可读介质还可以是任何其他易失性或非易失性存储系统。计算机可读介质可以被认为是计算机可读存储介质,例如有形存储设备。

虽然已经公开了各种示例和实施例,但是其他示例和实施例对于本领域技术人员而言将是显而易见的。各种公开的示例和实施例是出于说明的目的而不是限制性的,真实范围由所附权利要求指示。

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