虚拟视觉相机的制作方法
【专利说明】
【背景技术】
[0001 ] 远程呈现(telepresence)涉及将视频传送至远程位置,这一般使得远程观看者在某种程度上感觉到与其它参与者一同处于会议室等之中。一种向用户呈现远程呈现视频的所期望方式是结合其它视图一起提供示出参与者的会议室的全景视图,上述另一个视图诸如正在讲话的人的特写视图、白板或者所讨论的一些对象。该其它视图通常能够经由摇摄和倾斜动作等进行控制。
[0002]然而,诸如微软?Lync ?和其它遗留软件之类的当前的视频传输仅支持单个相机。因此,这样的传输/软件无法向用户提供这种不同的视图。
【发明内容】
[0003]提供该
【发明内容】
而以简化形式对随后将在下文的【具体实施方式】中进一步进行描述的代表性概念的选择进行介绍。该
【发明内容】
并非意在标识所请求保护主题的关键特征或必要特征,其也并非意在被用来以任何方式对所请求保护主题的范围进行限制。
[0004]简要来说,这里所描述的主题的各个方面针对被配置为将对应于多个视图的多个视频帧组合为来自单个源的视频帧以便进行呈现的虚拟相机。该虚拟相机包括组合器组件,其具有将对应于多个视图的帧数据处理为组合帧数据以便将该组合帧数据以所期望的帧率提供至视频管道的呈现循环。
[0005]在一个方面,对应于来自一个或多个视频源的多个视图的帧数据的集合在服务器侧计算环境被接收。从该帧数据集合组合单个视频帧,包括将对应于该帧的帧数据存储在GPU存储器中,并且对GPU存储器中的帧进行处理以在CPU存储器中获得呈现帧。该呈现帧作为视频流的一部分被输出至远程客户端侧应用。
[0006]—个或多个方面针对从至少一个物理相机和/或合成相机获取视频帧。对该视频帧进行处理以将该视频帧合成或组合为结果帧。该结果帧作为视频流的一部分而从一个视频源被发送至远程接收方。可以应用一种或多种变换以对对应于至少一个视频帧的帧数据进行变换。
[0007]其它优势根据以下结合附图进行的详细描述可以变得显而易见。
【附图说明】
[0008]本发明在附图中以示例而非限制的方式进行了图示,其中同样的附图标记指明类似的元素,其中:
图1是表示根据一种示例实施方式的被配置为提供虚拟相机的示例组件的框图。
[0009]图2是表示根据一种示例实施方式的虚拟相机可以通过其向帧数据应用变换以将从多个视图所组成的一系列帧作为来自单个相机源的一系列帧提供至远程客户端的示例组件的框图。
[0010]图3是表示根据一种示例实施方式的虚拟相机通过其提供由多个视图和/或源所组成的一系列呈现帧的一种配置的示例组件的框图。
[0011]图4是表示根据一种示例实施方式的用于将来自一个或多个视频源的多个视图组合为呈现帧的组件之间的示例交互的数据流程图。
[0012]图5是表示根据一种示例实施方式的用于将视图组成为虚拟相机帧的示例步骤的流程图。
[0013]图6是根据一种示例实施方式的来自合成源的数据如何可以与来自物理相机的数据进行组合以提供可以被发送至远程应用的增强现实视频的表示。
[0014]图7是能够在其中实施这里所描述的各个实施例的示例的非限制性联网环境的框图。
[0015]图8是表示能够在其中实施这里所描述的各个实施例的一个或多个方面的示例的非限制性计算系统或操作环境的框图。
【具体实施方式】
[0016]这里所描述的技术的各个方面总体上针对一种虚拟视频相机(例如,基于软件的视频相机),其连接至一个或多个视频源并且将一个或多个源组合和/或变换为虚拟相机视图。该软件视频相机因此可以针对应用程序表现为任何其它的单个相机,此外可以就像所使用的单个物理相机一样使得相同数量的数据通过网络进行传送,这节约了带宽。因此,例如,一台物理相机所捕捉的全景视图可以与另一台物理相机所捕捉的特写视图组合为单个视频帧,其中顺序的组合帧被传送至远程位置以便进行输出。可替换地,相同相机可以以高分辨率捕捉帧,选择高分辨率帧的一部分(例如,特写)作为一个源,对该帧进行下米样(例如,形成较低分辨率的全景视图)作为另一个源,并且将该高分辨率部分和下采样部分组合为包括该特写和全景视图的单个视频帧。
[0017]在一个方面,该软件视频相机从一个或多个物理或合成相机取得视频帧,对该视频帧进行处理,并且合成新的图像和/或将该视频帧组合在一起(例如,在计算机视频卡的硬件中)。该软件视频相机任选地可以应用图像变换;这样的图像变换例如可以使用硬件加速而实时应用。该软件视频相机对所形成的帧重新封装并且将该帧进一步下发至视频管道。
[0018]主机应用以及接收客户端应用因此可以就像该虚拟相机是单个真正的相机那样进行操作。这允许虚拟相机与被预期与单个相机进行对接的遗留软件相兼容。主机应用可以向虚拟相机指示使用哪个或哪些源,如何组合帧和/或要应用什么样的变换。
[0019]应当理解的是,这里的任何示例都是非限制性的。例如,一种示例实施方式是基于微软公司的DirectShow ?、DirectX?以及Media Foundat1n(媒体构建)技术。然而,这仅是一个示例,并且其它视频捕捉和处理环境可以类似地从这里所描述的技术获益。另外,任何所传送的视频都可以从该技术获益,而不仅是为了在远程呈现应用中使用而传送的视频。因此,本发明并不局限于这里所描述的任何特定实施例、方面、概念、结构、功能或示例。相反,这里所描述的任何实施例、方面、概念、结构、功能或示例都是非限制性的,并且本发明可以以总体上在计算和视频技术中提供益处和优势的各种方式来使用。
[0020]图1是表示示出这里所描述技术的一些总体概念和方面的示例组件的简化框图。总体上,主机应用102针对给定情形决定要对哪些相机和/或其它帧源1041-104n(也被称作合成相机)进行组合以及需要应用哪些变换106(在存在的情况下)。这例如可以基于针对服务器侧的主机应用的客户端侧指令。主机应用102针对虚拟相机108选择一个或多个物理和/或合成相机以对帧进行组合。
[0021 ]注意到,例如,虚拟相机108可以像任意其它相机一样将其自身发布为可用,并且因此能够被使用相机的任意各个应用所发现。例如,在DirectShow?配置中,虚拟相机可以被注册为相机源过滤器。当应用尝试使用DirectShow?相机时,该应用可以列举出可用的视频源过滤器。可替换地,这样的DirectShow ?过滤器功能可以处于应用之内。当虚拟相机DirectShow?过滤器被添加至图形之中时,例如经由运行对象表格的COM而发布API。主机应用正是使用该API来发现虚拟相机并对其进行控制。
[0022]作为示例,如图1中的虚线所表示的,主机应用102可以经由适当接口指示虚拟相机108连接至一个或多个具体的物理视频相机和/或一个或多个其它软件帧源104-104(例如,一个或多个合成相机、预先录制视频的源等)。其它软件帧源10^-1044^示例包括如这里所描述的可以被组合为最终视频输出的动画、图形、预先录制的视频等的源。
[0023]一旦被配置,虚拟相机108就从一个或多个物理或合成相机中的每一个收集帧,经由如以下所描述的视图对象112将该一个或多个帧组合为单个视频帧,并且将该帧向诸如多媒体架构(Multimedia Framework)组件(例如,在应用中托管的DirectShow ?过滤器图形)的视频管道114进行呈现。为了实现该目的,虚拟相机108如该应用所指示的在内部针对每个物理相机或其它相机设置呈现图形。在一种实施方式中,该物理/其它相机呈现堆栈可以包括媒体构建呈现拓扑,其输出级指向DirectX ?结构之中。
[0024]在一种实施方式中,每个帧可以使用相机的最高分辨率和帧率进行呈现。为了针对相机选择格式,列举出所支持的分辨率和帧率。该帧率被选择为与输出帧率(例如,30fps)紧密匹配,其具有支持该所选择帧率的最高分辨率。
[0025]因此,经由针对虚拟相机108的指令,主机应用102在虚拟相机108上创建了包括对象112的“视图”,该对象112例如通过包括呈现参数、网格、动画属性而表示针对一个或多个视频源的实际变换、布置和/或动画。主机应用102就像虚拟相机108是真实相机一样而将该虚拟相机108连接至视频管道114之中。
[0026]总体上,合成帧源是能够呈现帧的一个应用软件。一个应用能够创建多个帧源。该合成帧源被用于将图形或其它几何形状覆盖到相机画面之中,后者随后被用来为虚拟相机构建帧。
[0027]也可以使用变换来改变画面。作为变换的一个示例,考虑具有所附连的鱼眼(fisheye)镜头或其它图像卷绕(warp ing)镜头的物理相机。软件(虚拟)相机108被主机应用102的服务器侧实例(例如,诸如Skype ?或Lync ?之类的服务器侧应用)所选择。该主机应用102可以请求虚拟相机108使用硬件视频加速应用去鱼眼(de-fishing)/去卷绕变换,从而执行实际的去鱼眼/去卷绕操作。
[0028]作为另一个示例,考虑附连至系统的超高清相机,其中该相机具有远高于通过常规(例如,以太网)网络连接实际所能够传送的分辨率。虚拟相机可以被安装并被指示以创建超高清图像的多个视图,诸如分辨率按比例减小的单个全幅图像,以及