虚拟现实视差校正的制作方法

文档序号:17483078发布日期:2019-04-20 06:34阅读:265来源:国知局
虚拟现实视差校正的制作方法

本公开涉及计算机技术领域,更具体地,涉及在数字媒体环境中用以校正视差以解决关于虚拟现实(vr)数字内容的视角变化的系统和方法。



背景技术:

虚拟现实(vr)数字内容(诸如vr数字视频或vr数字图像)采用相机系统(例如,数字相机阵列)来捕获物理环境的图像场景。因此,当查看该内容时,相机系统在物理环境中的位置作为与vr数字内容相关的原点。例如,为了渲染vr数字内容,左眼和右眼全景数字图像由vr设备显示为立体图像以支持深度的出现。因此,通过与vr设备的交互(例如通过用户头部的旋转运动),用户可以在原点处相对于该显示器以不同的取向“环顾”。

然而,该技术引入了挑战,因为相机系统被局限于从原点捕获物理环境,并且因此该内容的显示被局限于传统vr设备的原点。虽然用户的旋转头部移动可以用于正确地查看图像场景的不同部分,但是例如,用户头部的重新定位(例如,平移)(例如,左右、上下)不被支持或者导致无法通过传统vr设备正确地更新vr数字内容的输出。这是因为传统的vr设备没有正确地更新依赖于深度的视差,其中图像场景中原点(例如,相机)附近的对象比图像场景中更远离原点的对象表现出更大的移动量。视差效应是一种强烈的深度线索,人类可以使用这个强烈的深度线索来正确地解释真实场景。因此,传统的vr设备无法正确地再现视差深度线索会损害图像场景的真实感,并且甚至可能导致用户不适,因为用户头部在不同位置之间的移动并没有跟随有用户正在查看的内容。

用于解决该挑战的传统的技术和系统涉及显著地更加费力地捕获图像场景和/或显著地更昂贵的设备。在一个传统示例中,相机系统用于从不同位置捕获静态场景的多个图像。因此,该传统技术限于静态场景,并且因此不适用于其他类型的vr数字内容,诸如vr数字视频。在另一传统示例中,使用光场相机来在多个不同位置捕获图像场景的入射光。然而,与用于从单个原点捕获图像场景的相机系统相比,光场相机的成本是要比其贵若干数量级并且具有有限的可用性。



技术实现要素:

描述了虚拟显示视差校正技术和系统,其被配置为对从单个原点捕获的vr数字内容的视差(例如,对于视频或静态数字图像的每个帧)进行校正以支持相对于该单个原点的位置变化(例如,平移)。以这种方式,这些技术适用于可以使用普通设备捕获的各种vr数字内容。此外,这些技术改善了用户与vr数字内容的交互以使其看起来很自然,并且模仿与由vr数字内容捕获的图像场景的真实世界交互,并且可以实时地这样执行,这在使用传统技术的情况下是不可能的。

在一个示例中,采用视差校正模块来对在相对于vr数字内容的输出的视点变化(例如,用户的头部左右、上下等的平移重新定位)中引起的伪像进行校正。视差校正模块可以采用各种技术来校正这些伪像并且解决视差。如以下部分中进一步描述的,这些技术的示例包括深度过滤、边界标识、拖尾检测、网格切割、置信度估计、模糊和误差扩散。

本“发明内容”以简化的形式介绍了一些概念,这些概念将在下面的“具体实施方式”中进一步描述。因此,本“发明内容”不旨在标识所要求保护的主题的必要特征,也不旨在用于帮助确定所要求保护的主题的范围。

附图说明

参考附图描述详细描述。图中表示的实体可以指示一个或多个实体,并且因此在讨论中可以可互换地对单个或多个形式的实体的引用。

图1是可操作以于采用本文中描述的虚拟现实视差校正技术的示例实现中的环境的图示;

图2描述了从用于查看vr数字内容的原点到不同视点的位置变化(例如,平移运动)的示例;

图3描绘了更详细地示出图1的内容管理器模块和视差校正模块的操作以及内容渲染模块的示例实现中的系统;

图4描绘了示出相对于vr数字内容的输出的取向变化的示例实现;

图5描绘了示出相对于vr数字内容的输出的位置变化的示例实现;

图6描绘了更详细地示出视差校正模块的深度过滤模块的操作的示例实现;

图7描绘了更详细地示出视差校正模块的边界标识模块的操作的示例实现;

图8描绘了更详细地示出视差校正模块的拖尾检测模块的操作的示例实现;

图9和10描绘了更详细地示出视差校正模块的置信度估计模块的操作的示例实现;

