用于生成光流的方法和系统转让专利

申请号 : CN201780035313.2

文献号 : CN109314752B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 布里安·基思·卡布拉尔福里斯特·塞缪尔·布里格斯阿尔贝特·帕拉·波索皮特·瓦伊达

申请人 : 脸谱公司

摘要 :

一种画布生成系统,基于描述场景的一组原相机视图生成场景的画布视图,例如重新创建虚拟现实场景。基于从一组原相机视图生成的一组合成视图能生成画布视图。例如,通过基于跨多个原相机视图的光流位移并且混合相关的原相机视图能生成合成视图。使用单独优化用于相机视图的每个像素的光流矢量并且将光流的变化传播至相邻的光流矢量的迭代方法能生成光流。

权利要求 :

1.一种用于生成光流的方法,所述方法包括:

接收第一相机视图和第二相机视图,所述第一相机视图和所述第二相机视图各自由一组像素组成,每个相机视图代表由相机捕获的图像,并且每个相机视图与从中捕获该相机视图的位置相关联;

初始化光流,所述光流将所述第一相机视图中的像素与所述第二相机视图中的对应像素进行映射;以及按照所述第一相机视图的像素的有序序列,优化用于所述第一相机视图的每个像素的所述光流,其中,优化用于每个像素的所述光流包括:生成用于所述像素的一组光流提议,每个光流提议将所述像素映射至所述第二相机视图的像素,所述一组光流提议包括与所述有序序列中的一个或多个先前像素相关联的光流提议;并且分析所述一组光流提议的每个光流提议;并且

基于所述一组光流提议中的所选择的光流提议,更新用于所述像素的所述光流。

2.根据权利要求1所述的方法,其中,光流是将相机视图中的每个像素与光流矢量相关联的矢量场,所述光流矢量给出所述像素与另一相机视图中的对应像素之间的位移。

3.根据权利要求2所述的方法,其中,用于像素的一组光流提议包括:与所述像素的上方相邻像素相关联的光流矢量、与所述像素的左侧相邻像素相关联的光流矢量、以及当前光流矢量的随机扰动。

4.根据权利要求1所述的方法,进一步包括:建立包括数据和正则项的变量优化问题。

5.根据权利要求4所述的方法,其中,更新用于像素的所述光流包括:选择将所述变量优化问题移至最接近解的所述光流提议。

6.根据权利要求1所述的方法,进一步包括:对所述光流应用中值滤波。

7.根据权利要求1所述的方法,其中,接收第一相机视图和第二相机视图包括:接收包括所述第一相机视图和第二相机视图以及一个或多个其他相机视图的一组相机视图,并且进一步包括:初始化并且优化用于所述一组相机视图中的各个其他相机视图的光流。

8.根据权利要求1所述的方法,其中,按照从所述第一相机视图的左上方像素开始并且前进至右下方像素的有序序列,优化用于所述第一相机视图的像素的光流。

9.根据权利要求1所述的方法,进一步包括:优化用于所述第一相机视图的每个像素的光流,直至光流质量的测量值达到阈值分数。

10.根据权利要求1所述的方法,其中,初始化所述光流包括:放大低分辨率光流;并且

成比例地增大所述低分辨率光流内的光流矢量的幅值。

11.一种用于生成光流的系统,包括:

输入模块,所述输入模块被配置为接收第一相机视图和第二相机视图,所述第一相机视图和所述第二相机视图各自由一组像素组成,每个相机视图代表由相机捕获的图像,并且每个相机视图与从中捕获该相机视图的位置相关联;

光流计算模块,所述光流计算模块被配置为:

初始化光流,所述光流将所述第一相机视图中的像素与所述第二相机视图中的对应像素进行映射;以及按照所述第一相机视图的像素的有序序列,优化用于所述第一相机视图的每个像素的所述光流,其中,优化用于每个像素的所述光流包括:生成用于所述像素的一组光流提议,每个光流提议将所述像素映射至所述第二相机视图的像素,所述一组光流提议包括与所述有序序列中的一个或多个先前像素相关联的光流提议;并且分析所述一组光流提议的每个光流提议;并且

基于所述一组光流提议中的所选择的光流提议,更新用于所述像素的所述光流。

12.根据权利要求11所述的系统,其中,光流是将相机视图中的每个像素与光流矢量相关联的矢量场,所述光流矢量给出所述像素与另一相机视图中的对应像素之间的位移。

13.根据权利要求12所述的系统,其中,用于像素的一组光流提议包括:与所述像素的上方相邻像素相关联的光流矢量、与所述像素的左侧相邻像素相关联的光流矢量、以及当前光流矢量的随机扰动。

14.根据权利要求11所述的系统,其中,所述光流计算模块被进一步配置为:建立包括数据和正则项的变量优化问题。

15.根据权利要求14所述的系统,其中,更新用于像素的所述光流包括:确定将所述变量优化问题移至最接近解的所述光流提议。

16.根据权利要求11所述的系统,进一步包括:对所述光流应用中值滤波。

17.根据权利要求11所述的系统,其中,接收第一相机视图和第二相机视图包括:接收包括所述第一相机视图和第二相机视图以及一个或多个其他相机视图的一组相机视图,并且其中,所述光流计算模块被进一步配置为:初始化并且优化用于所述一组相机视图中的各个其他相机视图的光流。

18.根据权利要求11所述的系统,其中,按照从所述第一相机视图的左上方像素开始并且前进至右下方像素的有序序列,优化用于所述第一相机视图的像素的光流。

19.根据权利要求11所述的系统,其中,所述光流计算模块被进一步配置为:优化用于所述第一相机视图的每个像素的光流,直至光流质量的测量值达到阈值分数。

20.根据权利要求11所述的系统,其中,初始化所述光流包括:放大低分辨率光流;并且

成比例地增大所述低分辨率光流内的光流矢量的幅值。

说明书 :

用于生成光流的方法和系统

背景技术

[0001] 本公开整体涉及用于虚拟现实头盔的画布视图的生成,并且更具体地,涉及来自通过相机捕获的图像的画布视图生成。画布视图代表了重新创建虚拟现实场景的全景广角视图,并且能与其他画布视图配对而给出场景的3D立体效果。关于画布视图生成的现有技术可能运行缓慢,例如,要求来自用户的手动拼接或其他输入,并且当处理诸如相机视图之间的不同亮度或色彩等源相机视图中的差异时,现有技术会遇到问题。

发明内容

