网络控制的3D视频捕获的制作方法

文档序号:20921482发布日期:2020-05-29 14:12阅读:201来源:国知局
网络控制的3D视频捕获的制作方法



背景技术:

控制涉及处理信息的多个设备可能是困难的任务。例如如果多个设备涉及处理视频信息(例如视频捕获和处理),则设备可能需要以特定顺序开始和/或设备可能需要以特定顺序或特定配置来处理视频信息。在设备彼此远离并经由计算机网络进行通信的情况下,设备启动和开始处理的顺序甚至更为重要。

在一些解决方案中,可以手动开始这种设备。例如用户可以在物理上打开设备之一的电源、登录并开始特定的软件应用。用户可以按特定顺序并使用特定配置选项来对其他设备重复此过程。但是,此过程可能会出现问题并且容易出错。例如用户可能需要在第一设备上开始软件,切换到第二设备以开始不同的软件应用,切换回第一设备以建立与第二设备的网络连接,等等。如果设备之一发生故障(例如由于软件崩溃),也会出现问题,这可能导致整个系统出现故障。

因此,存在针对与网络控制的视频捕获和处理有关的技术中的改进的充分机会。



技术实现要素:

提供本发明内容以简化形式介绍概念的选择,这些概念将在下面的具体实施方式中进一步描述。本发明内容既不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。

描述了用于控制捕获三维(3d)视频内容的过程的技术。例如控制器可以提供对参与3d视频内容的捕获和处理的各种组件的集中控制。例如控制器可以与(例如在其他计算设备上运行的)多个组件建立连接。控制器可以从组件接收状态更新消息(例如包括状态改变信息、网络地址信息等)。控制器还可以将消息广播到组件。例如控制器可以向组件广播系统状态消息,其中系统状态消息包括组件的当前状态信息。控制器还可以广播其他类型的消息,诸如指示组件进入开始状态的开始消息。

例如可以提供一种用于控制3d视频捕获的方法。该方法包括从多个组件接收连接,其中多个组件在一个或多个其他计算设备上运行。多个组件可以处理信息以用于从所捕获的现实世界视频输入来生成三维全息视频输出。该方法还包括从多个组件接收状态更新消息,其中状态更新消息包括多个组件处于就绪状态的指示。该方法还包括:在从多个组件接收到状态更新消息之后,向多个组件广播开始命令。多个组件至少部分地基于从计算设备接收的开始命令,开始处理信息以用于从捕获的现实世界视频输入来生成三维全息视频输出。多个组件可以包括多个深度生成器、编码器和分发器。

在一些实现中,该方法包括将系统状态消息广播到多个组件。例如系统状态消息可以包括多个组件的当前状态信息。可以响应于状态改变而在多个组件之间广播系统状态消息。在一些实现中,该方法由在计算设备上运行的控制器执行,该计算设备经由到计算机网络的网络连接与多个组件进行通信。

如本文所述,可以根据需要将各种其他特征和优点并入技术中。

附图说明

图1是描绘了用于通过控制面板控制三维视频捕获的示例环境的图。

图2是描绘了用于通过控制面板控制三维视频捕获的示例环境的图,该控制面板包括编码器和分发器组件。

图3是描绘了在转换到准备状态期间在控制面板和其他组件之间的示例网络通信流的图。

图4是描绘了在转换到运行状态期间在控制面板和其他组件之间的示例网络通信流的图。

图5是用于控制3d视频捕获的示例方法的流程图。

图6是由包括多个深度生成器、编码器和分发器的多个组件执行用于控制3d视频捕获的示例方法的流程图。

图7是用于通过控制器来控制3d视频捕获的示例方法的流程图。

图8是其中可以实现一些所描述的实施例的示例计算系统的图。

图9是可以与本文描述的技术结合使用的示例移动设备。

图10是可以与本文描述的技术结合使用的示例云支持环境。

具体实施方式

概述

如本文所述,提供了用于控制捕获三维(3d)视频内容的过程的各种技术。例如控制器(也称为控制面板)可以提供对参与3d视频内容的捕获和处理的各种组件的集中控制。例如控制器可以与(例如在其他计算设备上运行的)多个组件建立连接。控制器可以从组件接收状态更新消息(例如包括状态改变信息、网络地址信息等)。控制器还可以将消息广播到组件。例如控制器可以向组件广播系统状态消息,其中系统状态消息包括组件的当前状态信息。控制器还可以广播其他类型的消息,诸如指示组件进入开始状态的开始消息。

本文所述的技术可用于控制捕获用于生成3d全息视频输出的现实世界视频输入的过程。为了提供现实世界的视频输入,使用相机来捕获现实世界的对象或环境(例如人或物)的图像。除了用于应用彩色的图像外,相机还捕获用于产生深度信息的图像。在一些实现中,视频相机被组织成两个单色相机和一个彩色相机的组(也称为盒)。例如单色相机可以使用红外(ir)带通滤波器和ir散斑图案来改进立体声对应匹配。视频输出(例如深度视频流和彩色视频流)可以被传递到其他组件,这些组件处理视频信息,生成3d模型并显示3d全息视频输出。例如视频输出可以通过网络被传输到(例如在不同的计算设备上运行的)深度生成器,该深度生成器从单色图像来创建深度图。然后,可以将深度图通过网络传输到融合组件(例如,与深度生成器在不同的计算设备上运行),融合组件组合深度图并创建3d模型。然后,可以将3d模型通过网络传输到(例如与融合组件运行在不同的计算设备上的)绘制器,该绘制器接收3d模型并将其绘制为可见格式并应用彩色信息(例如从彩色相机沿着相同路径传递),以创建彩色3d模型,然后准备将其输出到全息显示设备或另一种类型的显示设备。例如绘制器可以生成左右1080p图像,以在虚拟现实或增强现实头戴式耳机中显示3d全息视频输出。可用作输出设备的全息显示设备的一些示例包括和htcvivetm