图11描绘了更详细地示出视差校正模块的网格切割模块的操作的示例实现;

图12描绘了更详细地示出图3的内容渲染模块的模糊模块的操作的示例实现;

图13描绘了更详细地示出内容渲染模块的误差扩散模块的操作的示例实现;

图14是描绘其中对虚拟现实数字内容进行视差校正以支持视角变化的示例实现中的过程的流程图;以及

图15示出了包括示例设备的各种组件的示例系统,这个示例设备可以被实施为如参考图1至14所描述的和/或利用以实施本文中描述的技术的实施例的任何类型的计算设备。

具体实施方式

概述

描述了虚拟现实视差校正技术和系统,其被配置为对具有单个原点的vr数字内容的视差(例如,对于视频或静态数字图像的每个帧)进行校正以支持相对于该单个原点的位置变化(例如,平移)。这可以包括从单个原点(例如,相机系统)捕获计算机图形的离线渲染等。这样,这些技术适用于可以使用常见设备从单个原点捕获的各种vr数字内容,并且可以实时地这样执行。此外,这些技术改善了用户与vr数字内容的交互以使其看起来很自然,并且模仿与由vr数字内容捕获的图像场景的真实世界交互,这在使用传统技术的情况下是不可能的。

在一个示例中,vr数字内容由vr设备接收,例如,用于查看vr数字视频的vr护目镜。vr数字内容与深度图相关联,深度图可以由相机系统与vr数字内容一起捕获,根据被包括作为vr数字内容的一部分的立体数字图像(例如,基于视差)来计算,等等。这个示例中的vr数字内容是从单个原点捕获的,例如,vr数字视频的各个帧的单个原点。为了渲染vr数字内容,vr设备生成原始三角网格,其包括像素和这些像素的三维位置。

这个示例中的vr设备然后使用一个或多个传感器来检测用户的位置变化,例如,使用加速度计、雷达设备等来检测在左右、上下等平移时的位置变化。因此,用户的这种位置变化不同于用户取向的变化(例如,用于“环顾”vr数字内容的显示),尽管在这个示例中,也可以由vr设备来检测和解决取向的变化。

作为响应,vr设备的vr内容管理器模块生成视角三角网格以解决相对于如上所述用于在原点处渲染vr数字内容的原始三角网格的这种位置变化。例如,视角三角网格定义了基于这种位置变化而查看到的原始三角网格的三维拓扑。然而,这种视角三角网格可能通过视角三角网格中的视差的不正确模拟而引入由于这种变化的伪像。

因此,采用视差校正模块来校正这些伪像,使得能够生成经校正视差三角网格以将vr数字内容渲染为在用户查看时看起来很自然。视差校正模块可以采用各种技术来校正视差,其示例在以下部分中描述,并且包括深度过滤(图6)、边界标识(图7)、拖尾检测(图8)、置信度估计(图9和10)、网格切割(图11)、模糊(图12)和误差扩散(图13)。这些技术可以由vr设备的视差校正模块实时地单独使用或组合使用,并且因此在计算上是高效的并且改善了vr设备的操作。此外,这些技术适用于在单个原点捕获的vr数字内容,并且因此可以被各种不同的现有vr数字内容使用,这在使用传统vr设备的情况下是不可能的。

在以下讨论中,首先描述可以采用本文中描述的技术的示例环境。然后描述采用该环境的视差校正技术的示例。还描述了可以在示例环境以及其他环境中执行的示例过程。因此,示例过程的执行不限于示例环境,并且示例环境不限于示例过程的执行。

示例环境

图1是可操作以采用本文中描述的虚拟现实视差校正技术的示例实现中的数字媒体环境100的图示。图示的环境100包括vr设备102和用户104,用户104被示出为通过vr设备102与vr数字内容106的渲染输出108(例如,客厅)交互。如从相机系统112接收的vr数字内容106还被示出为存储在存储设备110中,例如,如参考图15进一步描述的计算机可读存储介质。

vr设备102可以以各种方式配置,诸如如图所示由用户104的头部佩戴的眼镜或护目镜、移动电话或平板电脑、可穿戴设备、独立设备(例如,标志)等。这个示例中的vr设备102包括显示设备114、传感器116、vr内容管理器模块118和视差校正模块120。