[0002] 本发明的实施方式能基于描述例如通过图像捕获系统中的相机捕获的场景和描述通过多个相机捕获的场景的图像或一组原相机视图生成场景的画布视图。基于合成的位置将画布视图中的每个区域与合成视图的区域相关联的第一映射和将相机视图的区域与合成视图的区域相关联的第二映射能生成画布视图。能够对生成的映射进行组合,以生成将画布视图中的每个区域与该组相机视图中的一个或多个相机视图的区域相关联的组合映射,然后,对相机视图应用组合映射,以生成画布视图。
[0003] 例如,基于代表共享一个或多个共同对象的场景的图像的第一相机视图和第二相机视图能生成合成视图。使用在第一相机视图与第二相机视图之间关联用于像素的光流能将第一相机视图与第二相机视图关联起来。基于光流,第一相机视图与第二相机视图能“位移”至各自接近所希望的合成视图。然后,能一起混合或均化合成视图的两个接近(即,像素色彩值),以生成合成视图。
[0004] 在合成视图的生成过程中,能使用关联多个相机视图上的对应点的光流。例如,表示为一组光流矢量(各自关联两个或多个对应的像素)的光流能关联相机视图之间的像素。例如,基于单独优化相机视图中的每个用于像素的光流矢量的迭代方法能生成光流。例如,通过针对每个像素生成一组光流提议、分析每个光流提议并且基于改善光流的优化的该组光流提议中的一光流提议更新光流。在一些实现方式中,能够将光流矢量的变化传播至相邻的光流矢量。
[0005] 根据本发明的实施方式具体在涉及方法、系统、存储介质和计算机程序产品的所附权利要求中公开,其中在一个权利要求类别(例如,方法)中提到的任何特征可以在另一个权利要求类别(例如,系统)中要求保护。所附权利要求中的从属关系或引用关系仅出于形式原因而被选择。然而,还可以要求保护任何先前权利要求(特别是多个从属关系)的有意引用而产生的任何主题,使得公开并且可以要求保护权利要求及其特征的任何组合,而不管在所附权利要求中选择的从属关系如何。可被要求保护的主题不仅包括所附权利要求中给出的特征的组合,而且包括权利要求中的特征的任意其他组合,其中,权利要求中提及的每个特征可与权利要求中的任意其他特征或者其他特征的组合进行组合。此外,本文中描述或描绘的任何实施方式和特征可以在单独的权利要求中被要求保护和/或与本文中描述或描绘的任何实施方式或特征或者与所附权利要求的任何特征的任何组合中要求保护。
[0006] 在根据本发明的实施方式中,一种用于生成光流的方法,方法可以包括:
[0007] 接收第一相机视图和第二相机视图,每个相机视图代表通过相机捕获的图像并且与捕获相机视图所处的位置相关联;
[0008] 初始化将第一相机视图中的点与第二相机视图中的对应点进行匹配的光流;
[0009] 针对第一相机视图中的每个像素,优化用于该像素的光流,其中,优化用于像素的光流包括:
[0010] 针对该像素生成一组光流提议;并且
[0011] 分析每个光流提议并且基于所述一组光流提议中的一光流提议更新该用于像素的光流。
[0012] 光流可以是将相机视图中的每个像素与光流矢量相关联的矢量场,光流矢量给出像素与另一相机视图中的对应像素之间的位移。
[0013] 像素的一组光流提议可以包括与像素的上方相邻像素相关联的光流矢量、与像素的左侧相邻像素相关联的光流矢量、以及当前光流矢量的随机扰动。
[0014] 在根据本发明的实施方式中,方法可以包括:建立包括数据和正则项的变量优化问题。
[0015] 基于将变量优化问题移至更接近于解的光流提议可以更新用于像素的光流。
[0016] 在根据本发明的实施方式中,方法可以包括:对光流应用中值滤波。
[0017] 在根据本发明的实施方式中,方法可以包括:初始化并且优化针对一组相机视图中的各个其他相机视图的光流。
[0018] 可以从左上方像素开始并且前进至右下方像素来优化用于第一相机视图的像素的光流。
[0019] 在根据本发明的实施方式中,方法可以包括:优化用于第一相机视图的每个像素的光流,直至光流质量的测量值达到阈值分数。
[0020] 初始化光流可以包括:
[0021] 放大低分辨率光流;并且
[0022] 在低分辨率光流内成比例地增大光流矢量的幅值。
[0023] 在根据本发明的实施方式中,系统可以包括:
[0024] 输入模块,输入模块被配置为接收第一相机视图和第二相机视图,每个相机视图代表通过相机捕获的图像并且与捕获相机视图时所处的位置相关联;
[0025] 光流计算模块,光流计算模块被配置为:
[0026] 初始化将第一相机视图中的点与第二相机视图中的对应点进行匹配的光流;
[0027] 针对第一相机视图中的每个像素,优化用于该像素的光流,其中,优化用于像素的光流包括:
[0028] 针对该像素生成一组光流提议;并且
[0029] 分析每个光流提议并且基于一组光流提议中的一光流提议更新用于该像素的光流。
[0030] 光流可以是将相机视图中的每个像素与光流矢量相关联的矢量场,光流矢量给出了像素与另一相机视图中的对应像素之间的位移。
[0031] 像素的一组光流提议可以包括与像素的上方相邻像素相关联的光流矢量、与像素的左侧相邻像素相关联的光流矢量、以及当前光流矢量的随机扰动。
[0032] 光流计算模块可以被配置为建立包括数据和正则项的变量优化问题。
[0033] 基于将变量优化问题移至更接近于解的光流提议可以更新用于像素的光流。
[0034] 在根据本发明的实施方式中,系统可以包括:对光流应用中值滤波。
[0035] 光流计算模块可以被配置为初始化并且优化针对一组相机视图的各个其他相机视图的光流。
[0036] 从左上方像素开始并且前进至右下方像素,可以优化用于第一相机视图的像素的光流。
[0037] 光流计算模块可以被配置为优化用于第一相机视图中的每个像素的光流,直至光流质量的测量值达到阈值分数。
[0038] 初始化光流可以包括:
[0039] 放大低分辨率光流;并且
[0040] 在低分辨率光流内成比例地增加光流矢量的幅值。
[0041] 在根据本发明的实施方式中,一个或多个计算机可读非易失性存储介质可以体现被运行时可运行为执行根据本发明或任意上述所述实施方式的方法的软件。
[0042] 在根据本发明的实施方式中,系统可以包括:一个或多个处理器;和至少一个存储器,耦合至处理器并且包括通过处理器运行的指令,当运行指令时,处理器可运行为执行根据本发明或任意上述所述实施方式的方法。
[0043] 在根据本发明的实施方式中,当在数据处理系统上运行时,计算机程序产品,优选地包括计算机可读非易失性存储介质,可以运行为执行根据本发明或任意上述所述实施方式的方法。

附图说明

[0044] 图1是根据本发明的实施方式的画布生成系统运行的系统环境的框图。
[0045] 图2是根据本发明的实施方式的画布生成系统的框图。
[0046] 图3是示出根据一些实施方式的示例性图像捕获系统的构造的线图。
[0047] 图4是示出根据一些实施方式的示例性画布生成系统中的合成相机的使用的线图。
[0048] 图5a是示出根据一些实施方式的基于左相机视图和右相机视图的示例性合成视图的生成的线图。
[0049] 图5b是示出根据一些实施方式的示例性相机视图和示例性合成视图的线图。
[0050] 图6是示出根据一些实施方式的从示例性相机视图生成示例性合成视图的细节实施例的线图。
[0051] 图7是示出根据实施方式的用于从输入的相机视图生成合成视图的过程的流程图。
[0052] 图8是示出根据一些实施方式的示例性相机视图之间的光流矢量的线图。
[0053] 图9是示出根据一些实施方式的用于计算两个相机视图之间的光流的示例性过程的流程图。
[0054] 图10是示出根据一些实施方式的多个对象和示例性图像捕获系统的线图。
[0055] 图11是示出根据一些实施方式的示例性画布视图的线图。
[0056] 图12是示出根据实施方式的改变瞳孔间距离对于对象的视图的影响的线图。
[0057] 图13是示出根据一个实施方式的用于基于相机视图计算画布视图的示例性过程的线图。
[0058] 图14是示出根据一个实施方式的用于基于相机视图计算画布视图的第二示例性过程的线图。
[0059] 图15是示出根据一个实施方式的用于基于相机视图计算画布视图的过程的流程图。
[0060] 图仅出于示出性之目的描写了本发明的各个实施方式。本领域技术人员应当从下列讨论中认识到,在不背离此处描述的本发明的原理的情况下,可以采用此处示出的结构和方法的替代实施方式。

具体实施方式