在此描述的技术可以用于实现整体运输系统。holoportation是一种3d捕获技术,其允许人和/或环境的高质量3d模型被构建并被实时发送给查看者。在一些实现中,将3d模型被发送到远程位置以供观看。整体传输允许用户看到3d远程参与者并与之交互,就好像他们实际存在于其物理空间中一样。

存在一些用于捕获和呈现3d视频内容的解决方案。但是,这样的解决方案面临许多问题。例如现有的解决方案利用互连不良的大量计算设备。例如系统中的某些设备可能需要连接到系统中的其他设备。如果手动建立此类互连,则可能会发生错误(例如设备可能被不正确地配置)。此外,现有解决方案使用手动启动处理。例如在3d视频内容的捕获、处理和显示中使用的设备可能必须手动开始并以特定顺序开始。这种手动启动可能会出现问题。例如如果某些设备未按正确的顺序开始,或者没有足够的时间初始化,则它们可能无法正确运行(例如它们可能产生损坏的数据,它们可能根本不产生数据,或者可能崩溃)。

使用本文描述的技术,可以更高效和可靠地捕获和处理3d视频内容。例如可以利用控制器来控制参与3d视频内容的捕获、处理和显示的各种组件(可以在通过本地和/或远程网络分布的多个计算设备上运行)的启动和操作。控制器可以通过接收来自各种组件的连接来控制启动和初始化处理,以便于确保在继续操作之前组件处于就绪状态。控制器还可以控制启动过程,其中组件通过控制各种组件到运行状态的转换(例如控制各种组件进入运行状态并开始处理内容的顺序)来开始处理视频输入以生成3d内容。控制器还可以管理组件的其他活动。在一些实现中,控制器提供状态管理,该状态管理包括从各种组件接收状态信息以及向组件广播状态更新。例如给定的组件可能在可以转换为运行状态之前需要知道另一个组件已进入运行状态,并因此可以在转换自身之前,等待控制器广播指示另一个组件已进入运行状态的状态更新。控制器还可提供组件断开和重新连接的能力(例如当组件重新连接时,通过与其他组件协调来自动地恢复处理)。控制器还可以提供整个系统的有序关机(例如按特定顺序将关机或停止命令传输到组件)。控制器还可以提供错误恢复(例如在检测到处理错误时重新配置或重新开始组件)。

在一些实现中,可以以任意顺序打开组件(例如可以手动或经由自动过程来打开计算设备和/或软件应用)。然后,组件会在控制器的已知网络地址(例如其是预配置的)处自动连接到控制器。然后,组件从控制器接收广播消息(例如广播系统状态消息),并使用广播消息中的信息来执行与其他组件的任意所需的直接网络连接。然后,组件等待控制器发出开始命令。一旦控制器发送了开始命令,组件便会基于其他组件的状态(如来自控制器的广播消息所报告的)以特定顺序进行处理。例如分发器将在分发器开始运行和处理视频数据之前等待报告深度生成器正在运行的广播消息。

3d视频捕获环境

在本文描述的技术中,可以提供环境以支持3d视频捕获,以便生成可以被绘制以显示给用户(例如使用全息显示设备)的3d模型。例如环境可以包括在本地环境或远程环境中运行各种组件的计算设备。

图1是描绘了用于通过控制面板150(也称为控制器或控制面板组件)控制三维视频捕获的示例环境100的图。示例环境100包括多个相机盒110。例如相机盒110中的每一个可以包括两个单色视频相机和一个彩色视频相机。在示例环境100中,存在描绘的八个相机盒110。但是,可以利用更多或更少的相机盒。在一些实现中,最少使用两个相机盒来提供足够的深度信息以生成3d图像,但是在某些情况下,更多的相机盒可以改进所生成的3d图像的质量。

在示例环境100中,存在四个深度生成器(也称为深度生成器组件),从120到123。每个深度生成器从两个相机盒接收视频信息(例如经由有线连接,诸如usb电缆,经由无线连接或经由网络连接)。例如深度生成器120从顶部的两个相机盒接收视频信息。在这种布置中,深度生成器120从两个不同的视点生成两个实时深度图。其余深度生成器121、122和123各自都从它们相应的两个视频盒组接收视频信息,并生成它们相应的实时深度图。通常,深度生成器可以将消息(例如连接消息)发送到控制面板150,以通知控制面板150存在的深度生成器的数目。控制面板150可以将该信息包括在广播系统状态消息中,以通知可能需要知道深度生成器数目的其他组件。

深度生成器是指接收和处理来自一个或多个相机的视频输入的软件和/或硬件。通常,深度生成器执行以下操作中的一些或全部:从一个或多个视频相机接收视频图像(例如包括单色和/或彩色图像),从所接收的视频图像(例如从单色图像)生成深度图,并将深度图和/或彩色图像传输到分发器。在一些实现中,每个深度生成器是在不同计算设备上运行的软件应用。例如每个深度生成器120到123都可以在其自己的计算机上运行,其中每个计算机都具有两个图形卡,每个图形卡处理一个视频盒的视频数据。但是,深度生成器可以在更多或更少的计算设备或虚拟机上运行(例如使用云计算资源)。