相机系统112被配置为捕获数字图像122以作为vr数字内容106的一部分。这可以被执行作为单个立体红色、绿色、蓝色(rgb)视频并且与深度图124相关联,深度图124可以或者可以不被单独捕获以作为vr数字内容106的一部分。例如,vr设备102可以包括传感器116(诸如结构化网格阵列、飞行时间相机等)以检测被包括在数字图像122中的像素126的3d坐标128。在另一实例中,像素126的深度图124和相关联的3d坐标128是从数字图像122本身确定,例如,基于立体数字图像122中的相应像素126所呈现的视差。还预期了各种其他示例,包括使用作为机器学习的一部分的神经网络,这些神经网络用于推断数字图像122中的各个像素126的深度并且因此推断其3d坐标。

vr数字内容106还被配置为由vr设备102渲染。这个渲染可以通过使用vr设备102的各种输出设备来完成。其示例被示出为显示设备114,显示设备114被配置为使用立体数字图像122来支持vr数字内容106到用户104(例如,到用户104的左眼和右眼)的视觉输出。可以作为vr设备102的一部分被包括的输出设备的其他示例包括音频输出(例如,经由扬声器)、触觉输出(例如,经由触觉设备)等。以这种方式,vr数字内容106的输出可以被配置为支持用户“感觉到好像他们就在那里”的沉浸式体验。

在这个示例中,vr数字内容106被配置为使得能够从单个视点(即,位置)捕获每个数字图像122(例如,单个图像或一系列帧的一部分),这个单个视点在下面被称为数字图像122的原点。例如,数字图像122可以被配置为全景图像,该全景图像通过用户104的头部的旋转运动(例如,以在所示示例中环顾客厅的不同部分)以支持图像的不同部分的视图。

如前所述,vr数字内容106的这种限制给传统vr设备带来了支持位置变化(即从原点的左右、上下等平移运动)这一挑战。例如,vr设备102可以使用传感器116相对于vr数字内容的渲染输出108从一个位置到另一位置检测用户104的位置变化,例如,使用加速度计、雷达设备等。因此,用户104的位置的这种变化不同于其中用户104保持在原点时的用户104相对于渲染输出108的取向变化。

作为响应,vr内容管理器模块118模拟视差以解决这种位置变化。然而,这可能导致用户104容易注意到的伪像,例如沿着墙壁的锯齿状边缘、在现实生活中未连接的连接对象等。因此,vr设备102采用视差校正模块120,使得vr数字内容106在被渲染时解决了这种位置变化并且看起来很真实和自然。

例如,图2描绘了从用于查看vr数字内容106的原点202到不同视点204的位置变化(例如,平移运动)的示例200。因此,如这个示例中所示,通过从一个位置到另一位置(例如,与原点不同)的平移移动而进行的用户104的视角关于vr数字内容106的输出而改变。这不同于以下取向变化,在该取向变化中vr数字内容106的不同部分通过旋转但不是平移运动来被查看(例如,在房间中“环顾”)。因此,这些技术适用于在单个原始捕获的vr数字内容106,并且因此可以被广泛的现有vr数字内容106使用,这在使用需要专用设备的传统vr设备的情况下是不可能的。这些专用设备还需要复杂的存储机制,这些机制消耗更多的计算和存储资源,与作为本文中描述的技术可以采用的等角矩形投影(即,球形全景)的紧凑3d视频表示相比更不易理解。此外,以下技术可以由vr设备102实时地执行,并且因此在启动输出之前不需要预处理vr数字内容106。

通常,可以在本部分中描述的示例过程的上下文中采用关于以上和以下示例描述的功能、特征和概念。此外,关于本文档中的不同附图和示例描述的功能、特征和概念可以彼此互换,并且不限于在特定附图或过程的上下文中的实现。此外,与本文中的不同的代表性过程和相应附图相关联的框可以一起应用和/或以不同方式进行组合。因此,关于本文中的不同示例环境、设备、组件、附图和过程描述的各个功能、特征和概念可以以任何合适的组合来使用,并且不限于本说明书中列举的示例所表示的特定组合。

图3描绘了更详细地示出vr内容管理器模块118和视差校正模块120的操作的示例实现中的系统300。首先,vr数字内容106由vr内容管理器模块118接收。例如,vr数字内容106可以由图1的相机系统112捕获。

vr数字内容106包括数字图像122和深度图124。深度图124可以以各种方式被生成。在第一示例中,深度图124使用深度传感器(诸如结构化光栅设备、飞行时间相机、雷达技术(例如,通过wi-fi信号的广播)等)来被生成。在另一示例中,深度图124基于数字图像122本身来被生成,以便使用标准计算机视觉技术来匹配图像之间的共同点以计算它们的视差,并且因此计算它们的深度。无论深度图是由硬件捕获的还是使用计算机视觉技术计算的,深度图124可以将像素的视差编码为强度。