[0061] 系统架构
[0062] 图1是根据本发明的实施方式的画布生成系统运行的系统环境的框图。图1所示的系统环境100包括图像捕获系统105、画布生成系统110、以及客户端虚拟现实(VR)设备115。在其他实施方式中,系统环境100能包括不同或附加的部件。
[0063] 图像捕获系统105捕获场景的多个相机视图,相机视图通过画布生成系统110处理并且能够经由客户端VR设备115呈现给用户。场景能代表图像捕获系统105捕获相机视图所处的物理环境。后期通过画布生成系统105可以增强场景,以向场景中添加虚拟部件。例如,场景可以是公园,在公园中,放置了物理图像捕获系统105来捕获公园的相机视图。相机视图是从位于图像捕获系统105中的相机的图像传感器捕获的场景的视图。
[0064] 在一些实施方式中,图像捕获系统105包括许多相机,每个相机定位成捕获场景的不同相机视图。在其他实施方式中,图像捕获系统105是被配置为捕获场景的相机视图的相机。图像捕获系统105的相机可以是静物或录影机,例如,运动型相机、可携式摄像机、移动电话相机、高速相机、或任意其他合适的图像捕获设备。图像捕获系统105中的相机能够全局同步以同时捕获图像并且还能够使用全局快门改善捕获快速移动对象的性能。在一些实施方式中,图像捕获系统105由可商购的部件和相机构造,但是,图像捕获系统105中能使用任意合适的专有或可商购的相机。
[0065] 在一些配置中,如果是图像捕获系统105,则从特定的原点或相对于特定的原点捕获相机视图。例如,图像捕获系统105能包括以原点为中心面朝外的一圈相机,从而捕获覆盖图像捕获系统105的原点周围的全360度全景角度的相机视图。图像捕获系统105的替代实施方式能捕获代表原点周围的全360度范围、代表局部全景或范围的视图、或代表原点周围的任意其他合适的视图子集的相机视图。相似地,能够同时、顺次、或按照任意其他合适的顺序捕获通过图像捕获系统105捕获的相机视图。例如,诸如在图像捕获系统105捕获场景的多个高清静止图像的情况下,图像捕获系统105能够通过使用多个相机同时捕获相机视图,可替代地,诸如在相机捕获视频的情况下,图像捕获系统105能从一个或多个相机顺次捕获图像。
[0066] 在一些实现方式中,图像捕获系统105包括从场景内的已知位置同时捕获场景的视频的多个相机。在其他实施方式中,诸如在将图像捕获系统105装至人、车辆、或其他移动对象上的实施方式中,图像捕获系统105在场景内不具有固定的位置。能够获知所捕获的相机视图相对于彼此或相对于图像捕获系统105的原点或场景的位置。图像捕获系统150能与画布生成系统110通信,例如,将捕获的相机视图传输至画布生成系统110。画布生成系统110接收从图像捕获系统105直接输入、经由诸如局域网或互联网等网络输入、或通过任意其他合适的方法输入的相机视图。
[0067] 根据一些实施方式的画布生成系统110处理所接收的相机视图,以生成代表场景的画布视图。画布视图能够是描述场景的任意图像,因此,能够重新创建虚拟现实场景,例如,全景、球域全景、或合适的广角图像。例如,能够以诸如“8K”(例如,8192×8192像素)等分辨率的立方体、等距长方、或圆柱格式输出画布视图。由此,画布视图能够代表通过客户端VR设备115观察的场景的角度范围。当用户转动或旋转客户端VR设备115时,可以将不同角度的相机视图呈现给用户。画布生成系统110可以生成两个画布视图(用户的每个眼睛有一个画布视图),以向客户端VR设备115提供立体图像。
[0068] 在一些实施方式中,通过组合场景的一组原相机视图而生成画布视图,以生成比相机视图中的任意一个视图捕获更多关于场景的信息的画布视图。原相机视图能够是从图像捕获系统105接收的相机视图。画布视图能够在客户端VR设备115上进行显示,以创建场景的虚拟现实表示。在一些实施方式中,例如,基于场景中的单一静态位置(以下简称视点)生成画布视图。可替代地,基于一批或一组视点能够生成画布视图,例如,当用户移动其头部观察虚拟现实场景时,接近用户的眼睛的位置。如下面更为全面讨论的,画布视图的视点可以根据画布视图的角度而移动,以代表每个眼睛的转动视点。
[0069] 场景的画布视图可以代表复制在指定点(以下简称视点)处相交的光信息时所使用的局部光信息近似值。通常,场景的光信息的完整表示描述了传播经过计算光信息的空间的光线,然而,通过采集关于在该点处相交的光线的色彩信息能够近似与指定视点相关联的光信息。例如,通过相机能够采集光线色彩信息,相机捕获关于与相机的图像传感器相交的光线的色彩信息。相机视图中的每个像素能够代表关于撞击相机的图像传感器的一个或多个光线的信息,从而捕获关于该光线的色彩信息。然后,所采集的色彩信息代表了通过相机生成的相机视图中的像素的像素强度信息。在一些实现方式中,能够组合来自多个相机视图的信息,以形成近似单一视点处的光信息时所使用的画布视图。相似地,能够使用画布视图重新创建视点处的相关光信息,视点代表当用户在虚拟现实场景中转动其头部时用户眼睛的可能位置。所生成的画布视图能够被传输以通过客户端VR设备115向用户进行显示、或存储以供客户端VR设备115稍后使用、或出于其他合适的目的。
[0070] 客户端VR设备115从画布生成系统110接收画布视图并且将画布视图显示给客户端VR设备115的用户。在一些实现方式中,客户端VR设备115通过重新创建在与定位在场景中的用户的每个眼睛对应的视点处的场景的光信息而运行。然后,将每个局部光信息近似值单独显示给用户的对应眼睛,从而创建3D虚拟现实效果。在一些实现方式中,通过向客户端VR设备115的用户显示所生成的画布视图能够生成局部光信息近似值。局部光信息近似值能够以零视差距离创建用户的视图的近似值。
[0071] 在一些实施方式中,客户端VR设备115是头戴式VR系统。客户端VR设备115能够将一不同的画布视图显示给用户的每个眼睛,例如,向客户端VR设备的用户提供立体3D效果。在一些配置中,客户端VR设备115通过诸如显示响应用户动作的画布视图而向用户呈现交互式体验。此外,客户端VR设备115能够诸如响应用户动作、基于指定的时间、或出于任意其他合适的原因从画布生成系统110请求指定的画布视图或画布视图的各部分。
[0072] 图2是根据本发明的实施方式的画布生成系统的框图。在图2的实施方式中,画布生成系统110包括相机视图存储器210、画布视图存储器220、接口模块220、新视图生成模块240、光流计算模块250、以及光信息近似模块260。画布生成系统110基于从图像捕获系统
105接收的一组原相机视图生成画布视图。
[0073] 相机视图存储器210能包含相机视图,例如,从图像捕获系统105接收的一组原相机视图。包含压缩或非压缩图像数据的相机视图能够以诸如JPEG、PNG、RAW、或TIFF等任意合适格式存储。相似地,包含对于相机视图序列的压缩或非压缩图像数据的相机视图能够以合适的视频格式,例如,MPEG、AVI、或任意其他合适的格式存储。在一些实施方式中,相机视图包括来自图像捕获系统105中的相机的滤色镜阵列(例如,Bayer滤色镜)的原数据。存储的相机视图能包含关于所存储的相机视图的每个像素的特定位置和像素强度信息。关于像素的像素强度信息能包含控制如何显示像素的亮度和色彩信息,例如,能够在关于像素的灰度亮度信息或RGB通道色彩信息中捕获像素强度。在一些实施方式中,相机视图存储器210中包含的相机视图能够与额外的信息相关联,诸如捕获相机视图时的视点等,诸如捕获图像的相机及图像捕获系统105中的相机的位置和方位等。相机视图存储器210内存储的相机视图还能够被关联成组,例如,从同一物理相机捕获的连续图像组或从图像捕获系统105的多个相机同时捕获的一组图像。相似地,能够将通过画布生成系统110处理的相机视图存储在相机视图存储器210中。例如,能够将相机视图从原滤色镜阵列数据处理成基于光栅RGB像素的图像,校正渐晕,或处理以更改添加或删除锐度/去卷积、色彩平衡或色调曲线、亮度或伽玛、像素马赛克、以及镜头失真影响。在一些实施方式中,基于组中的其他相机视图能够通过画布生成系统110处理相机视图,例如,组中的相机视图之间的相互色彩校正。
在一些实施方式中,能够将相机视图从原拜耳滤色镜数据转换成RGB图像图像,然后,使用相互色彩校正、反晕映、伽玛、锐化、以及去马赛克技术进行处理而生成最终经过校正的图像。
[0074] 根据一些实施方式的画布视图存储器220包含通过画布生成系统110生成的画布视图。画布视图能存储为任意合适的图像或视频格式。在一些实施方式中,画布视图与存储在画布视图存储器220中的其他画布视图相关联或成组,例如,同一场景的左眼画布视图和右眼画布视图能在画布视图存储器220中关联。相似地,例如,从若干录影机视图生成的画布视图序列能在画布视图存储器220中分组。
[0075] 接口模块230与图像捕获系统105和客户端VR设备115通信。例如,接口模块230能从图像捕获系统105接收原相机视图并且将生成的画布视图传输至客户端VR设备115。在一些实施方式中,画布生成系统110还能够经由接口模块230从客户端VR设备115接收对指定画布视图的请求。
[0076] 根据一些实施方式,新视图生成模块240基于已有相机视图生成合成视图。合成视图模拟了通过定位在场景中的指定位置(以下简称合成相机位置)的理论或假设相机(以下简称合成相机)将要捕获时而捕获的相机视图。基于合成相机位置和来自合成相机位置附近的相机的相机视图能够生成合成视图,并且在一些实现方式中,一旦生成合成视图,则能够将合成视图存储在相机视图存储器210中。在一些配置中,新视图生成模块240基于相机视图与捕获相机视图的相机的位置之间的光流生成合成视图。下面将更为详细地讨论新视图生成模块240。
[0077] 在一些实施方式中,光流计算模块250检测两个或更多个相机视图中的对应像素并且基于所检测的对应像素生成光流。光流能够是通过第一相机视图中的每个像素的位移矢量将第一相机视图中的像素与第二相机视图中的对应像素相关联的矢量位移场或其他数据集。根据一些实施方式,光流是将一个相机视图中的像素与第二相机视图中的像素关联起来的方程式。在一些实现方式中,能够根据图像捕获系统105中的相机的数目和方位计算多个分组的相机视图的光流。例如,能够计算一圈相机中的每个相机视图至其相邻的相机的光流。对于每一对相机,可以计算从第一相机至第二相机并且从第二相机至第一相机的光流。在一些实施方式中,需要三个或更多个相机视图之间的光流,例如,在被配置为捕获球域全景的图像捕获系统105的情况下,水平面内的两个相机和高位或面朝上的顶部相机之间需要光流。下面将更为详细地讨论光流计算模块250。
[0078] 在一些实施方式中,光信息近似模块260通过将多个相机视图组合成单一图像而生成画布视图。例如,基于通过图像捕获系统105捕获的相机视图、通过新视图生成模块240生成的合成视图、或合适相机视图的任意组合能生成画布视图。例如,通过近似光信息用于显示给客户端VR设备115的用户,通过光信息近似模块260生成的画布视图能够生成为适合于在客户端VR设备115上显示。下面将更为详细地讨论光信息近似模块260。
[0079] 图3是示出根据一些实施方式的示例性图像捕获系统的线图。图3中的图像捕获系统包括原点305、环303、以及相机310至317。在该配置中,图像捕获系统105以原点305为中心。相机310至317定位在以原点305为中心的环303的周围。在一些实施方式中,相机310至317通过环303或另一相似的支撑结构被物理地支撑并且能够定位在已知直径的圆的已知位置上。相似地,根据图3中的实施方式,各个相机310至317能具有相对于原点305的已知位置和方位。例如,基于附接至相机的镜头,各个相机310至317能具有限定的视场。在一些实施方式中,每个相机的视场的中心线与原点305对准,即,各个相机310至317从环303直接向外定向。在其他实施方式中,相机310至317的定位向可以不同。基于绕原点305的角度Φ能够描述绕环303的指定方位或角度。在该实施方式中,相机310定位成Φ=0,并且其余相机
311至317围绕环303以规定的间隔定位。
[0080] 合成视图生成
[0081] 在生成画布视图时或对于需要从图像捕获系统105不可获得的一组原相机视图中的相机视图的其他情形,能够使用例如通过新视图生成模块240生成的合成视图。与生成的合成视图相似,基于一组输入相机视图能够生成通过新视图生成模块240生成的合成视图。例如,能够使用从与所期望的合成相机位置相似的位置和方位捕获的相机视图生成合成视图。在一些实施方式中,合成视图具有与生成合成视图时使用的相机视图相似的视场。这些合成视图允许视图近似如同另一相机定位在捕获合成视图的合成相机位置处。在其他实施方式中,合成视图是代表比输入相机视图中更小的视场的局部合成视图,例如,仅描述相机视图的视场的区域。在其他实现方式中,合成视图生成模块240输出将输入相机视图中的像素与局部或全合成视图中的指定像素相关联的映射。生成的映射能够捕获合成视图的信息,而不需实际计算合成视图中的全部像素的精确值。
[0082] 图4是示出根据一些实施方式的示例性画布生成系统中的合成相机的使用的线图。示图400包括环303、原点305、左视点402和右视点404、对象405、瞳孔间距离410、左相机415和右相机420、合成相机425和430、以及视线440和445。
[0083] 在一些实施方式中,例如,当使用画布视图显示立体3D时,画布生成系统110基于场景内的指定配对视点生成画布视图。例如,为了生成一对画布视图以创造立体3D效果,画布视图生成系统能够从以与用户的两眼之间的距离(瞳孔间距离)相似的距离分离的配对视点生成左画布视图和右画布视图。瞳孔间距离能够是通过画布视图生成系统110设置的生成立体3D效果时所使用的两个视点之间的任意距离或位移。例如,瞳孔间距离410代表了近似客户端VR设备115的用户的两眼之间的距离的左视点402与右视点404之间的示例性距离。在一些实施方式中,左视点402与右视点404的以原点305为中心,但是,左视点402与右视点404能够定位在场景内的任意合适位置处。相似地,在一些情况下,左视点402与右视点404能够代表两个静止的视点,但是,在其他实施方式中,左视点402与右视点404能代表一组配对视点中的两个视点,各自以瞳孔间距离410分离。画布视图各部分的左视点和右视点的指定位置可以是绕原点305的角度Φ的函数,以模拟用户的头部可能围绕原点转动时的每个眼睛的视点的变化。换言之,用于每个眼睛的视点可以根据角度绕原点旋转角度Φ。
[0084] 在图4中,视线440和445代表了当用户的眼睛(以瞳孔间距离410分离)接近或旋转至面向聚焦的对象405时、以瞳孔间距离410分离的假设用户的左眼与右眼的视角。例如,当用户观察对象405时,定位在视线440与445与环303相交的点处的相机能够使用选择的零视差距离近似用户的视角。在图4的配置中,左相机415与右相机420未定位在这些相交点处,因此,通过这些相机捕获的相机视图不能直接提供所需的信息。然而,来自通过画布生成系统110能够计算定位在视线440和445与环303的相交点处的合成相机425和430的视角,以捕获在从左视点402和右视点404观察时关于对象405的信息。在一些实施方式中,基于每个对象判断零视差距离,例如,根据对象的距离。在其他实施方式中,零视差距离是固定的,例如,被设置成恒定的距离或无穷大。从诸如左相机415和右相机420等邻近的相机生成各个合成相机425与430的各自视图。
[0085] 图5a是示出根据一些实施方式的基于左相机视图和右相机视图生成示例性合成视图的线图。相似地,图5b是示出根据一些实施方式的示例性相机视图和示例性合成视图的线图。示图500包括左相机505、右相机510、合成相机515、光流位移(optical flow shift)520和525、左相机视图530和右相机视图535、以及合成视图540。
[0086] 如之前提及的,在画布生成系统110的一些实现方式中,通过新视图生成模块240使用从位于合成相机位置附近的位置捕获的输入相机视图而计算合成视图。例如,为了计算合成相机515的合成视图540,能够将来自左相机505的相机视图530与来自右相机510的相机视图535进行组合。通过将左相机视图530和右相机视图535中的像素位移至合成视图540中的近似位置能够实现生成合成视图。例如,使用来自将左相机视图530中的像素与右相机视图535中的像素相关联的光流的信息能够确定像素的位移量。在一些实现方式中,光流是位移矢量阵列,例如,对于左相机视图530中的每个像素,光流可包含一个矢量。在图5的实施方式中,光流位移520和525示出了从左相机视图530和右相机视图535至合成视图
540的位移。左相机视图530和右相机视图535中的每个像素的光流位移520和525的量取决于合成相机515相对于左相机505和右相机510的位置。
[0087] 来自左相机505的示例性左相机视图530示出了位于相机视图的相对侧的远处的山和人。相反,来自右相机510的右相机视图535示出了位于相机视图中的不同位置的相同元素,人与山。左相机视图530与右相机视图535之间的人与山的位置的差异在于从左相机505和右相机510的不同位置捕获的相机视图的视角位移。尽管在左相机视图530与右相机视图535中远处的山相对保持处于相同位置,然而,在左相机视图530与右相机视图535之间,人经历了大得多的位置位移。由于合成相机515以相似的方位定位在左相机505与右相机510之间,合成视图540中的对象应处于相对于左相机视图530和右相机视图535的中间位置。例如,在合成视图540中,人相对于左相机视图530和右相机视图535已经移动了中间的量。
[0088] 图6是示出根据一些实施方式的从示例性相机视图生成示例性合成视图的细节实施例的线图。示图600示出了新视图生成模块240通过若干阶段的处理生成示例性相机视图、以从左相机视图610和右相机视图615生成合成视图630。示图600包括左相机视图610和右相机视图615以及位移的左相机视图630和右相机视图625、以及合成视图630。
[0089] 图6中的通过各个相机视图捕获的场景包括三个主要对象:山、人、以及球。在该实施方式中,将山视为场景中的背景对象并且山位于捕获输入相机视图的相机的位置的远处,然而,人和球是前景对象并且更靠近于捕获左相机视图610和右相机视图615的相机。因此,相对于背景对象,前景对象在左相机视图610与右相机视图615之间具有更大位移。左相机视图610与右相机视图615是计算合成视图630时使用的输入相机视图。在该实施方式中,为了生成合成视图630,首先,基于光流将左相机视图610位移至期望合成视图的位置。光流中的每个矢量能指示左相机视图610与右相机视图615中的对应像素之间的位移。在光流位移中,左相机视图610中的像素基于光流位移并且与合成相机的相对位置成比例。左相机视图610中的每个像素能够在相对于像素的对应光流矢量的部分的方向上位移,以确定合成视图中的像素的位置。例如,如果合成相机定位在左相机与右相机之间的中间,则左相机视图610中的每个像素能够位移光流中的与该像素对应的矢量的值的一半。相似地,如果合成相机位于从左相机至右相机的10%远,则左相机中的每个像素能够位移光流中的对应矢量的10%。相同的位移过程能够应用于右相机视图615,以获得经过位移的右相机视图625。
[0090] 经过位移的左相机视图620与右相机视图625各自代表使用光流位移时、使用来自左相机视图610和右相机视图615的位置信息的合成视图630的近似值。因为不同的相机视图与相机之间的像素强度信息可能不一致,所以即使相机的配置相同,使用来自左相机视图610和右相机视图615的像素强度信息也能够生成合成视图630。在一些实施方式中,经过位移的左相机视图620和右相机视图625包含来自一个原相机视图的像素强度信息。例如,经过位移的左相机视图620整合了来自左相机视图610和右相机视图615的位置信息(基于光流的位移形式)。然而,当经过位移的左相机视图620中的全部像素强度值继承左相机视图610中的对应像素时,即使像素的位置发生位移,经过位移的左相机视图620也仅整合了来自左相机视图610的像素强度信息。
[0091] 例如,由于捕获相机视图的相机之间的曝光或其他设置不同而引起两个相机视图中的对应点之间的像素强度信息不同。在图6的实施例中,相比于右相机视图615,左相机视图610中的球是一不同的阴影,并且这些差异仍存在于经过位移的左相机视图620与右相机视图625中。在图6的实施方式中,混合经过位移的左相机视图620与经过位移的右相机视图625,以生成合成视图630。混合相机视图能够包括均化或通过其他方式组合各个经过位移的左相机视图与右相机视图中的对应像素,例如,均化每个相机视图中的两个对应像素的像素强度信息。基于合成相机的位置能够成比例地混合经过位移的左相机视图620与右相机视图625,以生成合成视图630。在图6的实施例中,合成视图630中的球是作为从经过位移的左相机视图620与经过位移的右相机视图625的对应像素成比例地混合的球的每个像素的结果的中间阴影。
[0092] 在其他实施方式中,基于仅来自一个相机视图的像素强度信息能够生成合成视图630,例如,仅使用来自最靠近于合成相机位置时被捕获的相机视图的像素强度信息生成合成视图。然而,如果仅使用来自最靠近的相机的像素强度信息,当与接近其他相机视图的合成视图相比较时,观察接近一个相机视图的合成视图时则存在突兀的位移或差异。
[0093] 在一个实施例中,使用经过位移的左相机视图像素值L与经过位移的右相机像素值R基于合成相机从左相机至右相机的比例距离t(其中,t=1代表左相机的位置,t=0代表右相机的位置)确定像素值P,其中,每个经过位移的相机像素值反映了使用比例距离t的比例光流之后的像素值:
[0094] P=t×L+(1-t)×R
[0095] 方程式1
[0096] 然而,在一些情况下,经过位移的左相机视图像素值的差异量很大。由于像素幅值的潜在不同,可以包括附加项来确定是否促成左像素色彩值或右像素色彩值。附加项可以是具有参数N(a,b,x,y)的归一化函数N,其中,a和b是像素色彩值,x和y是归一化权重。在一个实施方式中,归一化函数N加权参数如下:
[0097]
[0098] 在一个实施方式中,归一化函数N的参数为:
[0099] ·a=经过位移的左相机L的像素值
[0100] ·b=经过位移的右相机R的像素值
[0101] ·x=比例距离t+左相机的光流的幅值Ml
[0102] ·y=(1-比例距离t)+右相机的光流的幅值Mr
[0103] 为了确定归一化函数N的权重的部分,可以使用左相机像素值与右相机像素值之间的像素幅值δ的相似性加权N的应用,其中,像素幅值δ等于1时代表相同的像素值,像素幅值δ等于0时代表像素值完全不同。由此,在一个实施例中,使用比例距离t的像素值为:
[0104] P=δ(t×L+(1-t)×R)+(1-δ)N
[0105] 方程式3
[0106] 当对归一化函数应用上述参数时,方程式4给出了像素值:
[0107]
[0108] 当像素值相似时,通过调整光流的幅值,确定像素值的该函数有助于组合像素值,当像素值不同时,该函数将距离加权至相机视图。当像素值不同时,除距相机视图的比例距离之外,归一化项允许使用用于每个位移像素的光流的幅值在左像素和右像素之间进行选择。
[0109] 图7是示出根据实施方式的用于从输入相机视图生成合成视图的过程的流程图。例如,当新视图生成模块240接收左相机视图和右相机视图以及合成相机的位置时,过程
700开始。然后,诸如,通过光流计算模块230计算所接收的左相机视图与右相机视图之间的光流710。使用该光流,基于合成相机的位置能够位移各个所接收的相机视图715。然后,混合经过位移的左相机视图和右相机视图,以合并像素强度信息并且基于输入的相机视图生成最终的合成视图720。例如,通过上述方程式1或4混合各个位移相机的像素强度可以执行该混合。
[0110] 光流计算
[0111] 在一些实施方式中,通过光流计算模块250生成诸如生成上面讨论的合成视图所使用的光流等光流。如之前提及的,光流跨多个相机视图关联对应点或像素。两个相机视图之间的光流能够是矢量场,矢量场中,每个矢量(以下简称光流矢量)代表了从第一相机视图中的一个像素至另一相机视图中的对应像素的位移或从第一相机视图中的一个像素至另一相机视图的投影,诸如等距长方或方位角投影等。在其他实施方式中,光流是函数或其他类型的平移,并且与点相关联的光流矢量代表了点与评估光流函数或映射时的其对应点之间的位移。能够计算具有对应像素的任意两个相机视图之间的光流,并且在一些实现方式中,能够计算任意数量的相机视图之间的光流。例如,能够计算水平面内的两个相机视图与第三相机视图(例如,定位朝上的鱼眼相机)之间的光流。光流能够基于给出偏移量(u,v)的函数或映射将第一图像中的像素(x,y)与第二图像中的像素关联起来。例如,基于代表了从第一图像中的给定像素至第二图像中的对应像素的x轴或y轴位移的函数或映射u(x,y)以及v(x,y)能够确定第二图像中的对应像素。在一些实现方式中,与第一图像中的像素(x,y)对应的像素能够是第二图像中的像素(x+u(x,y),y+v(x,y))。
[0112] 在一些实施方式中,光流是方向性的,具有从其将像素映射至次相机视图中的对应像素的主相机视图。例如,主相机视图中的每个像素能够被分配存储主相机视图中的该像素与次相机视图中的对应像素之间的位移的位移矢量。在其他实现方式中,光流是对称的,例如,向两个相机视图中的像素分配指向另一相机视图中的对应像素的位移矢量。通过组合两个或更多个方向性光流,例如,计算一组相机视图中的每个相机视图的方向性光流,也能够创建对称光流。在一些情况下,一个相机视图中的点在一个或多个其他相机视图中将不具有对应点。例如,在一个相机视图中对象可能被另一对象挡住,但在同一场景的另一相机视图中不被挡住并且完全可见。在一些实施方式中,还将光流矢量分配给在其他相机视图中无对应像素的像素。例如,基于相邻像素被分配的光流矢量、基于平均或中值光流矢量、或基于任意其他合适的方法能够为在其他相机视图中无对应像素的像素分配光流矢量。
[0113] 图8是示出根据一些实施方式的示例性相机视图之间的光流矢量的线图。示图800包括左相机视图805和右相机视图810、光流815、左相机视图805中的点820至823、右相机视图810中的点830至833、组合相机视图840、以及光流矢量845。
[0114] 在图8的实施方式中,左相机视图805与右相机视图810描写了若干共享对象,在这种情况下,从两个不同位置捕获的山和人。因为左相机视图805与右相机视图810共享共同的对象,所以存在与也代表共同对象的右相机视图810中的像素对应的、代表左相机视图805中的共同对象的像素。例如,与和对应点830至833相关联的右相机视图中的像素对应,各个点820至823能与左相机视图805中的像素相关联。例如,左相机视图805中的点822与右相机视图810中的对应点832能够代表描述人的头部的顶部的左相机视图805和右相机视图
810中的对应像素。在一些实施方式中,诸如光流815等光流捕获与点822和832相关联的像素之间的对应性。
[0115] 出于示例目的,组合相机视图840显示右相机视图810覆盖在左相机视图805上。在组合相机视图840中,显而易见,对于两个相机视图的全部共同对象,左相机视图805与右相机视图810之间的位置位移不一致。例如,与相同相机视图之间的人的位置位移相比较,山在左相机视图805与右相机视图810之间的位置位移具有较小的幅值。例如,由于相机视图之间,对象到相机的距离不同,视角效果能够引起对象之间的位移量的不同。在图8的实施例中,山比人距离左相机和右相机更远,导致在左相机视图805与右相机视图810之间,人的位置位移比山的位置位移更大。光流矢量845是可包括在左相机视图805与右相机视图810之间的光流中的矢量的实施例。光流矢量845通过显示其间的位移示出了左相机视图805中的点822与右相机视图中的点832之间的对应性。
[0116] 通过各种方法能够实现光流的计算。例如,通过建立变量优化问题来确定两个图像之间的光流,开始光流的计算。优化问题可包括许多项,诸如,与另一图像中的对应像素或梯度相比较,测量像素的强度或像素的梯度的强度的数据项,例如,测量光流场的平滑性的正则项、或任意其他合适的项。例如,将第一图像中的像素(x,y)与第二图像中的像素(x+u(x,y),y+v(x,y))关联起来的变量优化方程式能够表示为如下:
[0117]
[0118] 上面示例性变量优化方程式(方程式5)包括测量第一图像中的像素与第二图像中的其对应像素之间的像素强度I或色彩之差的绝对值的数据项数据项(例如,变量优化
方程式)进一步包括测量两个图像的梯度 之差的梯度一致
项。最后,该方程式包括正则项R(u,
v)。变量优化方程式的最小值指示相对于变量优化问题的指定参数优化光流。在其他实施方式中,变量优化问题可包括例如下面方程式6中显示的附加项。
[0119]
[0120] 其中,G和Gd是高斯核函数,α0和α1是阿尔法通道,ε是两个对应点之间的像素强度值的误差,并且W是S形曲线。
[0121] 方程式6示出了变量优化问题的第二实施例。方程式6包括比较第一图像中的像素与第二图像中的像素的梯度的混合型式(G*)的数据项比较当前光流与之前光流的时域正则项
lp平滑项
考虑中值像素强度值的绝对
值差的中值滤波项λm(∑i,j∈N(x,y)|u(x,y)-u(i,j)|+|v(x,y)-v(i,j)|),以及基于像素强度值测量误差混合的像素强度值之差的加权扩散项
下面将更为详细地
讨论时域正则项、中值滤波项、以及加权扩散项。
[0122] 然后,能够求该变量优化问题的解而确定光流。在一些实施方式中,通过最小化使用数据项和正则项构造的优化方程式而接近变量优化问题。例如,首先,能够将优化方程式变换成使用迭代欧拉-拉格朗日方法的偏微分方程式的非线性系。然后,能够使用其他迭代方法线性化并且求解非线性系。例如,能够采用高斯塞德尔、雅克比、或逐次超松弛迭代(SOR)方法求解近似变量优化问题的方程式的线性系。在一些实现方式中,使用诸如ORB、AKAZE、或BRISK等关键点匹配算法能够单独匹配相机视图内的关键点或像素,以生成与关键点对应的像素之间的准确匹配。与之前计算的关键点匹配相似,光流计算模块250能使用所计算的关键点匹配影响变量优化问题包括对关键点的光流矢量的解。例如,在求解变量优化问题的迭代之间,例如,通过使用抛雪球能够影响关键点匹配的光流。
[0123] 可替代地,在不将优化问题变换成方程式的线性系的情况下,通过使用迭代方法能求解变量优化问题。为了求解生成光流场的变量优化问题,能够对代表用于一个或多个相机视图中的每个像素的光流的初始化矢量场应用迭代方法。使用各种方法能够初始化矢量场,例如,能够随机初始化每个光流矢量,整个矢量场能够被初始化成统一的值,或能够使用任意其他合适的方法。在一个实施方式中,对低至更高分辨率图像的图像“金字塔”迭代地执行光流。首先,针对低分辨率下行采样型式的图像计算光流。然后,放大该产生的初始光流,包括成比例地调整每个光流矢量的幅值,并且用于初始化更高分辨率型式的图像的光流。能够使用各个之前的光流初始化逐渐更高分辨率型式的图像的光流,直至计算满分辨率的光流。从概念上而言,由于下行采样型式的图像中的每个像素能够代表原图像中的区域,这与计算逐渐更小区域的图像的光流相似。
[0124] 在迭代过程期间,能够基于每个像素或每个区域优化光流。在确定光流的迭代过程的一个实现方式中,单独分析相机视图中的每个像素或区域的光流矢量,以迭代地确定一个或多个其他相机视图中的更加优化的对应像素。然而,在单独分析小区域或单独像素的实现方式中,诸如一个或多个相机视图中的噪音、尘埃、或其他缺陷等图像质量变化能够阻碍将像素与其正确的对应像素相关联的迭代过程的能力。例如,特定像素的最佳对应像素可能被噪音模糊,导致选择欠最佳的对应像素。为了解决该问题,在一些实施方式中,在应用计算光流的迭代方法之前,对输入的相机视图应用中值滤波、模糊、去噪、或其他合适的图像处理技术。在完成迭代过程之后,能够在计算合成视图或画布视图时使用产生的优化光流。
[0125] 图9是示出根据一些实施方式的用于计算两个相机视图之间的光流的示例性过程的流程图。过程900概括了用于生成左相机视图与右相机视图之间的光流的示例性迭代方法。在其他实施方式中,能够使用相似的技术生成多个或不同的相机视图之间的光流,诸如三个相机视图之间的光流或任意方位上的多个相机视图之间的光流等,例如,顶部相机视图与底部相机视图。
[0126] 当光流计算模块250接收一组相机视图时,过程900开始905。例如,光流计算模块250能接收主相机视图和次相机视图或左相机视图和右相机视图。在一些实施方式中,例如,通过去噪、中值滤波、或模糊处理所接收的相机视图,以减少诸如一个或多个相机视图中的噪音等相机视图之间的对应像素之间的潜在图像质量差。通过初始化该组相机视图的光流915,过程900继续。例如,光流能够初始化成随机光流、零幅值光流、或任意其他合适的光流。例如,在使用金字塔类型的初始化的实现方式中,光流能够初始化成使用更低分辨率型式的相机视图计算时的放大型式的光流。然后,在过程900中,能够使用迭代方法优化初始化光流。
[0127] 为了开始每次迭代,选择相机视图中的像素920,例如,左相机视图中的左上方像素。在一些实现方式中,以基于迭代的模式选择像素,并且在移至下一像素之前,更新与每个像素对应的光流矢量。例如,在第一次迭代时,能够选择从左上方的角像素开始并且顺序进行至右下方角像素的像素。在一些实施方式中,后续迭代按照不同的顺序选择像素。例如,第二次迭代能够从右下方角像素开始并且顺序进行至左上方角像素。根据其他实现方式,能够随机选择像素、从中心像素开始、或通过任意其他合适的模式选择像素。下面表1至3示出了用于选择像素序列的遍历图像中的像素的若干示例性模式。
[0128]
[0129] 接着,对于所选择的像素,生成一个或多个流矢量提议925。流矢量提议是与该像素相关联的预备光流矢量并且能够通过任意多个合适的技术而生成。例如,能够随机生成或基于针对变量优化问题的各项的子集而计算的梯度下降生成流矢量提议。通过当前流矢量的随机扰动也能够生成流矢量提议,或从与邻近或附近像素对应的流矢量拷贝流矢量提议。在一个实施方式中,针对所选择的像素生成四个流矢量提议:随机流矢量、按照梯度下降生成的流矢量、被分配至所选择的像素的上方相邻像素的流矢量的拷贝、以及被分配至所选择像素的左侧相邻像素的流矢量的拷贝。然后,分析每个流矢量提议930,以确定与其他提议和当前光流矢量相比,该矢量提议是否改善了光流的优化。例如,通过比较变量优化问题的输出并且确定其是否已经下降而因此被带至接近最小值,能够确定得到改善。在一些实施方式中,当输入变量优化问题时,能够模糊每个图像的强度梯度。因此,接受改善优化的提议并且该提议变成与所选择像素相关联的新光流矢量。然后,过程900进行至序列中的下一像素,并且当更新光流中的全部流矢量时935,能够对更新的光流应用中值滤波或扩散滤波(例如,高斯模糊滤波)937,以减轻光流场的外围层效应。中值滤波和扩散滤波能够通过移除光流场中不与附近像素的光流矢量对准的外围层而改善光流场的一致性或平滑性。在一些实现方式中,扩散滤波能够基于该像素与其对应像素之间的像素强度值的误差对每个像素的每个光流矢量应用诸如高斯模糊或其他类型的模糊等加权扩散。例如,能够基于像素强度值的误差混合完全模糊的光流与预模糊的光流。相比于对应像素中像素强度值具有更小误差的像素,对于像素强度值具有更大误差的像素,光流矢量能够对模糊光流加权更重。在一些实施方式中,例如,使用方程式6的变量优化方程式的实施方式,能够整合中值滤波和加权扩散作为变量优化问题中的各项。然后,过程900移至迭代过程的下一次完整迭代。此时,在全部迭代完成之后940并且如果光流不是全分辨率光流942,例如,如果使用光流的金字塔类型的初始化,过程则返回至光流初始化915,以通过使用当前光流初始化的光流基于更高分辨率的相机视图继续迭代。否则,在全部迭代完成之后940,输出优化的光流945。
[0130] 在光流计算的一次变形中,可以模糊像素的强度值来软化图像之间的硬边缘。此外,在迭代期间,也可以模糊图像强度梯度自身。通过执行该模糊,相对于不同图像上出现在不同地方的噪音和尖锐边缘,光流分析可以更健全。
[0131] 在另一变形中,光流最初整合了从相机至另一相机的前一帧的光流。例如,在一些情况下,相机可以捕获包括在相机之间同步的一系列帧的视频。在当前帧的光流中可以使用前一帧的光流。当前帧可以使用前一帧的光流作为第一次迭代的初始解、或可以找出当前帧的解,并且将当前帧的解与前一帧的光流进行组合来确定当前帧光流。这允许跨多于一个的图像的光流的时域正则化。在一些实现方式中,时域正则项可包括在变量优化方程式中。
[0132] 画布视图生成
[0133] 根据一些实施方式,光信息近似模块260基于通过新视图生成模块240生成的合成视图和通过光流计算模块250生成的光流而生成画布视图。例如,光信息近似模块260能够组装从具体生成的合成视图截取的区域的画布视图。在一些实施方式中,光信息近似模块260从新视图生成模块240请求生成画布视图时所需的合成视图。相似地,光信息近似模块
260能够从光流计算模块250请求任意所需的光流。可替代地,在生成合成视图过程中,通过新视图生成模块240能够自动计算或请求光流。
[0134] 如之前提及的,为了接近特定视点或一组视点处的光信息而生成画布视图。通过将画布视图分割成计算画布视图时的一组区域或像素而开始生成画布视图。在一些实施方式中,基于每个像素执行光信息近似,其中,画布视图中的每个像素与光信息近似值中的光线相关联。相似地,画布视图的每个区域能够与例如确定与画布视图的该区域相关的光信息时使用的视点相关联。例如,基于来自该像素特定的合成相机位置的合成视图能够计算每个像素。在其他实施方式中,基于比单个像素更大的画布视图的区域计算接近视点处的光信息的画布视图。例如,在使用单平面的相机的配置中,诸如在向外定向的单环相机情况下,光信息近似值基于画布视图中的一个像素宽列的像素。能够针对生成画布视图时使用的各个画布视图区域及相关的光信息计算合成视图。在一些实现方式中,使用比单个像素或单列像素更大的区域减少画布视图生成系统110的运算负荷。例如,因为每个区域要求计算对该区域具有唯一性的合成视图,所以使用更少的区域要求计算的合成视图更少。例如,画布视图的区域能够是正方形区域、比1个像素更宽的列区域、或画布视图中的像素的任意其他合适子集。当计算全部所需的合成视图时,能够提取并且组合每个合成视图的指定区域,以形成接近视点处的光信息的画布视图。
[0135] 图10是示出根据一些实施方式的多个对象与示例性图像捕获系统的线图。示图1000包括原点305、左视点402和右视点404、瞳孔间距离410、相机310至317、合成相机425和
430、视线440和445、与角度1020相关联的对象1005、与角度1025相关联的另一对象1010。在一些实施方式中,对象1005和1025是定位在场景中的物理对象,但是,对象1005和1025也能够位于场景内的零视差距离处或场景内的任意其他点。
[0136] 示图1000代表了图像捕获系统105捕获包括多个对象1005和1025的场景的示例性场景。为了在客户端VR设备115上重新创建该场景,画布视图生成系统110能够生成旨在用于显示给用户的左眼和右眼的画布视图。每个画布视图能够接近与客户端VR设备115的用户的左眼和右眼对应的两组视点处的光信息。左视点402和右视点404能够代表计算画布视图时的左组视点与右组视点的示例性视点。在该实施方式中,以瞳孔间距离410分离左视点402与右视点404。为了接近诸如左视点402或右视点404等视点处的光信息,光信息近似模块260能够组装捕获该视点处的相关光信息的相机视图和合成视图中的指定区域的画布视图。
[0137] 在图10的实施方式中,各个相机310至317具有限定的视场并且无任何相机被配置为完全捕获场景的全部光信息,例如,相机310至317中的任一个不能从对象1005和对象1010捕获光信息。能够生成诸如来自合成相机425和430的合成视图等合成视图,以捕获不能通过相机310至317直接捕获的特定多条光信息。然而,出于该目的生成的单独合成视图不能捕获生成接近视点处的光信息的画布视图所需的全部光信息。
[0138] 在一些实施方式中,各个相机310至317或合成相机425和430能够捕获生成适当的画布视图时所需的光信息的子集。例如,对象1005能够与光信息的指定点相关联。在该实施方式中,合成相机425生成包含光信息的合成视图,例如,从与合成相机425和左视点402相交的对象1005的视线440符号化的、关于从对象1005行进至左视点402的光线的信息。当与视线445相交时,通过合成相机430同样能够捕获关于从对象1005行进至右视点404的光线的信息。例如,使用三角学方法能够计算包含关于相关光线的光信息的合成视图内的精确像素或区域的位置。在一些实施方式中,基于合成视图的视场和分辨率、视线440相对于合成相机425和左视点402的角度、以及合成相机425和左视点402的相对位置计算捕获关于对象1005与左视点402之间的光线的信息的合成相机425中的合成视图中的像素。
[0139] 图11是示出根据一些实施方式的示例性画布视图的线图。例如,图11中的画布视图1100能够代表基于通过图10所示的相机310至317捕获的一组原相机视图而生成的示例性画布视图。画布视图1100是接近视点处的光信息的示例性画布视图,具体地,画布视图1100包括各自与角度1020和1025相关联的两个对象1005和1010。
[0140] 例如,画布视图1100中的与Φ1020和Φ1025相关联的区域能够接近关于图10的场景中的对象1005和1010的光信息。基于来自适当合成相机的合成视图的光信息能够生成画布视图1100的各个关联区域。例如,从合成相机425的指定区域能够生成与Φ1020相关联的区域。
[0141] 图12是示出根据实施方式的视角的瞳孔间距离改变对于对象的影响的线图。示图1200包括原点305、第一视点1202、第二视点1204、第一瞳孔间距离1205和第二瞳孔间距离
1210、对象1215、第一合成相机1220和第二合成相机1225、第一合成视图1230和第二合成视图1235、以及合成视图内的第一选择区域1240和第二选择区域1245。
[0142] 在一些实施方式中,瞳孔间距离决定生成画布视图时的视点的位置。例如,第一瞳孔间距离1205和第二瞳孔间距离1210是通知画布视图生成时的视点的位置所使用的两个瞳孔间距离。第一视点1202与第一瞳孔间距离1205相关联,并且相似地,第二视点1204与第二瞳孔间距离1210相关联。相似地,不同的视点要求不同的光信息接近视点处的光信息,并且因此需要计算不同的合成视图。
[0143] 基于若干种因素能够计算诸如第一合成相机1220和第二合成相机1225的位置等合成相机位置。例如,当第一合成相机定位成拦截从对象1215行进至第一视点1202的光线并且定向成捕获相关光信息时,第一合成相机1220能够捕获关于从第一视点1202观察时的对象1215的光信息。相似地,第二合成相机1225定位成从第二视点1204捕获关于对象1215的光信息。由于第一视点1202和第二视点1204的位置不同,例如,基于选择的瞳孔间距离的不同,第一合成相机1220和第二合成相机1225根据视点位置从不同的位置捕获对象1215的光信息。
[0144] 此外,存在捕获关于画布视图的指定视点的相关光信息的多个可能的合成相机位置和方位,例如,沿着待捕获的一个或多个光线的各个合成相机位置。此外,基于诸如合成视图的计算难易度等因素、与其他合成相机位置或图像捕获系统105中的相机位置的一致性、或基于任意其他合适的原因能够选择第一合成相机1220的位置和方位。例如,每个合成相机具有从环303上选择的直接向外定向、以维持与安装在图像捕获系统105上的实际相机的一致性的位置。相似地,基于计算的难易度能够选择合成相机位置,例如,选择最靠近于附近的现有相机视图的合成相机位置。
[0145] 一旦确定合成相机位置,则基于各种因素计算合成视图内的哪些像素或区域包含相关的光信息。关于合成视图的所需光信息的角度、相机视图的视场和镜头失真、以及捕获相机视图时的相机的位置都能够影响合成视图内的哪些区域包含关于当前视点的相关光信息。例如,对象1215的位置、第一视点1202、以及第一合成相机1220的方位能够导致第一合成相机视图1230的选择的第一区域1240包含所需光信息。在该实施例中,当所需光信息的角度接近于第一合成相机视图1220的视场的右边缘时,第一合成区域1240的位置接近于第一合成相机视图1230的右边缘。相似地,对象1215相对于第二视点1204的位置及第二合成相机1225的方位还确定了第二合成相机视图1235中的哪个区域包含所需光信息。在示图1200的实施例中,第二合成相机视图1235内的第二选择区域1245包含所需光信息。
[0146] 在一些实施方式中,应用三角法计算来确定合成视图内的指定区域的位置。
[0147] 图13是示出根据一个实施方式的用于基于相机视图计算画布视图的示例性过程的线图。示图1300包括原相机视图1305、合成视图1310、画布视图1315、画布视图的区域1316、合成视图映射1320、以及画布视图计算1325。
[0148] 在图13的实施方式中,原相机视图1305是通过图像捕获系统105捕获的、画布视图生成系统110计算画布视图时使用的一组相机视图。例如,原相机视图1305包括视场重叠的相机视图,允许将该组原相机视图1305混合到画布视图中。为了计算画布视图的区域1316,使用合成视图计算1320从原相机视图1305能够计算捕获关于画布视图的区域1316的光信息的对应合成视图1310。在一些实施方式中,基于原相机视图1305和光流通过新视图生成模块240执行合成视图计算1310。当计算所需合成相机的合成视图1310时,使用画布视图计算1325能够计算画布视图的区域1316。如上所述,能够通过三角法基于合成相机的相对位置和画布视图1315的关联视点计算合成视图1310内包含关于画布视图的区域1316的光信息的区域的位置。
[0149] 在一些实施方式中,对画布视图1315的每个区域顺次重复图13中的过程,直至计算全部的区域。然而,在其他实现方式中,能够使用其他计算过程生成画布视图,例如,能够计算固定的一组合成视图或在组装画布视图1315之前即时确定并且计算所需的合成视图。有效地,图13中的过程涉及更改原相机视图1405的像素强度信息的两个步骤或两次映射,首先,将来自原视图1305的像素映射至一组合成视图1310,然后,将来自该组合成视图1310的像素映射至画布视图1315。映射是基于另一视图中的指定像素在一个视图中生成像素的像素级运行。图13中的过程是有效的,但是,能够导致画布视图1315中不使用的合成视图
1310的许多额外区域的计算,例如,计算并未整合到最终画布视图中的合成视图中的像素。
当在计算合成视图内的哪些区域包含相关的光信息之前生成完整的合成视图1310时,该方法能够导致画布视图1315的计算产生额外的处理开销。
[0150] 图14是示出根据一个实施方式的用于基于相机视图计算画布视图的第二示例性过程的线图。示图1400包括原相机视图1405、选择像素1406、合成视图1410、画布视图1415、合成视图的区域1411、画布视图的区域1416、合成视图映射1425、画布视图映射1430、再映射过程1435、以及组合映射1440。与图13相比较,通过减少对相机视图中的像素执行的计算步骤次数并且通过减少最终不被整合到画布视图1410中的不必要的像素的计算的过程,图14中的过程降低了计算画布视图1410时所需的处理能力。
[0151] 在图14的实现方式中,为了计算画布视图1415的区域,对原相机视图1405应用组合映射1440,从而从原相机视图1405的相关像素直接生成画布视图1315的区域、在一些实施方式中,组合映射1440是将画布视图1415中的每个像素或区域映射至原相机视图1405中的一个或多个像素或区域的矢量场,例如,以选择像素1406为代表。在一些实现方式中,能够将原相机视图1405中的多个像素映射至画布视图中的单一像素,例如,画布视图1415中的像素能够与原相机视图1405的第一相机视图中的75%像素和原相机视图的第二相机视图中的25%的其他像素混合相关联。组合映射1440允许在单次映射运行时从原相机视图1405内的选择像素1406的像素强度值计算画布视图1415的像素强度值。
[0152] 在一些实现方式中,基于画布视图映射1430和合成视图映射1425生成组合映射1440。画布视图映射1430是将画布视图1416的区域与合成视图1411的对应区域相关联的映射,并且合成视图映射1425是将原相机视图1405中的像素与合成视图1411中的区域相关联的映射。通过与图12中的合成视图计算1320和画布视图计算1325相似的技术能够生成合成视图映射1425和画布视图映射1430。在一些实施方式中,合成视图的区域是一垂直列的像素,但是,合成视图的区域也能够是像素的高度的函数,从而创建经过位移的列的像素。
[0153] 如之前描述的,基于原相机视图1405及原相机视图之间计算的光流能够计算合成视图1410。使用相似的技术能够生成合成视图映射1425。如上所述,通过新视图生成模块240能够生成关于合成视图1410或合成视图1411的区域的合成视图映射1425。在一些实现方式中,在不计算合成视图1410的任意像素强度值的情况下,发生合成视图映射1425。相似地,使用合成视图的位置及三角法能够生成画布视图映射1430,以确定与画布视图的区域相关联的合成视图1411的正确区域。
[0154] 在计算关于画布视图的区域1416的画布视图映射1430和合成视图映射1425之后,使用再映射过程1430能够生成关于画布视图的区域1416的组合映射1440。然后,对画布视图1415中的各个其他区域重复再映射过程1435,以生成包含关于画布视图1415的各个区域的映射信息的组合映射1440。在一些实施方式中,由于各个映射是关联像素位置、但不传递或计算这些位置的像素强度值的矢量场,合成视图映射1425与画布视图映射1430不涉及计算画布视图1415或合成视图1410的任意像素强度值。
[0155] 在再映射过程之后,则对原相机视图1405应用组合映射1440,以基于原相机视图1405中的选择像素1406生成关于画布视图1415的像素强度信息。在一些实现方式中,从原相机视图1405中的选择像素1406的像素强度值直接计算画布视图1415的像素强度值,而无需中间计算合成视图1410的像素强度值。
[0156] 图15是示出根据一个实施方式的用于基于相机视图计算画布视图的过程的流程图。当光信息近似系统260接收从其生成画布视图的相机图像时1505,过程1500开始。然后,光流计算模块250计算该组接收的相机视图中的邻近相机视图之间的光流1515。例如,光流计算模块250基于诸如与图9有关描述的过程900等迭代过程计算光流。然后,光信息近似模块260确定需要哪些合成视图生成画布视图1515,然后,进一步计算期望合成视图内的哪些指定像素或区域捕获了相关的光信息1520。然后,例如,通过新视图生成模块260计算所需像素与接收的相机视图之间的映射1525。然后,基于之前计算的映射,光信息近似模块260生成接收的相机视图与画布视图之间的组合映射1530。最后,通过光信息近似模块260生成画布视图1535。
[0157] 结论
[0158] 出于示出之目的展开了本发明的实施方式的上述描述;其并不旨在穷尽或将本发明局限于所公开的精确形式。相关领域技术人员应当认识到,根据上述公开内容,许多改造和变形是可能的。
[0159] 本描述的一些部分就信息的运行的算法和符号表示方面描述了本发明的实施方式。数据处理领域技术人员通常使用这些算法描述和表示将其有效工作的实质传递给本领域技术人员。尽管从功能、运算、或逻辑方面描述,然而,应当理解的是,通过计算机程序或等效电路、微码等实现这些运行。进一步地,还证明了有时便于将这些运行的布置称之为模块、而不损失一般性。所描述的运行及其相关联的模块可以涵盖软件、固件、硬件、或其任意组合。
[0160] 利用一个或多个硬件或软件模块单独或结合其他设备执行或实现此处描述的任意步骤、运行、或过程。在一个实施方式中,利用包括杆计算机程序代码的计算机可读介质的计算机程序产品实现软件模块,通过计算机处理器运行软件模块,以执行所描述的任意或全部步骤、运行、或过程。
[0161] 本发明的实施方式还可以涉及用于执行此处的运行的装置。该装置可以被特别地构造用于所需目的,和/或其可以包括通过存储在计算机中的计算机程序而选择性激活或重新配置的通用计算设备。该计算机程序可以存储在耦合至计算机系统总线的非易失性、易失性计算机可读存储介质、或适合用于存储电子指令的任意类型的介质中,进一步地,本说明书中所提及的任意计算系统可以包括单个处理器或可以是采用多个处理器设计来增加运算能力的架构。
[0162] 本发明的实施方式还可以涉及通过此处描述的运算过程生产的产品。该产品可以包括从运算过程产生的信息,其中,信息存储在非易失性、易失性计算机可读存储介质中并且可以包括此处描述的计算机程序产品或其他数据组合的任意实施方式。
[0163] 最后,本说明书中使用的语言主要选择用于易读性和指令性目的,并且不可选择为描绘或限制发明主题。因此,其不旨在通过该细节描述限制本发明的范围,而是通过基于其应用的问题的任意权利要求限制本发明的范围。相应地,本发明的实施方式的公开内容旨在为示出、而非限制下列权利要求中阐述的本发明的范围。