在示例环境100中,存在一个融合组件130。融合组件130对从深度生成器120-123所接收的深度图执行融合,以生成3d模型(也称为3d网格或3d体积网格)。融合组件130可以接收指示深度生成器的数目的信息(例如在来自控制面板150的广播系统状态消息中),其可以允许融合组件130正确地组合深度图。在一些实现中,融合组件130作为软件在分离的计算设备或分离的虚拟机上运行。通常,融合组件执行以下操作中的一些或全部:从深度生成器接收深度图,从深度生成器接收彩色图像,从深度图生成3d模型,以及将3d模型和彩色图像传输到绘制器。

在示例环境100中,存在一个或多个绘制器140(也称为绘制器组件)。绘制器140从融合组件130接收3d模型,并将其绘制为可见格式,并应用从相机盒110的彩色相机捕获的颜色信息(例如红-绿-蓝(rgb)纹理图)(例如创建彩色3d模型)。3d输出被提供给输出设备145以进行显示。例如绘制器140中的每一个可以为特定的输出设备(例如特定的全息显示设备或头戴式耳机)产生3d输出。绘制器还可以产生二维格式的输出(例如用于在计算机监视器上显示或发送到网站)。在一些实现中,绘制器140作为软件在分离的计算设备或分离的虚拟机上运行。通常,绘制器执行以下操作中的一些或全部:从融合组件接收3d模型,从融合组件接收彩色图像,使用彩色图像将彩色应用于3d模型以创建彩色3d模型,将彩色3d模型处理为与特定输出设备兼容的格式的输出视频(例如用于虚拟现实或增强现实耳机的两个图像、单个视频流等),并输出输出视频(例如发送到连接的耳机,发送到连接的监视器,经由网络发送等)。在一些实现中,绘制器140报告正在使用的绘制器的数目(例如在到控制面板150的连接消息中)。控制面板150可以将该信息包括在广播系统状态消息中(例如允许融合组件130直接连接到可以在不同计算设备上运行的绘制器中的每一个)。

示例环境100包括控制面板150。控制面板150作为与环境的其他组件分离的软件和/或硬件操作。例如控制面板150可以作为软件在分离的计算设备或虚拟服务器上运行。

控制面板150为整个环境提供集中控制点。为了提供这种控制,控制面板150经由网络连接来连接到系统的各种组件。例如控制面板150可以与各种组件连接到(例如使用预先配置的ip地址或主机名)的已知网络地址(例如因特网协议(ip)地址或主机名)相关联。

在一些实现中,控制面板150管理整个环境的状态以控制3d视频捕获。为了管理整个环境的状态,控制面板150维护组件中的一些或全部的状态信息(例如维护每个个体组件的状态)。在一些实现中,给定组件可以处于以下状态之一:就绪状态、运行状态和停止状态。就绪状态指示组件已连接至控制面板150(例如使用控制面板150的已知网络地址进行连接),已执行任意所需的配置或初始化,并准备开始操作。运行状态指示组件正在主动执行其处理任务(例如对于深度生成器,深度生成器将接收视频图像数据,生成深度图,并将深度图和彩色信息传输到分发器)。停止状态指示该组件未运行(例如该组件可能已打开但尚未处于就绪状态,或者由于来自控制面板150的命令而可能已停止且未进行处理)。在一些实现中,还提供了指示给定组件正在处理的速度的fps(每秒帧)状态。

在一些实现中,控制面板150将组件的当前状态广播到整个环境的组件(例如到所有组件)。广播系统状态消息向各种组件通知整个环境中每个组件的状态,并可用于管理状态转换和其他活动。在一些实现中,每当存在组件之一的状态改变时(例如在从组件接收到指示其已经改变其状态的消息时),控制面板150广播系统状态消息(包括组件的当前状态信息)。控制面板150还可以基于其他活动(例如在从组件之一接收到连接时)广播系统状态消息。广播系统状态消息可以包含除组件的当前状态以外的信息,诸如连接信息(例如组件的ip地址或主机名),这可以允许组件之间建立直接的网络连接。

在一些实现中,控制面板150允许各种组件断开和重新连接。例如如果组件之一发生故障(例如崩溃),则该组件可以重新连接至控制面板150,如果需要的话可以重新连接至其他组件,并恢复处理操作。

通过管理整个环境的各种组件,控制面板150可以确保整个环境以有序的方式开始、运行和关闭。例如控制面板150可以通过维持各种组件的状态并发送广播系统状态消息来强制各种组件的启动顺序。组件可以使用广播系统状态消息来协调其状态改变(例如确保在改变状态和/或自己执行动作之前,相对于其他组件发生某些活动和/或状态改变)。

在一些实现中,每个组件(例如深度生成器120-123中的每一个、融合组件130、绘制器140中的每一个、和控制面板150)在分离的计算设备(例如,分离的物理计算机或服务器或分享的虚拟机)上运行。然而,在一些实现中,组件中的一些可以在相同计算设备上运行(例如融合组件130和绘制器140可以在相同服务器上运行)和/或使用云计算资源运行(例如,作为使用云计算资源运行的分离组件)。

在示例环境100中,组件可以位于相同位置。例如这些组件可以全部驻留在单个房间或相同建筑物中(例如经由局域网连接)。在一些实现中,组件中的一些或全部可以位于不同的位置(例如经由诸如因特网的广域网连接)。