在这个示例中,在原点处开始vr设备102对vr数字内容106的渲染,使得vr数字内容106按由相应的相机系统最初捕获来被渲染。为此,vr数字内容106由三角网格生成模块302处理以生成原始三角网格304。原始三角网格304被生成以将相应的3d坐标处的像素126彼此连接,例如,以处理rgbd数字视频,其中每个像素126具有“x”和“y”坐标以及深度“z”值、以及顶点rgb颜色值。还预期其他技术来描述三维坐标和颜色值。然后,由内容渲染模块306呈现原始三角网格304以生成渲染的vr数字内容308,从而用于由显示设备114输出作为用于由用户104查看的地形,例如,作为支持深度的形貌的立体数字图像122。

vr内容管理器模块118还包括视角检测模块310,视角检测模块310包括位置确定模块312以及取向确定模块314。在这种情况下,位置确定模块312被配置为检测何时经历由于相对于vr数字内容106的输出的远离原点的移动而导致的用户104的视角变化。例如,视角检测模块310可以从传感器116接收数据(例如,经由api)或信号,并且由此确定位置的变化(例如,作为平移运动),这与取向的变化形成对比。

如图4的示例实现400中所示,例如,传感器116被配置为生成取向数据402,取向确定模块314可使用取向数据402来跟踪用户104的头部的可能取向(例如,在三维空间中)。在这个示出的示例中,执行该操作以支持三个自由度(3dof)作为围绕横向轴线404(即,俯仰)、垂直轴线406(即,偏航)和纵向轴线408(即,滚动)的旋转。因此,取向数据402可用于描述用户104相对于vr数字内容106的捕获和输出在原点处的旋转头部移动。

取向数据402可以由各种类型的传感器116单独地或组合地生成。例如,传感器116可以被配置为陀螺仪、加速度计、磁力计、惯性传感器等,以确定与vr设备102相关联的移动。这可以包括vr设备102本身作为整体的移动(例如,头部移动)和/或通信地耦合到vr设备102的控制器(例如通过使用一个或多个手持控制器)的移动。在耳机的另一示例中,发光二极管(led)围绕耳机的外围设置,以通过使用检测从这些二极管发射的光的外部相机来支持360度的头部跟踪。

其他示例包括使用传感器116作为相机(例如,红外相机)来检测vr设备102(例如,图1的所示表格的角落)设置在其中的物理环境中的界标,并且通过捕获连续数字图像122来检测与这些界标相关的运动。还预期了各种其他示例,包括眼睛跟踪,其中相机(例如,作为红外传感器)指向用户104的眼睛以相对于显示设备114的部分来确定“用户正在看哪里”。

无论取向数据402的格式如何,取向确定模块314被配置为将取向数据402抽象为描述以下取向的形式,该取向要由vr内容渲染模块306使用以渲染vr数字内容106的各个部分。例如,取向数据402可以指示取向变化,其可用于在原点处在vr数字内容106的帧的各个部分之间导航。以这种方式,取向数据402可用于控制vr数字内容106的哪些部分(例如,数字图像122的部分)由显示设备114相对于vr数字内容106在原点处渲染和不渲染。

在图5的示例实现500中,传感器116被配置为输出位置数据502,其由位置确定模块312可使用以确定位置的变化(例如,通过平移运动)使得能够相对于vr数字内容106的渲染输出108来实现不同视角。例如,在所示的示例中,用户104从相对于如何捕获vr数字内容106的原点504通过平移运动移动到不是原点506的不同位置506。这种位置变化可以由传感器116以各种不同的方式来检测,诸如通过使用陀螺仪、加速度计、磁力计、惯性传感器、手持式控制器、使用相机的界标检测等来确定与vr设备102相关联的运动。因此,这种关于vr数字内容106的位置变化和相应的视角变化不同于用户保持在原点(vr数字内容106在该点处被捕获)处的图4的取向变化。

再次返回图3,视角数据316由视角检测模块310生成,视角数据316描述由远离原点(例如,查看者相对于vr数字内容106的三维位置)的移动引起的视角变化。取向数据402也可以被生成以描述取向变化。然后,视角数据316作为输入被视角改变模块318接收,并且用于使用原始三角网格304生成视角三角网格320。

例如,视角改变模块318可以生成视角三角网格320,以解决查看者的视角如何相对于原始三角网格304而改变。这是基于原点到由视角数据316描述的位置的三维坐标变化以及该位置如何对应于像素126的3d坐标128来被执行的。

