使用光流生成中间视图的方法和计算机可读存储介质转让专利

申请号 : CN201780035010.0

文献号 : CN109314753B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

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

申请人 : 脸谱公司

摘要 :

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

权利要求 :

1.一种使用光流生成中间视图的方法,包括:

接收第一相机视图和第二相机视图,每个相机视图表示通过相机捕获并且与位置相关联的图像,所述相机视图是从所述位置捕获的;

对于位于与所述第一相机视图相关联的位置和与所述第二相机视图相关联的位置之间的合成视图识别合成视图位置;

检索包括矢量位移场的光流,所述光流的每个矢量表示在所述第一相机视图和所述第二相机视图对应的位置之间的位移;

基于所述光流和所述合成视图位置将所述第一相机视图相对于与所述第一相机视图相关联的位置偏移为第一合成视图;

基于所述光流和所述合成视图位置将所述第二相机视图相对于与所述第二相机视图相关联的位置偏移为第二合成视图;

并且

混合所述第一合成视图和所述第二合成视图以形成合成视图。

2.根据权利要求1所述的方法,其中,所述光流包括确定偏移所述第一相机视图的每个区域的量值和方向的矢量位移场。

3.根据权利要求2所述的方法,其中,基于所述光流偏移所述第一相机视图包括基于所述第一相机视图的位置与所述合成视图位置的相对距离成比例地偏移所述第一相机视图。

4.根据权利要求3所述的方法,其中,所述光流使所述第一相机视图和所述第二相机视图之间的对应像素相关联。

5.根据权利要求4所述的方法,进一步包括对于所述第一相机视图和所述第二相机视图计算光流。

6.根据权利要求1所述的方法,其中,从捕获所述第一相机视图和所述第二相机视图的图像捕获系统接收所述第一相机视图和所述第二相机视图。

7.根据权利要求1所述的方法,其中,所述第一相机视图和所述第二相机视图各自描述这两个相机视图共有的一个或多个对象。

8.根据权利要求1所述的方法,其中,混合所述第一合成视图和所述第二合成视图进一步包括基于所述第一相机视图和所述第二相机视图的位置中的每一个与所述合成视图位置的相对距离加权所述第一相机视图和所述第二相机视图。

9.根据权利要求1所述的方法,其中,所述合成视图是描述所述第一相机视图和所述第二相机视图的选择的区域的部分合成视图。

10.根据权利要求1所述的方法,其中,所述合成视图是将所述合成视图的每个像素描述为所述第一相机视图和所述第二相机视图中的一个或多个像素的结合的合成视图映射。

11.一种非易失性计算机可读存储介质,包括指令,在所述指令被处理器执行时使所述处理器:接收第一相机视图和第二相机视图,每个相机视图表示通过相机捕获并且与位置相关联的图像,所述相机视图是从所述位置捕获的;

对于位于与所述第一相机视图相关联的位置和与所述第二相机视图相关联的位置之间的合成视图识别合成视图位置;

检索包括矢量位移场的光流,所述光流的每个矢量表示在所述第一相机视图和所述第二相机视图对应的位置之间的位移;

基于所述光流和所述合成视图位置将所述第一相机视图相对于与所述第一相机视图相关联的位置偏移为第一合成视图;

基于所述光流和所述合成视图位置将所述第二相机视图相对于与所述第二相机视图相关联的位置偏移为第二合成视图;

并且

混合所述第一合成视图和所述第二合成视图以形成合成视图。

12.根据权利要求11所述的非易失性计算机可读存储介质,其中,所述光流包括确定偏移所述第一相机视图的每个区域的量值和方向的矢量位移场。

13.根据权利要求12所述的非易失性计算机可读存储介质,其中,基于所述光流偏移所述第一相机视图包括基于所述第一相机视图的位置与所述合成视图位置的相对距离成比例地偏移所述第一相机视图。

14.根据权利要求13所述的非易失性计算机可读存储介质,其中,所述光流使所述第一相机视图和所述第二相机视图之间的对应像素相关联。

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] 图1是根据本发明的实施方式的其中画布生成系统操作的系统环境的框图。
[0032] 图2是根据本发明的实施方式的画布生成系统的框图。
[0033] 图3是示出了根据一些实施方式的示例性图像捕获系统的构造的线图。
[0034] 图4是示出了根据一些实施方式的在示例性画布生成系统中使用合成相机的线图。
[0035] 图5a是示出了根据一些实施方式的基于左相机视图和右相机视图生成示例性合成视图的线图。
[0036] 图5b是示出了根据一些实施方式的示例性相机视图和示例性合成视图的线图。
[0037] 图6是示出了根据一些实施方式的从示例性相机视图生成示例性合成视图的详细实例的线图。
[0038] 图7是示出了根据实施方式的用于从输入相机视图生成合成视图的过程的流程图。
[0039] 图8是示出了根据一些实施方式的示例性相机视图之间的光流矢量的线图。
[0040] 图9是示出了根据一些实施方式的用于计算两个相机视图之间的光流的示例性过程的流程图。
[0041] 图10是示出了根据一些实施方式的多个对象和示例性图像捕获系统的线图。
[0042] 图11是示出了根据一些实施方式的示例性画布视图的线图。
[0043] 图12是示出了根据实施方式的改变对象的视图上的瞳间距离的效果的线图。
[0044] 图13是示出了根据一个实施方式的用于基于相机视图计算画布视图的示例性过程的线图。
[0045] 图14是示出了根据一个实施方式的用于基于相机视图计算画布视图的第二示例性过程的线图。
[0046] 图15是示出了根据一个实施方式的用于基于相机视图计算画布视图的过程的流程图。
[0047] 附图仅出于说明性的目的描述了本发明的各种实施方式。本领域技术人员从下列讨论中容易认识到,在不偏离本文中描述的本发明的原理的情况下,可以采用本文中示出的结构和方法的可替换的实施方式。

具体实施方式

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