图2是描绘了用于通过控制面板150来控制三维视频捕获的示例环境200的图。示例环境200包含与示例环境100相同的组件,但是具有一些附加组件和不同的布置。具体而言,示例环境200包括编码器210和分发器220。编码器组件210从相机盒110接收视频图像,对视频图像进行编码(例如使用视频编解码器),并将所编码的视频图像传输到分发器220。在一些实现中,编码器210可以将视频图像(例如1080p分辨率或某个其他分辨率的视频图像)打包成较大的图像(例如4k分辨率或某个其他较大分辨率的图像)并对较大的图像进行编码(例如使用视频编解码器,诸如h.264)。编码器210可以在接收到个体视频图像时将其合并为较大的视频图像(例如逐图片或逐帧地)。例如编码器210可以从八个相机盒210中的每一个接收两个单色图片和一个彩色图片,将它们组合(例如以预定的平铺布置)成更大的图片,对更大的图片进行编码,并将所编码的图片传输到分发器220。

分发器220从编码器组件210接收所编码的图像,将其划分,并且将图像数据发送到深度生成器120-123以进行处理。例如分发器220可以对图像数据进行划分,以使得用于每组两个相机盒的图像数据被传输到对应的深度生成器。分发器220可以接收指示深度生成器的数目的信息(例如在来自控制面板150的广播系统状态消息中),这可以允许分发器220相应地划分图像数据。深度生成器120-123、融合组件130和绘制器140然后执行与以上关于图1所讨论的相同的操作。

在一些实现中,编码器210(例如作为软件应用)在与环境的其他组件分离的计算设备或虚拟机上运行。例如编码器210可以包括与其他组件分离的软件和/或硬件资源。通常,编码器执行以下操作中的一些或全部:从一个或多个相机接收视频图像(例如包括单色和/或彩色图像),对视频图像进行编码(例如使用诸如h.264的视频编解码器),其可以包括将视频图像打包成特定布置的较大视频图像,以及将所编码的视频图像传输到分发器。

在一些实现中,分发器220(例如作为软件应用)在与环境的其他组件分离的计算设备或虚拟机上运行。例如分发器220可以包括与其他组件分离的软件和/或硬件资源。通常,分发器执行以下操作中的一些或全部:从编码器接收编码的视频图像,对视频图像进行解码,划分视频图像,并将视频图像传输到深度生成器组件。

在一些实现中,相机盒和编码器210在本地环境230中操作,而其他组件(分发器220、深度生成器120-123、融合组件130、绘制器140和控制面板150)在远程环境240中操作。本地环境230的组件经由一个或多个网络连接(例如有线网络连接、无线网络连接或组合)与远程环境240的组件通信。例如本地环境230的组件可以位于特定地理位置(例如建筑物中的房间),而远程环境240中的组件可以位于不同的地理位置(或多个不同的地理位置)。例如远程环境240的组件中的一些可以是位于远程数据中心中的服务器计算机或虚拟服务器。在一些实现中,本地环境230是移动环境(例如,汽车),其中相机盒110和编码器210在其中操作,并且其使用无线网络连接(例如连接和/或蜂窝数据连接)与远程环境240的组件(例如与分发器220和/或控制面板150)进行通信。

当编码器210和分发器220彼此远离时,使用它们可以提供益处。例如编码器210可以使用压缩(例如使用h.264或另一视频编码和压缩技术)对图像数据进行编码,使得其可以通过相对低带宽的网络连接(例如无线网络连接)来被传输。这种布置可以允许系统在移动环境中有效地操作。

在一些实现中,没有深度生成器。例如相机(例如相机盒110)可以是内部生成深度图的深度相机。深度相机的一种示例类型是相机。在这种布置中,深度相机直接连接至融合组件130(例如在图1所描绘的布置中)或编码器210(例如在图2所描绘的布置中),并且深度生成器(例如深度生成器120-123)不存在。

控制器操作

在本文描述的技术中,控制器(也称为控制面板)管理在捕获3d视频内容并生成可绘制以向用户显示(例如使用全息显示设备)的3d模型中所涉及的组件的操作。控制器通过发送和接收消息来管理和协调操作。在一些实现中,控制器实施控制各种组件的操作的状态机。

图3是描绘了在转换到就绪状态期间在控制面板150和其他组件之间的示例网络通信流程300的图。具体地,该图描绘了在控制面板150、深度生成器(例如共同表示深度生成器120-123)、分发器220和编码器210之间发生的网络通信。

在320处,深度生成器310连接至控制面板150。例如深度生成器310可以经由网络(例如,经由局域网或诸如因特网的广域网)或进程间通信将连接消息发送到控制面板150的已知网络地址。连接消息指示深度生成器310处于就绪状态。响应于连接消息,控制面板150广播系统状态消息,如在322处所描绘。系统状态消息指示深度生成器310处于就绪状态。系统状态消息还可以包含附加信息,诸如深度生成器310的网络地址(例如ip地址、主机名或套接字)。在深度生成器310连接到控制面板150并且处于就绪状态之后,它们等待开始命令,如在324处所描绘的。为简单起见,仅针对深度生成器310共同描绘了单个消息流。然而,将通常存在与深度生成器中的每一个进行的单独通信,并且它们可以以任意顺序发生。例如在320、322和324处描绘的消息可以发生n次,其中n是整个系统中存在的深度生成器的数目。