然而,如前所述,这可能导致在被渲染时对于用户可见的伪像作为视角三角网格320的一部分的引入。这些伪像已经导致传统技术和系统放弃这样的处理,而是依赖于昂贵的相机或从不同视角繁琐地捕获图像(这不支持视频)。因此,在这个示例中,视差校正模块120被配置为生成已校正视差三角网格322,以移除或减少视角三角网格320中伪像的可见性。

视差校正模块120可以采用各种功能来校正视差。这个功能的示例由相应的模块表示,并且在以下描述中更详细地讨论,包括深度过滤模块324(图6)、边界标识模块326(图7)、拖尾检测模块328(图8)、置信度估计模块330(图9和10)和网格切割模块332(图11)。这还包括由内容渲染模块306作为渲染vr数字内容106的一部分而采用的校正技术,其示例包括模糊模块334(图12)和误差扩散模块336(图13)。由相应模块表示的这个功能可以单独地或组合地实施,以校正视角三角网格320中的视差,从而减少在查看网格的形貌(topography)时由位置变化引起的伪像的可见性。

图6描绘了更详细地示出视差校正模块120的深度过滤模块324的操作的示例实现600。实际上,视角三角网格320的深度误差可以很小并且可以涉及三角形的边缘的彼此渗色(bleeding)。因此,在这种情况下,深度过滤模块324采用双边过滤器602和边缘感知平滑模块604来生成深度过滤数据606,从而对区域进行平滑并且强调在视角三角网格320中涉及深度的不连续性。

例如,双边过滤器602可以被深度过滤模块324用作用于视角三角网格320的形貌的非线性和降噪平滑过滤器。为此,网格的每个像素的强度被替换为附近像素的强度值的加权平均值。例如,权重可以基于高斯分布,并且还作为六维函数的一部分而解决了辐射度差异,诸如范围差异、颜色强度、深度距离等。这可以用于对相同对象或类似深度上的像素608进行平滑,但是不用于对不同对象或显著不同深度的像素610、612进行平滑。以这种方式,深度过滤模块324可以减少作为视角三角网格320的生成的一部分而引起的伪像。

图7描绘了更详细地示出视差校正模块120的边界标识模块326的操作的示例实现700。在这个示例中,边界标识模块326被配置为通过使用实现神经网络706的机器学习模块704来生成边界数据702。神经网络706包括模型708,其使用关于训练数字图像的机器学习来标识数字图像中的深度不连续性(例如,由视角三角网格320形成的)而被训练。可以采用各种神经网络706,诸如深度卷积神经网络、卷积神经网络、监督神经网络等。

然后,视差校正模块120可以以各种方式使用标识这些边界的边界数据702。在一个示例中,边界数据702用于分割深度图并且通过添加更强的边缘约束来改善如上所述的平滑结果,以实现边缘的更好锐化并且减少渗色。在另一示例中,边界数据702由网格切割模块332用来切割网格,这将结合图11更详细地描述。还预期了其他示例,包括使用经由用户界面可用的工具来手动地调节边界数据702。

图8描绘了更详细地示出视差校正模块120的拖尾检测模块328的操作的示例实现800。作为生成视角三角网格320的一部分,网格拓扑被创建,其中每个像素连接到每个相邻像素,即使这些像素位于深度不连续的相对侧(例如,在背景前面的人的轮廓),它产生了错误的“涂抹”三角形。因此,拖尾检测模块328被配置为标识视角三角网格320中的模糊三角形802,其然后可以例如通过过滤、如关于图11描述地切割网格等来被校正。

拖尾检测模块328可以以各种方式标识模糊三角形802。在一个示例中,法向矢量分析模块804用于将模糊三角形标识为具有与视图方向接近垂直(例如,在阈值量内)的表面法线。在另一示例中,采用三角形边缘长度分析模块806来将模糊三角形标识为具有至少一个超过阈值长度的边缘。在另一示例中,三角形面积分析模块808用于将模糊三角形802标识为具有超过阈值量的表面面积。因此,模糊三角形802在视角三角网格320中限定深度不连续810,其然后可以通过过滤和/或网格切割来被校正。

图9和10描绘了更详细地示出视差校正模块120的置信度估计模块330的操作的示例实现900、1000。伴随作为vr数字内容106的一部分的数字图像122的深度图124被呈现为每个像素126的单个深度值(例如,3d坐标128),而没有任何附加信息。然而,这些深度值是估计值,一些估计值比其他估计值具有更高的准确度。因此,在这个示例中,置信度估计模块330被配置为生成置信度值902,其指示像素深度估计的可能准确度,即,估计是正确的置信度的量。

在这个示例中,置信度值902由视差确定模块904基于立体数字图像906中的像素对之间的匹配有多么不同来被生成。即,对于具有相关联的深度“d”的用户104的左眼的立体图像的像素908“p”,找到用户104的右眼的立体图像的对应像素910。在“p”周围检查邻域“n”以计算在像素“q”周围具有对应邻域“m”的对应平方差和(ssd)。

如图10所示,邻域1002、1004通过改变左或右像素数目来被移位,例如“m1”、“m-1”、“m2”、“m-2”等。视差1006与错误1008的这些置信度值902的示例曲线被示出。良好的匹配并且因此高的置信度在“m”1010处具有低的ssd,并且在周围像素1012处具有高的ssd,例如,“m1”、“m-1”、“m2”、“m-2”等。另一方面,低匹配在每个位置处具有更接近的ssd,并且因此置信度较低。“m”、“m-1”、“m2”、“m-2”等处的值之间的差异被量化为作为置信度值902的像素“p”的深度“d”的置信度,而不管最初如何计算深度。然后,如下面进一步描述的可以使用这些置信度值902来支持各种功能,包括模糊和网格切割。

图11描绘了更详细地示出视差校正模块120的网格切割模块336的操作的示例实现1100。这个示例实现1100使用第一阶段1102、第二阶段1104和第三阶段1106来被示出。由边界标识模块326标识作为边界数据702的一部分或在这个示例中标识为深度不连续810的边界边缘被切割。这是通过将出现在“跨越”边界边缘和深度不连续的单个网格三角形替换为两个网格三角形来完成,一个网格三角形用于前景并且一个网格三角形用于背景,其中顶点位于相同的“x/y”位置和不同的“z”深度处。这可以以各种方式来被执行,诸如通过由图形处理单元实现的像素着色器以支持实时输出。这用于减少了由跨越边界边缘出现的模糊三角形引起的视觉伪像。

为此,网格切割模块332首先标识像素1108、1110出现在深度不连续的不同侧(例如,涉及不同的对象)并且通过跨越该不连续的网格三角形的边缘1112来连接。因此,当用户从不是原点的新视点1114查看时,如第一阶段1102所示,这个边缘1112表现为视觉伪像。

在第二阶段1104,网格切割模块332切割网格的边缘1112。然后,添加具有与像素1110相同的x/y坐标但是具有与像素1108相匹配的深度的像素1116,并且像素1116经由边缘1118被连接。同样地,添加具有与像素1108相同的x/y坐标但是具有与像素1110相匹配的深度的像素1120,并且像素1120经由边缘1122被连接。以这种方式,通过切割网格并且从而当从视点1114查看时移除视觉伪像,由引起视觉伪像的单个三角形形成两个三角形。

图12描绘了更详细地示出内容渲染模块306的模糊模块334的操作的示例实现1200。在生成视角三角网格320以支持与vr数字内容106的输出相关的新视点时所引起的视觉伪像在显著或可感知时对用户104的体验具有更大的影响。例如,某些类型的视觉伪像比其他类型的视觉伪像更显著,例如,高的对比度边缘和时间抖动。另一方面,模糊性是不太突出的视觉伪像,即,对于用户104而言不太明显。

因此,在这个示例中,模糊模块334用于标识可能包含伪像的区域1202和不包含伪像的区域1204。这可以以各种方式来执行,诸如基于模糊三角形802或如前所述计算的置信度值902。例如,模糊模块334可以将过滤器应用于包含伪像的区域1202,但是不应用于不包含伪像的区域1204。这可以通过使用每像素高斯模糊来完成,其中半径是像素的置信度值902的倒数的函数。以这种方式,模糊模块334减少了伪像的可见性,并且可以实时地这样做。

图13描绘了更详细地示出内容渲染模块306的误差扩散模块336的操作的示例实现1300。在先前的示例中,置信度值902被生成以估计匹配的质量。在这个示例中,误差扩散模块336用于生成像素深度分布1302以估计可接受的匹配质量的范围,其中对于每个视差邻域,ssd低于阈值。对于良好匹配,这个范围是单一差异。然而,在缺乏纹理的区域(例如,对于壁1304),这个范围可能很大。在这种情况下,深度是模糊的,并且因此通过使用像素深度分布1302来被表示为那些像素的值范围。

因此,如果置信度值高,则视角三角网格320中的像素由内容渲染模块306在精确深度处渲染,或者基于其可以占据的如由像素深度分布1302指定的深度范围沿着线模糊。这产生了自然拖尾,自然拖尾示出了立体声结果中的正确模糊度,并且因此用于校正作为渲染的vr数字内容308的一部分的视差。