在330处,分发器220连接到控制面板150。由于分发器220的连接,控制面板150广播系统状态消息,如在322处描绘的(例如系统状态消息可以包含分发器220的网络地址、深度生成器310的网络地址、以及所有组件的状态信息)。在接收到广播系统状态消息(在322处描述)之后,分发器220与深度生成器310中的每一个建立直接网络连接,如在334处所描绘的。例如分发器220使用其在广播系统状态消息中接收到的深度生成器310的网络地址(在322处描绘)。在建立直接网络连接之后,分发器220进入就绪状态,并向控制面板150发送消息,报告其处于就绪状态,如在336处所描绘。响应于状态改变,控制面板150再次广播系统状态消息,如在338处所描绘。在分发器组件220进入就绪状态后,它等待开始命令,如在340处所描绘。

在350,编码器210连接到控制面板150。由于编码器210的连接,控制面板150广播系统状态消息,如在352处所描绘的(例如系统状态消息可以包含编码器210的网络地址、分发器220的网络地址、深度生成器310的网络地址、以及所有组件的状态信息)。在接收广播系统状态消息(在在352处描绘的)之后,编码器210与分发器220建立直接网络连接,如在354处所描绘的。例如编码器210使用其在广播系统状态消息中接收的分发器220的网络地址(在在352处描绘的)。在建立直接网络连接之后,编码器210进入就绪状态,并且向控制面板150发送消息,报告其处于就绪状态,如在356处所描绘的。响应于状态改变,控制面板150再次广播系统状态消息,如在358处所描绘的。在编码器210进入就绪状态后,它等待开始命令,如在360处所描绘的。

示例性网络通信流程300描绘了消息和事件的一个示例性序列,其导致组件转换为就绪状态并等待来自控制面板150的开始命令以开始处理。但是,操作和事件中的一些可以以不同的顺序发生。例如可以交换322和324的顺序。另外,连接消息320、330和350可以以任意顺序发生。但是,示例网络通信流程300中存在一些依赖性。例如分发器220无法与深度生成器310建立通信,直到分发器220接收到包含深度生成器310的网络地址的广播系统状态消息322。因此,编码器210无法与分发器220建立通信,直到编码器210接收到包含分发器220的网络地址的广播系统状态消息352。

图4是描绘了在转换到运行状态期间在控制面板150和其他组件之间的示例网络通信流程400的图。示例网络通信流程400继续示例网络通信流程300。

示例性网络通信流程400以在420处描绘的开始命令开始,其在其他组件(在此示例中,深度生成器310,分发器220和编码器210)已经转换到就绪状态之后由控制面板150广播。在接收到开始命令之后,深度生成器310从就绪状态转换为运行状态,如在422处描绘的,并且将运行状态报告给控制面板150,如在424处描绘的。

分发器220直到深度生成器310运行之后才开始运行。因此,分发器220在如426所描绘的从就绪状态转换到运行状态之前一直等待,直到它接收到广播系统状态消息424(指示深度生成器310处于运行状态)为止。分发器报告它是处于运行状态,如在428处所描绘的。

直到分发器220运行之后,编码器210才开始运行。因此,编码器210在如在432处所描绘的从就绪状态转换到运行状态之前一直等待,直到它接收到广播系统状态消息430(指示分发器220处于运行状态)为止。编码器210报告它处于广播状态,如在434处所描绘的。由于状态改变,如在436处所描绘的,广播系统状态。

在一些实现中,融合组件130和绘制器140可以以任意顺序启动和开始处理(例如它们不依赖于其他组件进行处理操作)。然而,在一些实现中,融合组件130和绘制器140依赖于其他组件,并且它们可以在示例性网络通信流程300和400中被涉及。

在一些实现中,控制器监视和调整各种组件正在处理视频数据(例如执行速率控制操作)的速率。例如控制器可以从各种组件接收速率信息(例如从组件接收的fps状态更新消息中的fps信息)。控制器可以将当前的fps信息传输到组件(例如在广播系统状态消息中)。组件可以使用此信息来调整其处理速率。例如如果某个组件运行得太快(例如如果编码器以深度生成器无法处理的太快的速率传输编码图像,这可能会使深度生成器的缓冲器超载),则该组件可以调低其速率(例如编码器可以调整其速率以匹配深度生成器的fps)。

控制3d视频捕获的方法

在本文的任意示例中,可以提供用于控制3d视频捕获的方法。该方法可以由控制器(例如由控制面板组件150)执行,以便管理各种组件启动和开始处理视频数据的顺序。

图5是用于控制3d视频捕获的示例方法500的流程图。例如示例方法500可以由控制器(例如由控制面板组件150)执行。

在510处,经由网络或计算设备的进程间连接来从多个组件接收连接。多个组件在一个或多个其他计算设备上运行(例如可经由一个或多个有线和/或无线网络到达)。多个组件处理用于从捕获的现实世界视频输入生成三维全息视频输出的信息。多个组件可以包括编码器、分发器、深度生成器、融合组件和/或绘制器。在一些实现中,组件是在其他计算设备上运行的软件应用。

在520处,从多个组件接收指示多个组件处于就绪状态的状态更新消息。在一些实现中,多个组件启动并进入就绪状态的顺序由广播到多个组件的系统状态消息控制。

在530处,在从多个组件接收到状态更新消息之后,开始命令被广播到多个组件。例如多个组件可以至少部分地基于从计算设备所接收的开始命令,开始处理信息以用于从捕获的现实世界视频输入生成三维全息视频输出。