示例过程

以下讨论描述了可以利用先前描述的系统和设备来实现的技术。该过程的各方面可以用硬件、固件、软件或其组合来实现。该过程被示出为一组框,这些框指定由一个或多个设备执行的操作并且不必限于被示出用于由各个框执行操作的顺序。在以下讨论的部分中,将参考图1至11。

图14描绘了其中对虚拟现实数字内容进行视差校正以支持视角变化的示例实现中的过程1400。由三角网格生成模块302基于像素126和相对于vr数字内容106的原始视角的相关联三维坐标128来生成原始三角网格304(框1402)。

生成描述相对于vr数字内容的从原始视角到已改变视角的变化的视角数据316(框1404)。例如,视角检测模块310可以经由应用程序编程接口从传感器116获取数据,传感器116可用于检测远离原点的位置变化,并且因此检测相对于vr数字内容106的视角变化。

基于原始三角网格304和视角数据316来生成视角三角网格320(框1406)以解决这个位置和视角变化。然后由视差校正模块120生成对视角三角网格中的至少一个伪像进行校正的已校正视差三角网格322(框1408)。这个功能的示例由相应的模块表示,包括深度过滤模块324(图6)、边界标识模块326(图7)、拖尾检测模块328(图8)、置信度估计模块330(图9和10)和网格切割模块332(图11)。由内容渲染模块306基于已校正视差三角网格322来渲染vr数字内容308(框1410)用于由显示设备114显示,例如,作为用于由用户104的各个眼睛查看的立体数字图像。这可以包括采用模糊模块334(图12)和误差扩散模块336(图13)的渲染。

示例系统和设备

图15示出了包括示例计算设备1502的总体上在1500处的示例系统,示例计算设备1502表示可以实现本文中描述的各种技术的一个或多个计算系统和/或设备。这通过包括视差校正模块120来被说明。计算设备1502例如可以是服务提供商的服务器、与客户端(例如,客户端设备)相关联的设备、片上系统和/或任何其他合适的计算设备或计算系统。

如图所示的示例计算设备1502包括处理系统1504、一个或多个计算机可读介质1506、以及彼此通信地耦合的一个或多个i/o接口1508。虽然未被示出,但是计算设备1502还可以包括将各种组件彼此耦合的系统总线或者其他数据和命令传输系统。系统总线可以包括不同总线结构中的任何一个或组合,诸如存储器总线或存储器控制器、外围总线、通用串行总线、和/或利用各种总线架构中的任何总线架构的处理器或本地总线。还预期各种其他示例,诸如控制和数据线。

处理系统1504表示使用硬件来执行一个或多个操作的功能。因此,处理系统1504被示出为包括可以被配置为处理器、功能块等的硬件元件1510。这可以包括以硬件作为专用集成电路的实现或者使用一个或多个半导体而形成的其他逻辑器件。硬件元件1510不受形成它们的材料或者其中采用的处理机构的限制。例如,处理器可以包括半导体和/或晶体管(例如,电子集成电路(ic))。在这样的上下文中,处理器可执行指令可以是电子可执行指令。

计算机可读存储介质1506被示出为包括存储器/存储装置1512。存储器/存储装置1512表示与一个或多个计算机可读介质相关联的存储器/存储容量。存储器/存储组件1512可以包括易失性介质(诸如随机存取存储器(ram))和/或非易失性介质(诸如只读存储器(rom)、闪存、光盘、磁盘等)。存储器/存储组件1512可以包括固定介质(例如,ram、rom、固定硬盘驱动器等)以及可移除介质(例如,闪存、可移除硬盘驱动器、光盘等)。如下面进一步描述的,计算机可读介质1506可以以各种其他方式来配置。

输入/输出接口1508表示允许用户向计算设备1502输入命令和信息并且还允许使用各种输入/输出设备向用户和/或其他组件或设备呈现信息的功能。输入设备的示例包括键盘、光标控制设备(例如,鼠标)、麦克风、扫描仪、触摸功能(例如,被配置为检测物理触摸的电容或其他传感器)、相机(例如,其可以采用可见或不可见波长(诸如红外频率)以将运动标识为不涉及触摸的手势)等。输出设备的示例包括显示设备(例如,显示器或投影仪)、扬声器、打印机、网卡、触觉响应设备等。因此,计算设备1502可以以下面进一步描述的各种方式被配置为支持用户交互。