图6是用于控制3d视频捕获的示例方法600的流程图。例如示例方法600可以由控制器(例如由控制面板组件150)执行。

在610处,经由网络或计算设备的进程间连接来从多个组件接收连接。多个组件在一个或多个其他计算设备上运行(例如可经由一个或多个有线和/或无线网络到达)。多个组件处理信息以用于从捕获的现实世界视频输入生成三维全息视频输出。多个组件包括多个深度生成器、编码器和分发器。在一些实现中,多个组件还包括融合组件和绘制器。在一些实现中,组件是在其他计算设备上运行的软件应用。

在620处,系统状态消息被广播到多个组件。系统状态消息包括多个组件的当前状态信息,并且响应于状态改变而在多个组件之间被广播。系统状态消息还可以包含其他信息,诸如用于多个组件之间的直接网络连接的多个组件中的一些或全部的网络地址。在一些实现中,多个组件启动并进入就绪状态的顺序由系统状态消息控制。例如多个组件可以使用广播系统状态消息来确定何时它们可以改变状态、建立与其他组件的直接连接等。

在630处,从多个组件接收指示多个组件处于就绪状态的状态更新消息。

在640,在从多个组件接收到状态更新消息之后,开始命令被广播到多个组件。例如多个组件可以至少部分地基于从计算设备所接收的开始命令,开始处理信息以用于从所捕获的现实世界视频输入来生成三维全息视频输出。

图7是用于通过控制器来控制3d视频捕获的示例方法700的流程图。例如示例方法700可以由控制面板组件150执行。

在710处,运行在计算设备(例如服务器或虚拟机)上的控制器从多个组件接收连接。多个组件在一个或多个其他计算设备上运行(例如可经由一个或多个有线和/或无线网络到达)。多个组件处理信息以用于从所捕获的现实世界视频输入来生成三维全息视频输出。多个组件包括多个深度生成器、编码器和分发器。在一些实现中,多个组件还包括融合组件和绘制器。在一些实现中,组件是在其他计算设备上运行的软件应用。

在720处,当控制组件从多个组件之一接收到状态更新消息时,控制器广播包括多个组件的当前状态信息的系统状态消息。系统状态消息还可以包含其他信息,诸如用于多个组件之间的直接网络连接的多个组件中的一些或全部的网络地址。在一些实现中,多个组件启动并进入就绪状态的顺序由系统状态消息控制。例如多个组件可以使用广播系统状态消息来确定何时它们可以改变状态、建立与其他组件的直接连接等。

在730处,多个组件中的每一个以至少部分基于从控制器所接收的广播消息的顺序启动(例如进入读取状态和/或运行状态)。

计算系统

图8描绘了其中可以实现所描述的技术的合适的计算系统800的一般示例。由于可以在各种通用或专用计算系统中实现该技术,因此计算系统800不旨在启示对使用或功能范围的任意限制。

参考图8,计算系统800包括一个或多个处理单元810、815和存储器820、825。在图8中,该基本配置830被包括在虚线内。处理单元810、815执行计算机可执行指令。处理单元可以是通用中央处理单元(cpu)、专用集成电路(asic)中的处理器或任意其他类型的处理器。在多处理系统中,多个处理单元执行计算机可执行指令以增加处理能力。例如图8示出了中央处理单元810以及图形处理单元或协处理单元815。有形存储器820、825可以是易失性存储器(例如寄存器、高速缓存、ram)、非易失性存储器(例如rom、eeprom、闪存等)、或两者的某种组合,其可由一个或多个处理单元访问。存储器820、825存储以适于由一个或多个处理单元执行的计算机可执行指令的形式来实现本文描述的一种或多种技术的软件880以及由3d视频流水线创建的数据。

计算系统可以具有附加特征。例如计算系统800包括存储装置840、一个或多个输入设备850、一个或多个输出设备860以及一个或多个通信连接870。诸如总线、控制器或网络的互连机制(未示出)对计算系统800的组件进行互连。通常,操作系统软件(未示出)为在计算系统800中执行的其他软件提供操作环境,并协调计算系统800的组件的活动。

有形存储装置840可以是可移除的或不可移除的,并且包括磁盘、磁带或盒带、cd-rom、dvd或可用于存储信息并且可在计算系统800内访问的任意其他介质。存储装置840存储用于实现本文描述的一种或多种技术的软件880的指令和数据。

一个或多个输入设备850可以是诸如键盘、鼠标、笔或轨迹球的触摸输入设备、语音输入设备、扫描设备或向计算系统800提供输入的另一设备。对于视频编码,输入设备850可以是相机、视频卡、电视调谐器卡或接受模拟或数字形式的视频输入的类似设备或将视频采样读取到计算系统800中的硬盘、cd-rom或cd-rw。一个或多个输出设备860可以是显示器、打印机、扬声器、cd刻录机或提供来自计算系统800的输出的另一设备。

一个或多个通信连接870能够实现通过通信介质与另一计算实体进行通信。通信介质在调制数据信号中传送诸如计算机可执行指令、音频或视频输入或输出或其他数据的信息。调制数据信号是一种信号,其具有以将信息编码在信号中的方式被设置或改变的其特征中的一个或多个。作为示例而非限制,通信介质可以使用电、光、rf或其他载体。

技术可以在计算机可执行指令的一般上下文中描述,诸如程序模块中包括的那些计算机可执行指令,该计算机可执行指令在目标真实或虚拟处理器上的计算系统中执行。通常,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、库、对象、类、组件、数据结构等。在各种实施例中,程序模块的功能可以在程序模块之间组合或分割。用于程序模块的计算机可执行指令可以在本地或分布式计算系统内执行。

术语“系统”和“设备”在本文中可互换使用。除非上下文另外明确指出,否则两个术语均不暗示对计算系统或计算设备的类型进行任意限制。通常,计算系统或计算设备可以是本地的或分布式的,并且可以包括专用硬件和/或通用硬件与实现本文所述功能的软件的任意组合。

为了呈现,具体实施方式使用诸如“确定”和“使用”的术语来描述计算系统中的计算机操作。这些术语是计算机执行的操作的高级抽象,并且不应与人类执行的操作相混淆。与这些术语相对应的实际计算机操作取决于实现来变化。

移动设备

图9是描述了示例移动设备900的系统图,该移动设备900包括各种可选的硬件和软件组件,总体上以902表示。移动设备中的任意组件902均可与任意其他组件通信,尽管为便于说明未示出所有连接。该移动设备可以是多种计算设备中的任意一种(例如手机、智能手机、手持计算机、个人数字助理(pda)等),并且可以允许与一个或多个移动通信网络904进行无线双向通信,诸如蜂窝网络、卫星网络或其他网络。

所示的移动设备900可以包括用于执行诸如信号编码、数据处理、输入/输出处理、功率控制和/或其他功能的这种任务的控制器或处理器910(例如信号处理器、微处理器、asic或其他控制和处理逻辑电路)。操作系统912可以控制组件902的分配和使用,并支持一个或多个应用程序914。应用程序可以包括常见的移动计算应用(例如电子邮件应用、日历、联系人管理器、web浏览器、消息传送应用)或任意其他计算应用。用于访问应用商店的功能913也可以用于获取和更新应用程序914。

所描绘的移动设备900可以包括存储器920。存储器920可以包括不可移除存储器922和/或可移除存储器924。不可移除存储器922可以包括ram、rom、闪存、硬盘或其他众所周知的存储器存储技术。可移除存储器924可以包括在gsm通信系统中众所周知的闪存或订户身份模块(sim)卡,或者诸如“智能卡”的其他众所周知的存储器存储技术。存储器920可以用于存储用于运行操作系统912和应用914的数据和/或代码。示例数据可以包括网页、文本、图像、声音文件、视频数据、或经由一个或多个有线或无线网络发送到一个或多个网络服务器或其他设备和/或从一个或多个网络服务器或其他设备接收的其他数据集合。存储器920可以用于存储订户标识符,诸如国际移动订户身份(imsi)、以及设备标识符,诸如国际移动设备标识符(imei)。这样的标识符可以被传输到网络服务器以标识用户和设备。

移动设备900可以支持一个或多个输入设备930,诸如触摸屏932、麦克风934、相机936、物理键盘938和/或轨迹球940、以及一个或多个输出设备950,例如扬声器952和显示器954。其他可能的输出设备(未示出)可以包括压电或其他触觉输出设备。某些设备可以提供多个输入/输出功能。例如触摸屏932和显示器954可以组合在单个输入/输出设备中。

输入设备930可以包括自然用户界面(nui)。nui是使用户能够以“自然”方式与设备进行交互的任意接口技术,而不受诸如鼠标、键盘、遥控器等的输入设备施加的人为约束。nui方法的示例包括那些依赖于语音识别、触摸和手写笔识别、屏幕上以及与屏幕相邻的手势识别、空中手势、头部和眼睛跟踪、声音和语音、视觉、触摸、手势和机器智能的方法。nui的其他示例包括使用加速度计/陀螺仪的运动手势检测、面部识别、3d显示、头部、眼睛和凝视跟踪、身临其境的增强现实和虚拟现实系统,所有这些都提供了更自然的界面,以及用于使用电场感应电极(eeg和相关方法)来感应大脑活动的技术。因此,在一个特定示例中,操作系统912或应用914可以包括语音识别软件,作为语音用户界面的一部分,该语音用户界面允许用户经由语音命令来操作设备900。此外,设备900可以包括输入设备和软件,该输入设备和软件允许经由用户的空间手势进行用户交互,诸如检测和解释手势以向游戏应用提供输入。

无线调制解调器960可以耦合到天线(未示出),并且可以支持处理器910与外部设备之间的双向通信,如本领域中众所周知的。调制解调器960被一般性地示出,并且可以包括用于与移动通信网络904和/或其他基于无线电的调制解调器(例如蓝牙964或wi-fi962)进行通信的蜂窝调制解调器。无线调制解调器960通常被配置为与一个或多个蜂窝网络通信,诸如用于单个蜂窝网络内、蜂窝网络之间、或者移动设备与公共交换电话网络(pstn)之间的数据和语音通信的gsm网络。

移动设备可以进一步包括至少一个输入/输出端口980、电源982、诸如全球定位系统(gps)接收器的卫星导航系统接收器984、加速度计986和/或物理连接器990,其可以是usb端口、ieee1394(firewire)端口和/或rs-232端口。所说明的组件902不是必需的或全部包含的,因为可以删除任意组件并且可以添加其他组件。

云支持环境