各种技术在本文中可以在软件、硬件元件或程序模块的一般上下文中描述。通常,这样的模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、元素、组件、数据结构等。本文中使用的术语“模块”、“功能”和“组件”通常表示软件、固件、硬件或其组合。本文中描述的技术的特征是与平台无关的,这表示这些技术可以在具有各种处理器的各种商业计算平台上实现。

所描述的模块和技术的实现可以存储在某种形式的计算机可读介质上或通过其来传输。计算机可读介质可以包括可以由计算设备1502访问的各种介质。作为示例而非限制,计算机可读介质可以包括“计算机可读存储介质”和“计算机可读信号介质”。

“计算机可读存储介质”可以指代与单纯的信号传输、载波或信号本身相比能够实现信息的持久和/或非暂态存储的介质和/或设备。因此,计算机可读存储介质指代非信号承载介质。计算机可读存储介质包括诸如以适于存储诸如计算机可读指令、数据结构、程序模块、逻辑元件/电路或其他数据等信息的方法或技术实现的易失性和非易失性可移除和不可移除介质和/或存储设备等硬件。计算机可读存储介质的示例可以包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd-rom、数字通用盘(dvd)或其他光学存储器、硬盘、磁带盒、磁带、磁盘存储或其他磁存储设备、或者适合于存储期望的信息并且可以由计算机访问的其他存储设备、有形介质或制品。

“计算机可读信号介质”可以指代被配置为诸如经由网络向计算设备1502的硬件传输指令的信号承载介质。信号介质通常可以实施计算机可读指令、数据结构、程序模块或调制数据信号(诸如载波、数据信号或其他传输机制)中的其他数据。信号介质还包括任何信息传递介质。术语“调制数据信号”表示以能够在信号中对信息进行编码的方式设置或改变其一个或多个特征的信号。作为示例而非限制,通信介质包括有线介质(诸如有线网络或直接有线连接等)和无线介质(诸如声学、rf、红外和其他无线介质等)。

如前所述,硬件元件1510和计算机可读介质1506表示以硬件形式实现的模块、可编程设备逻辑和/或固定设备逻辑,其可以在一些实施例中用于实现本文中描述的技术的至少一些方面,诸如执行一个或多个指令。硬件可以包括集成电路或片上系统、专用集成电路(asic)、现场可编程门阵列(fpga)、复杂可编程逻辑器件(cpld)以及硅或其他硬件的其他实现的组件。在这个上下文中,硬件可以作为处理设备来操作,该处理设备执行由指令定义的程序任务和/或由硬件实施的逻辑以及用于存储用于执行的指令的硬件,例如,先前描述的计算机可读存储介质。

还可以采用前述的组合来实现本文中描述的各种技术。因此,软件、硬件或可执行模块可以实现为在某种形式的计算机可读存储介质上和/或由一个或多个硬件元件1510实施的一个或多个指令和/或逻辑。计算设备1502可以被配置为实现与软件和/或硬件模块相对应的特定指令和/或功能。因此,可以由计算设备1502作为软件来执行的模块的实现可以至少部分以硬件来实现,例如,通过使用处理系统1504的计算机可读存储介质和/或硬件元件1510。指令/或功能可以由一个或多个制品(例如,一个或多个计算设备1502和/或处理系统1504)可执行/操作以实现本文中描述的技术、模块和示例。

本文中描述的技术可以由计算设备1502的各种配置支持,并且不限于本文中描述的技术的特定示例。这个功能还可以全部或部分地通过使用分布式系统来实现,诸如如下所述通过经由平台1516的“云”1514。

云1514包括和/或表示用于资源1518的平台1516。平台1516抽象云1514的硬件(例如,服务器)和软件资源的基础功能。资源1518可以包括当在远离计算设备1502的服务器上执行计算机处理时可以使用的应用和/或数据。资源1518还可以包括通过因特网和/或通过订户网络(诸如蜂窝或wi-fi网络)提供的服务。

平台1516可以抽象资源和功能以将计算设备1502与其他计算设备连接。平台1516还可以用于抽象资源的缩放以提供相应的缩放级别,从而满足经由平台1516实现的对资源1518的需求。因此,在互连的设备实施例中,本文中描述的功能的实现可以分布在整个系统1500上。例如,功能可以部分地在计算设备1502上以及经由抽象云1514的功能的平台1516来实现。

结论

尽管已经用特定于结构特征和/或方法动作的语言描述了本发明,但是应当理解,所附权利要求中限定的本发明不必限于所描述的具体特征或动作。而是,具体特征和动作被公开作为实现所要求保护的发明的示例形式。

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