图10示出了其中可以实现所描述的实施例、技术和技艺的合适的云支持环境1000的一般示例。在示例环境1000中,云1010提供各种类型的服务(例如计算服务)。例如云1010可以包括计算设备的集合,这些计算设备可以位于中央或分布在其上,其向经由诸如因特网等网络来连接的各种类型的用户和设备提供基于云的服务。可以以不同方式使用实现环境1000来完成计算任务。例如一些任务(例如处理用户输入并呈现用户界面)可以在本地计算设备(例如连接的设备1030、1040、1050)上执行,而其他任务(例如在后续处理中使用的数据的存储)可以在云1010中执行。

在示例环境1000中,云1010为具有各种屏幕能力的连接的设备1030、1040、1050提供服务。连接的设备1030表示具有计算机屏幕1035(例如中型屏幕)的设备。例如连接的设备1030可以是个人计算机,诸如台式计算机、膝上型计算机、笔记本计算机、上网本等。连接的设备1040表示具有移动设备屏幕1045(例如小尺寸屏幕)的设备。例如连接的设备1040可以是移动电话、智能电话、个人数字助理、平板计算机等。连接的设备1050代表具有大屏幕1055的设备。例如连接的设备1050可以是电视屏幕(例如智能电视)或连接到电视的另一个设备(例如机顶盒或游戏机)或类似物。连接的设备1030、1040、1050中的一个或多个可以包括触摸屏功能。触摸屏可以接受不同方式的输入。例如当物体(例如指尖或触控笔)扭曲或中断在表面上流动的电流时,电容式触摸屏会检测到触摸输入。作为另一个示例,当来自光学传感器的光束被中断时,触摸屏可以使用光学传感器来检测触摸输入。对于某些触摸屏检测到的输入,不需要与屏幕表面进行物理接触。没有屏幕功能的设备也可以在示例环境1000中使用。例如云1010可以为没有显示器的一台或多台计算机(例如服务器计算机)提供服务。

服务可以由云1010通过服务提供商1020或通过其他在线服务提供商(未示出)提供。例如可以针对特定连接的设备(例如连接的设备1030、1040、1050)的屏幕尺寸、显示能力和/或触摸屏能力定制云服务。

在示例环境1000中,云1010使用至少部分服务提供商1020向各种连接的设备1030、1040、1050提供本文所述的技术和解决方案。例如服务提供商1020可以为各种基于云的服务提供集中式解决方案。服务提供商1020可以管理用户和/或设备(例如所连接的设备1030、1040、1050和/或它们相应的用户)的服务订阅。

示例实现

尽管为了方便呈现以特定的有序顺序描述了一些所公开的方法的操作,但是应当理解,这种描述方式包括重新布置,除非以下阐述的特定语言要求特定的顺序。例如在某些情况下,顺序描述的操作可以被重新布置或同时执行。此外,为了简单起见,附图可能未示出可以将所公开的方法与其他方法结合使用的各种方式。

所公开的方法中的任意一种都可以被实现为在一个或多个计算机可读存储介质上存储并在计算设备(即,任意可用的计算设备,包括智能电话或包括计算硬件的其他移动设备)上执行的计算机可执行指令或计算机程序产品。计算机可读存储介质是可以在计算环境中访问的有形介质(一个或多个光介质盘,诸如dvd或cd,易失性存储器(诸如dram或sram)、或非易失性存储器(诸如闪存或硬盘驱动器))。作为示例并且参考图8,计算机可读存储介质包括存储器820和825以及存储装置840。作为示例并且参考图9,计算机可读存储介质包括存储器和存储装置920、922、924。术语计算机可读存储介质不包括信号和载波。另外,术语“计算机可读存储介质”不包括通信连接,诸如870、960、962和964。

用于实现所公开的技术的任意计算机可执行指令以及在所公开的实施例的实现期间创建和使用的任意数据都可以被存储在一个或多个计算机可读存储介质上。计算机可执行指令可以是例如专用软件应用或经由网络浏览器或其他软件应用(诸如远程计算应用)访问或下载的软件应用的一部分。此类软件可以在例如单个本地计算机(例如任意合适的商用计算机)上或使用一台或多台网络计算机在网络环境中(例如经由因特网、广域网、局域网、客户端-服务器网络(诸如云计算网络)或其他此类网络)来执行。

为清楚起见,仅描述了基于软件的实现的某些选定方面。省略了本领域公知的其他细节。例如应当理解,所公开的技术不限于任意特定的计算机语言或程序。例如所公开的技术可以通过用c++、java、perl、javascript或任意其他合适的编程语言编写的软件来实现。同样,所公开的技术不限于任意特定的计算机或硬件类型。合适的计算机和硬件的某些细节是众所周知的,并且不需要在本公开中详细阐述。

此外,基于软件的实施例(例如包括用于使计算机执行所公开的方法中的任一个的计算机可执行指令)中的任意一个均可以通过适当的通信手段上传、下载或远程访问。此类合适的通信方式包括例如因特网、万维网、内联网、软件应用、电缆(包括光缆)、磁通信、电磁通信(包括rf、微波和红外通信)、电子通信、或其他此类通信方式。

所公开的方法、装置和系统不应以任意方式解释为限制。相反,本公开针对各种公开的实施例的所有新颖的和非显而易见的特征和方面,单独的并且以彼此的各种组合和子组合。所公开的方法、装置和系统不限于任意特定方面或特征或其组合,所公开的实施例也不要求任意一个或多个特定优点存在或问题被解决。

来自任意示例的技术可以与在其他示例中的任意一个或多个中所描述的技术结合。鉴于可以应用所公开技术的原理的许多可能的实施例,应当认识到,所描述的实施例是所公开技术的示例,并且不应被视为对所公开技术的范围的限制。

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