1.本描述一般涉及使用神经网络的深度估计。
背景技术:2.深度估计是用于根据图像数据估计深度(视差)的计算机视觉设计任务(例如,接收rgb图像并且输出深度图像)。在一些传统方法中,场景中的多个相机和/或物理标记用于从相同场景/对象的多个视图重构深度图。然而,根据单个图像估计深度图可能需要密集计算能力,这在一些情况下不很好地适合于移动应用。
技术实现要素:3.根据一方面,一种用于深度估计的方法包括:从传感器系统接收图像数据;由神经网络基于图像数据生成第一深度图,其中该第一深度图具有第一尺度;获得与图像数据相关联的深度估计;以及使用深度估计来将第一深度图变换为第二深度图,其中该第二深度图具有第二尺度。
4.根据一些方面,该方法可以包括以下特征中的一个或多个(或其任何组合)。该方法包括由神经网络基于图像数据生成表面法线,其中使用表面法线和深度估计来将第一深度图变换为第二深度图。该方法可以包括基于图像数据生成视觉特征点,视觉特征点与深度估计相关联。该方法可以包括从深度传感器获得深度估计。可以在可由移动计算设备执行的增强现实(ar)会话期间获得深度估计。该方法可以包括基于第一深度图与深度估计之间的偏移估计仿射参数,其中仿射参数包括尺度和移位,并且基于仿射参数将第一深度图变换为第二深度图。该方法可以包括:由神经网络基于图像数据预测第一表面法线;根据第二深度图预测第二表面法线;基于第一表面法线和第二表面法线计算自我一致性损失;以及基于自我一致性损失更新神经网络。该方法可以包括使用第二深度图来估计图像数据中的至少一个平面区域,其中该至少一个平面区域被配置成被用作要附着虚拟对象的表面。
5.根据一方面,一种深度估计系统包括:传感器系统,该传感器系统被配置成获得图像数据;神经网络,该神经网络被配置成基于图像数据生成第一深度图,其中该第一深度图具有第一尺度;深度估计生成器,该深度估计生成器被配置成获得与图像数据相关联的深度估计;以及深度图变换器,该深度图变换器被配置成基于深度估计和第一深度图估计仿射参数并且使用仿射参数来将第一深度图变换为第二深度图,其中该第二深度图具有第二尺度。
6.根据一些方面,该深度估计系统可以包括以上/以下特征中的一个或多个(或其任何组合)。神经网络被配置成在移动计算设备上执行。该深度估计系统可以包括被配置成生成视觉特征点的视觉惯性运动跟踪器,视觉特征点与深度估计相关联。该深度估计系统可以包括被配置成获得深度估计的深度传感器。深度估计生成器被配置成在增强现实(ar)会话期间获得深度估计,其中深度估计生成器被配置成还在ar会话期间获得姿态数据、重力方向以及对图像数据中的一个或多个平面区域的识别。仿射参数可以包括用于第一深度图
中的每个深度估计的尺度和移位。深度图变换器可以包括使目标函数最小化以估计尺度和移位的基于随机样本合意(ransac)的求解器。该深度估计系统可以包括卷积神经网络训练器,该卷积神经网络训练器被配置成使用神经网络来基于图像数据预测第一表面法线,根据第二深度图预测第二表面法线,基于第一表面法线和第二表面法线计算自我一致性损失,基于第一表面法线和地面实况法线计算损失,并且基于自我一致性损失和所述损失更新神经网络。深度图变换器可以包括平面生成器,该平面生成器被配置成使用第二深度图来估计图像数据中的至少一个平面区域,其中至少一个平面区域被配置成被用作要附着虚拟对象的表面,其中平面生成器包括:图转换器,该图转换器被配置成将第二深度图转换为点云;以及平面检测器,该平面检测器被配置成使用点云来根据平面拟合算法检测至少一个平面区域。
7.根据一方面,一种非暂时性计算机可读介质存储可执行指令,当由至少一个处理器执行时,这些可执行指令使该至少一个处理器从传感器系统接收图像数据,由神经网络基于图像数据生成第一深度图,该第一深度图具有第一尺度,获得与图像数据相关联的深度估计,使用深度估计来将第一深度图变换为第二深度图,其中该第二深度图具有第二尺度,并且使用第二深度图来估计图像数据中的至少一个平面区域,该至少一个平面区域被配置成被用作要在增强现实(ar)会话期间附着虚拟对象的表面。
8.该非暂时性计算机可读介质可以包括以上/以下特征中的任一个(或其任何组合)。可执行指令包括当由至少一个处理器执行时使该至少一个处理器基于第一深度图与深度估计之间的偏移估计仿射参数的指令,其中仿射参数包括尺度和移位,并且基于仿射参数将第一深度图变换为第二深度图。可以从视觉惯性运动跟踪器、深度传感器、双像素深度估计器、运动立体深度估计器、稀疏主动深度估计器或预先计算的稀疏图中的至少一个获得深度估计。可执行指令包括当由至少一个处理器执行时使该至少一个处理器由神经网络基于图像数据生成表面法线的指令,其中使用表面法线和深度估计来将第一深度图变换为第二深度图。
附图说明
9.图1a图示根据一方面的深度估计系统。
10.图1b图示根据一方面的获得深度估计的深度估计生成器。
11.图1c图示根据一方面的图像数据中的视觉特征点的示例。
12.图1d图示根据一方面的深度图变换器。
13.图1e图示根据一方面的深度图变换器的参数估计求解器的示例操作。
14.图1f图示根据一方面的获得重力方向的加速度计。
15.图1g图示根据一方面的被配置成使用视觉特征点来检测一个或多个平面区域的平面生成器。
16.图1h图示在增强现实(ar)会话期间捕获的信息的示例。
17.图1i图示根据一方面的神经网络训练器。
18.图2图示根据一方面的神经网络。
19.图3图示根据一方面的被配置成从度量深度图中检测图像数据中的一个或多个平面区域的平面生成器。
20.图4图示根据一方面的具有深度估计系统的ar系统。
21.图5图示描绘根据一方面的深度估计系统的示例操作的流程图。
22.图6图示描绘根据一方面的调整神经网络的示例操作的流程图。
23.图7图示描绘根据另一方面的深度估计系统的示例操作的流程图。
24.图8图示根据一方面的深度估计系统的示例计算设备。
具体实施方式
25.实施例提供了一种深度估计系统,该深度估计系统包括:传感器系统,该传感器系统获得图像数据;以及神经网络,该神经网络被配置成基于图像数据的图像帧生成深度图(例如,使用单个图像帧来生成深度图)。在一些示例中,由神经网络生成的深度图可以与第一尺度(例如,非公制图)相关联。由神经网络生成的深度图可以是仿射不变深度图,该仿射不变深度图是适于尺度/移位但不与公制尺度(或英制数字系统)相关联的深度图。该深度估计系统包括:深度估计生成器,该深度估计生成器从一个或多个源获得深度估计(例如,具有根据第二尺度(例如,公制尺度)的深度值的深度估计);以及深度图变换器,该深度图变换器被配置成使用深度估计来将由神经网络生成的深度图变换为具有第二尺度(例如,公制尺度)的深度图。第一尺度和第二尺度可以是能够基于具有不同标准的两个不同的测量系统的不同尺度。在一些示例中,公制深度图可以是指其中每个像素根据图像中的对应像素的公制尺度(例如,米)表示公制深度值的图像。可以将由深度估计生成器获得的公制深度估计认为是稀疏深度估计(例如,针对图像数据中的一些像素而不是所有像素的深度估计)。在一些示例中,公制深度估计与图像数据中的像素子集相关联。深度图转换器使用稀疏深度估计来为由神经网络生成的深度图提供第二尺度(例如,公制尺度)。在一些示例中,实施例提供一种能够在可能仅针对稀疏子集存在公制深度估计时为所有像素提供公制尺度的系统,并且密集公制深度图为下游应用(例如,3d重构、平面查找等)提供优于稀疏公制深度的技术优势。
26.该深度估计系统可以提供用于在单目深度神经网络中尺度/移位模糊度(或通常称为仿射模糊度)的解决方案。例如,该深度估计系统可以使用公制深度的稀疏源来解决单目机器学习(ml)深度模型中的仿射模糊度。仿射模糊度可以对于需要(或受益于)实词尺度(例如,公制尺度)的一些应用造成困难。例如,移动增强现实(ar)应用可能涉及将虚拟对象放置在具有真实世界维度的相机视图中。为了以真实世界尺度渲染对象,可能需要以公制单位估计上面放置有虚拟对象的表面的深度。根据这里讨论的实施例,根据本文讨论的实施例,由该深度估计系统生成的公制深度图可以用于估计图像数据中的平面区域,其中平面区域被用作要附着虚拟对象的表面。
27.在一些传统ar应用中,在三维(3d)点云中估计表面,但是这些方法可能不允许用户快速地(例如,立即)在场景中放置虚拟对象。相反,用户扫描具有足够纹理的平面表面以检测到足够量的3d点并且随后进行平面检测,这可以导致ar会话未检测到许多平面和/或花费相对长的时间来检测平面。然而,通过使用由深度估计系统生成的公制深度图,能够减小用于检测平面区域的时延。例如,深度估计系统可以通过使用神经网络预测放置的对象/平面表面深度的尺度来减小放置时延(例如,根据单个图像或少量图像估计深度从而不太需要用户移动)。此外,该深度估计系统可以根据诸如白桌子的低纹理表面预测深度。另外,
注意,由该深度估计系统生成的公制深度图可以被用于包括机器人的各式各样应用(除ar应用之外)。
28.在一些示例中,深度图变换器使用一个或多个其他信号来帮助为由神经网络生成的深度图提供第二尺度(例如,公制尺度)。在一些示例中,神经网络预测表面法线,并且深度图变换器使用所预测的表面法线以及稀疏深度估计来为由神经网络生成的深度图提供第二尺度(例如,公制尺度)。
29.可以通过预测深度和表面法线来改进预测深度的准确度。为了鼓励预测深度与表面法线之间的一致性,在神经网络的训练或调整期间使用自我一致性(self-consistency)损失(例如,无监督自我一致性损失)。例如,神经网络可以根据rgb图像预测第一表面法线,而深度图变换器可以根据公制深度图预测第二表面法线。基于第一表面法线与第二表面法线之间的差异计算自我一致性损失,并且将自我一致性损失添加到监督损失。监督损失是基于第一表面法线与地面实况法线之间的差异而计算的。自我一致性损失鼓励网络使第一表面法线与第二表面法线之间的任何偏差最小化。
30.在一些示例中,深度图变换器可以接收重力方向和平面区域。重力方向是从加速度计获得的。平面区域可以由平面生成器在ar会话期间使用视觉特征点(例如,slam点)来估计。深度图变换器可以使用重力方向和平面区域(以及稀疏深度估计)来为由神经网络生成的深度图提供第二尺度(例如,公制尺度)。
31.深度图变换器可以包括参数估计器求解器,该参数估计器求解器被配置成执行参数估计算法以基于稀疏深度估计与由神经网络生成的深度图之间的偏移估计仿射参数(例如,移位、尺度)。在一些示例中,参数估计器求解器是求解目标函数以估计尺度和移位的基于随机样本合意(ransac)的求解器。在一些示例中,参数估计器求解器被配置成求解ransac循环内的最小二乘参数估计问题以估计用于深度图的仿射参数以将其变换到第二尺度(例如,公制尺度)。
32.在一些示例中,神经网络被认为是单目深度神经网络,因为神经网络基于单个图像帧预测深度图。在一些示例中,神经网络包括被配置成根据红色-绿色-蓝色(rgb)图像预测逐像素深度的u-net架构。在一些示例中,神经网络包括使得神经网络能够在移动计算设备(例如,智能电话、平板等)上执行的特征。例如,神经网络可以使用逐深度可分离卷积。逐深度可分离卷积包括将标准卷积因式分解成逐深度卷积和称为逐点卷积的1x1卷积的因式分解卷积。这种分解具有减小计算和模型大小的效果。在一些示例中,神经网络可以使用blurpool编码器,该blurpool编码器可以是使网络变得对诸如旋转、缩放、模糊和噪声变体的损坏更鲁棒且稳定的组合抗混叠(anti-aliasing)和子采样操作。在一些示例中,神经网络可以包括双线性上采样,这可以减少使卷积转置的参数并且因此减小网络的大小。参考图进一步说明这些和其他特征。
33.图1a至图1g图示根据一方面的深度估计系统100。深度估计系统100基于深度估计108(从一个或多个源获得)和由神经网络118生成的深度图120生成深度图138。由神经网络118生成的深度图120具有第一尺度。在一些示例中,第一尺度是非公制尺度。深度图138具有第二尺度。第一尺度和第二尺度基于具有不同标准的两个不同的测量系统。在一些示例中,第二尺度是公制尺度。深度估计系统100被配置成将具有第一尺度的深度图120转换为具有第二尺度的深度图138。具有第二尺度的深度图138可以用于控制增强现实、机器人、自
然用户界面技术、游戏或其他应用。
34.深度估计系统100包括获得图像数据104的传感器系统102。传感器系统102包括一个或多个相机107。在一些示例中,传感器系统102包括单个相机107。在一些示例中,传感器系统102包括两个或更多个相机107。传感器系统102可以包括惯性运动单元(imu)。imu可以检测计算设备的运动、移动和/或加速度。imu可以包括各种不同类型的传感器,诸如例如加速度计(例如,图1c的加速度计121)、陀螺仪、磁力计和其他此类传感器。传感器系统102可以包括其他类型的传感器,诸如光传感器、音频传感器、距离和/或接近传感器、诸如电容传感器的接触传感器、定时器和/或其他传感器和/或传感器的不同组合。
35.深度估计系统100包括一个或多个处理器140,该一个或多个处理器可以形成在被配置成执行一个或多个机器可执行指令或各件软件、固件或其组合的基板中。处理器140可以是基于半导体的—也就是说,处理器能够包括能够执行数字逻辑的半导体材料。深度估计系统100还能够包括一个或多个存储器设备142。存储器设备142可以包括以能够由处理器140读取和/或执行的格式存储信息的任何类型的存储设备。存储器设备142可以存储应用和模块,当由处理器140执行时,这些应用和模块执行本文讨论的任何操作。在一些示例中,应用和模块可以被存储在外部存储设备中并且加载到存储器设备142中。
36.神经网络118被配置成基于由传感器系统102捕获的图像数据104生成深度图120。在一些示例中,神经网络118接收图像数据104的图像帧104a并且基于图像帧104a生成深度图120。图像帧104a是红色-绿色-蓝色(rgb)图像。在一些示例中,神经网络118使用单个图像帧104a来生成深度图120。在一些示例中,神经网络118使用两个或更多个图像帧104a来生成深度图120。由神经网络118生成的深度图120可以是仿射不变深度图,该仿射不变深度图是适于尺度/移位但不与第一尺度(例如,公制尺度)相关联的深度图。深度图120可以是指其中每个像素根据图像中的对应像素的非公制尺度(例如,0至1)表示深度值的图像。非公制尺度可以是不基于公制、国际单位制(si)或英制测量系统的尺度。尽管参考公制尺度(或公制值)和非公制尺度(或非公制尺度)描述实施例,但是第一尺度和第二尺度能够基于具有不同标准的任何两个不同的测量系统。深度图120可以用于描述包含与从相机视点到场景中的对象的表面的距离相关的信息的图像。深度值与从相机视点到场景中的对象的表面的距离逆相关。
37.神经网络118可以是被配置成使用一个或多个图像帧104a(或单个图像帧104a)来生成深度图120的任何类型的深度神经网络。在一些示例中,神经网络118是卷积神经网络。在一些示例中,神经网络118被认为是单目深度神经网络,因为神经网络118基于单个图像帧104a预测深度图120。神经网络118被配置成根据图像帧104a预测逐像素深度。在一些示例中,神经网络118包括u-net架构,例如,具有带可学习参数的跳过连接的编码器-解码器。
38.在一些示例中,神经网络118具有能够在移动计算设备(例如,智能电话、平板等)上执行的大小。在一些示例中,神经网络118的大小小于150mb。在一些示例中,神经网络118的大小小于100mb。在一些示例中,神经网络118的大小是约70mb或小于70mb。在一些示例中,神经网络118使用逐深度可分离卷积,这些逐深度可分离卷积是将标准卷积因式分解成逐深度卷积和称为逐点卷积的1x1卷积的因式分解卷积的形式。这种分解可以具有减小计算和模型大小的效果。在一些示例中,神经网络118可以使用blurpool编码器,该blurpool编码器可以是使网络变得对诸如旋转、缩放、模糊和噪声变体的损坏更鲁棒且稳定的组合
抗混叠和子采样操作。在一些示例中,神经网络118可以包括双线性上采样,这可以减少使卷积转置的参数并且因此减小网络的大小。
39.在一些示例中,神经网络118还预测描述图像帧104a(例如,场景中的所有可见表面)的表面定向的表面法线122a。在一些示例中,表面法线122a包括每像素法线或每像素表面定向。在一些示例中,表面法线122a包括表面法线矢量。可以将图像中的像素的表面法线122a定义为与在真实世界中由该像素表示的3d表面的定向相对应的三维矢量。3d表面的定向由与真实世界3d表面垂直的方向矢量表示。表面法线122a在一些示例中,神经网络118还被配置成检测图像帧104a内的平面区域124。平面区域124可以包括垂直平面和/或水平平面。
40.深度估计系统100包括获得与图像数据104相关联的深度估计108(例如,公制深度估计)的深度估计生成器106。深度估计108可以包括图像数据104中的一些像素的公制尺度中的深度值。例如,公制尺度可以是指诸如公制系统和/或英制系统的任何类型的测量系统。可以将由深度估计生成器106获得的深度估计108认为是稀疏深度估计(例如,图像数据中的一些像素而不是所有像素的深度估计)。例如,如果图像帧104a是10x10,则图像帧104a包括一百个像素。然而,深度估计108可以包括这些像素的子集的公制尺度中的深度估计。相比之下,密集深度图(例如,深度图120)为图像中的大量像素或图像中的所有像素提供深度值(例如,非公制深度值)。
41.深度估计生成器106可以是被配置成基于图像数据104生成(或获得)深度估计108的任何类型的组件。在一些示例中,深度估计生成器106还获得姿态数据110并且识别图像数据104内的平面区域114。姿态数据110可以识别执行深度估计系统100的设备(例如,具有深度估计系统100的智能电话)的姿态(例如,位置和定向)。在一些示例中,姿态数据110包括设备的五自由度(dof)位置。在一些示例中,姿态数据110包括设备的六dof位置。在一些示例中,深度估计生成器106包括被配置成使用任何类型的平面检测算法(或平面拟合算法)来检测图像数据104内的平面区域114的平面生成器123。平面区域114可以是图像数据104内的对象(例如,桌子、墙壁等)的平面表面。
42.参考图1b,深度估计生成器106可以包括视觉惯性运动跟踪器160、深度传感器164、运动立体深度估计器168、稀疏主动深度估计器170和/或预先计算的稀疏图172。深度估计生成器106的每一个组件可以表示用于获得深度估计108的单独源。例如,每个组件可以独立地生成深度估计108,其中深度估计生成器106可以包括一个组件或多个组件。在一些示例中,深度估计生成器106可以包括一个源,例如,视觉惯性运动跟踪器160、深度传感器164、双像素深度估计器166、运动立体深度估计器168、稀疏主动深度估计器170或预先计算的稀疏图172中的一个。在一些示例中,如果深度估计生成器106包括多个源(例如,多个组件),则深度估计生成器106可以选择源中的一个以用于在生成深度图138时使用。在一些示例中,如果深度估计生成器106包括多个源(例如,多个组件),则深度估计生成器106可以选择多个源以用于在生成深度图138时使用。
43.视觉惯性运动跟踪器160被配置成生成表示图像数据104的视觉特征点162。视觉特征点162与深度估计108相关联。例如,每个视觉特征点162可以包括公制尺度中的深度值。图1c图示由相机107捕获的场景125,其中场景125描绘由视觉惯性运动跟踪器160使用图像数据104生成的视觉特征点162。视觉特征点162可以包括公制尺度中的深度值,其中该
深度值与从相机视点到场景125中的对象的表面的距离逆相关。
44.视觉特征点162是3d空间中表示用户的环境的多个点(例如,兴趣点)。在一些示例中,每个视觉特征点162包括3d空间中的固定位置和定向的近似值,并且可以随着时间而更新视觉特征点162。例如,用户可以在ar会话174期间围绕场景125移动她的移动电话的相机,其中视觉惯性运动跟踪器160可以生成表示场景125的视觉特征点162。在一些示例中,视觉特征点162包括同时定位和映射(slam)点。在一些示例中,视觉特征点162被称为点云。在一些示例中,视觉特征点162被称为特征点。在一些示例中,视觉特征点162被称为3d特征点。在一些示例中,视觉特征点162在每图像帧104a 200-400的范围内。
45.返回参考图1b,在一些示例中,视觉惯性运动跟踪器160被配置成执行slam算法,该slam算法是能够通过使用相机107来估计设备(例如,智能电话)在空间中的移动的跟踪算法。在一些示例中,slam算法还被配置成检测平面区域114。在一些示例中,slam算法通过分析每个图像的关键点(例如,视觉特征点162)和描述符并且逐帧跟踪这些描述符来迭代地计算设备的位置和定向(例如,姿态数据110),这能够允许实现环境的3d重构。
46.深度传感器164被配置成基于图像数据104生成深度估计108。在一些示例中,深度传感器164包括光检测和测距(lidar)传感器。双像素深度估计器166使用机器学习模型来估计距相机的双像素自动聚焦系统的深度。双像素通过将每一像素分成两半使得每个半像素观察主透镜光圈的不同一半来操作。通过单独地读出这些半像素图像中的每一个,获得场景的两个稍微不同的视图,并且这些不同的视图由双像素深度估计器166使用来生成深度估计108。运动立体深度估计器168可以在立体匹配算法中使用多个图像来生成深度估计108。在一些示例中,可以围绕场景125移动单个相机以捕获多个图像,其中这些图像用于立体匹配以估计公制深度。稀疏主动深度估计器170可以包括稀疏飞行时间估计器或稀疏相位检测自动聚焦(pdaf)估计器。在一些示例中,预先计算的稀疏图172是由视觉定位服务使用的稀疏图。
47.返回参考图1a,深度估计系统100包括被配置成使用深度估计108来将由神经网络118生成的深度图120变换为深度图138的深度图变换器126。深度图138可以指其中每个像素根据图像数据104中的对应像素的公制尺度(例如,米)表示深度值的图像。深度图变换器126被配置成使用深度估计108来为由神经网络118生成的深度图120提供公制尺度。
48.深度图变换器126被配置成基于由神经网络118生成的深度图120和深度估计108来估计仿射参数132。仿射参数132包括深度图120的尺度134和移位136。尺度134包括指示深度图120的重定大小量的尺度值。移位136包括指示深度图120的像素被移位的量的移位值。注意,尺度134(或尺度值)是指与上述“第一尺度”和“第二尺度”完全不同的定大小量,其与参考不同的测量系统(例如,第一尺度可以是非公制尺度而第二尺度可以是公制尺度)上述“第一尺度”和“第二尺度”完全不同。深度图变换器126被配置成使用仿射参数132来将深度图120变换为深度图138。在一些示例中,尺度134和移位136包括两个数(例如,s=尺度,t=移位),这两个数当与深度图120处的每个像素中的值相乘并相加时产生深度图138(例如,d138(x,y)=s*d120(x,y)+t),其中d120(x,y)是在深度图120中位于像素位置(x,y)处的值)。仿射参数132能够从深度估计108的稀疏集估计,并且然后使用上述等式应用于深度图120中的每一像素。由于深度图120对于所有像素具有有效深度,所以深度图138也将对于所有像素具有公制尺度。
49.深度图变换器126被配置成执行参数估计算法以求解使将深度估计108与深度图120对齐的目标最小化的优化问题(例如,目标函数)。换句话说,深度图变换器126被配置成使将深度估计108与深度图120对齐以估计仿射参数132的目标函数最小化。例如,如上面所指示的,由深度估计生成器106获得的深度估计108可以被认为是稀疏深度估计(例如,图像数据104中的一些像素而不是所有像素的深度估计)。例如,如果图像帧104a是10x10,则图像帧104a包括一百个像素。深度估计108可以包括公制尺度中针对图像帧104a中的像素的子集(例如,在10x10图像的示例中小于一百的某个数目)的深度估计。然而,深度图120包括图像中的每个像素的深度值,其中该深度值是诸如零与一之间的数的非公制单位。对于具有公制深度估计108(例如,公制深度值)的每个像素,深度图变换器126可以获得深度图120中的对应深度值(例如,非公制深度值)并且使用公制深度值和非公制深度值来估计尺度134和移位136,这可以包括使当尺度134乘非公制深度值加上移位136减去公制深度值为零时的误差最小化。在一些示例中,深度图变换器126被配置成求解随机样本合意(ransac)循环内的最小二乘参数估计问题以估计仿射参数132。
50.参考图1d,深度图变换器126可以包括被配置成将深度估计108投影到深度图120上的数据投影器176。如果深度估计108包括视觉特征点162,则数据投影器176将视觉特征点162投影到深度图120上。深度图变换器126可以包括被配置成求解优化问题以估计仿射参数132(例如,尺度134、移位136)的参数估计求解器178,其中优化问题使将深度估计108与深度图120对齐的目标最小化。在一些示例中,参数估计求解器178包括基于ransac的参数估计算法。在一些示例中,参数估计求解器178被配置成求解ransac循环内的最小二乘参数估计问题以估计仿射参数132。
51.图1e图示参数估计求解器178的示例操作。在操作101中,参数估计求解器178基于深度估计108与深度图120之间的深度偏移确定尺度134和移位136。参数估计求解器178基于以下等式使用深度估计108和深度图120中的任何两个点来计算尺度134(例如,用于逆深度的尺度)和移位136(例如,用于逆的移位):
52.等式(1):
53.等式(2):c=l
i-kdi54.参数k指示尺度134,并且参数c指示移位136。参数li是第i估计(其对应于第i深度预测)的逆深度(例如,公制深度值)。参数di是第i深度预测的逆深度(例如,非公制深度值)。参数lj是第j估计(其对应于第j深度预测)的逆深度(例如,公制深度值)。参数dj是第j深度预测的逆深度(例如,非公制深度值)。例如,li和lj可以表示深度估计108中的两个点(例如,两个像素)的公制深度值,并且di和dj可以表示深度图120中的对应两个点(例如,两个像素)的非公制深度值。
55.在操作103中,参数估计求解器178基于以下等式执行评估方法以识别哪些其他点(例如,像素)是上述解(例如,等式(1)和等式2))的内点(inlier):
56.等式(3):e=(d
i-li)2,其中e<t,并且t是内点阈值(例如,ransac内点阈值)。例如,对于具有非公制深度值和公制深度值的特定点(例如,像素),参数估计求解器178获得非公制深度值(di)和公制深度值(li),并且如果平方差小于内点阈值,则该点被识别为内点。
57.在操作105中,参数估计求解器178被配置成对于尺度134(k)和移位136(c)执行最小二乘求解器以根据来自评估方法的合意估计来细化估计。
58.返回参考图1a,深度图变换器126可以使用一个或多个其他信号来帮助为由神经网络118生成的深度图120提供公制尺度。在一些示例中,神经网络118可以预测表面法线122a,并且深度图变换器126可以使用预测表面法线122a以及深度估计108来为由神经网络118生成的深度图120确定公制尺度。例如,深度图变换器126可以根据深度图138预测表面法线122b并且使用根据深度图138预测的表面法线122b与从神经网络118预测的表面法线122a之间的偏移来帮助确定仿射参数132。例如,深度图变换器126可以使可以惩罚深度图120与深度估计108之间的偏移以及从神经网络118预测的表面法线122a与根据深度图138预测的表面法线122b之间的偏移的目标函数最小化。
59.在一些示例中,深度图变换器126接收重力方向112和/或平面区域114。深度图变换器126被配置成使用重力方向112和平面区域114(以及深度估计108)来为由神经网络118生成的深度图120提供公制尺度。如图1f所示,可以从加速度计121获得重力方向112。可以从图像数据104中检测平面区域114。在一些示例中,如图1g所示,平面区域114可以由平面生成器123使用视觉特征点162(例如,slam点)来估计。例如,平面生成器123可以执行检测图像数据104中的平面区域114的平面检测算法(或平面拟合算法)。使用重力方向112和平面区域114,深度图变换器126可以使可以惩罚水平表面区域中的表面法线122b以与重力方向112(或取决于坐标系统的重力方向112的相反方向)匹配的目标函数最小化。
60.如图1h所示,可以在可由客户端ar应用173执行的ar会话174期间获得深度估计108、姿态数据110、重力方向112和平面区域114。可以如图4中进一步讨论的那样在用户已创建或者加入多人ar协作式环境时发起ar会话174。客户端ar应用173可以被安装在移动计算设备上(并且可由其执行)。在一些示例中,客户端ar应用173是结合一个或多个ar应用操作的软件开发套件(sdk)。在一些示例中,结合深度估计系统100的其他组件(例如,深度估计生成器106、传感器系统102等),客户端ar应用173被配置成检测并跟踪设备相对于物理空间的位置以获得姿态数据110,检测不同类型的表面(例如,水平表面、垂直表面、成角度表面)的大小和位置以获得平面区域114,从加速度计121获得重力方向112,并且生成深度估计108(例如,视觉特征点162)。在ar会话174期间,用户能够向场景125添加虚拟对象,然后多个用户能够加入ar环境以从共享物理空间中的不同位置同时地查看这些虚拟对象并与之交互。
61.如图1i所示,深度估计系统100可以包括被配置成训练或更新神经网络118的卷积神经网络(cnn)训练器155。在一些示例中,可以通过预测深度和表面法线122a来改进深度图138的准确度。可以将表面法线视为更高阶结构先验,因为属于同一3d平面的所有像素将具有相同的法线但不一定具有相同的深度。因此,通过训练神经网络118以同样预测表面法线122a,神经网络118被训练来推理/推断关于场景125中的平面的更高阶知识。这对于场景125中通常放置有虚拟对象的平面区域可以导致更平滑的深度。
62.为了鼓励预测深度与表面法线122a之间的一致性,在神经网络118的训练期间使用自我一致性损失182(例如,无监督自我一致性损失)。例如,神经网络118根据图像帧104a预测深度图120和表面法线122a,并且深度图变换器126根据深度图138预测表面法线122b。基于表面法线122a与表面法线122b之间的差异计算自我一致性损失182。基于表面法线
122a与地面实况法线122c之间的差异计算损失180(例如,监督损失)。基于损失180和自我一致性损失182计算总损失184(例如,损失180被添加到自我一致性损失182)。自我一致性损失182鼓励神经网络118使表面法线122a与表面法线122b之间的任何偏差最小化。
63.图2图示神经网络218的示例。神经网络218可以是图1a至图1i的神经网络118的示例并且可以包括参考那些图讨论的任何细节。在一些示例中,神经网络218是卷积神经网络。神经网络218接收图像帧204a并且生成深度图220。深度图220可以是图1a至图1i的深度图120的示例并且可以包括参考那些图讨论的任何细节。另外,在一些示例中,神经网络218被配置成预测表面法线(例如,图1a至图1i的表面法线122a)和平面区域124(例如,图1a至图1i的平面区域124)。在一些示例中,神经网络218包括被配置成根据红色-绿色-蓝色(rgb)图像预测逐像素深度的u-net架构,其中u-net架构是具有带可学习参数的跳过连接的编码器-解码器。
64.神经网络118可以包括诸如下采样器单元248-1、下采样器单元248-2、下采样器单元248-3、下采样器单元248-4和下采样器单元248-5的多个下采样器单元以及诸如上采样器单元249-1、上采样器单元249-2、上采样器单元249-3、上采样器单元249-4和上采样器单元249-5的多个上采样器单元。每个下采样器单元(例如,248-1、248-2、248-3、248-4、248-5)包括逐深度可分离卷积252、整流线性激活函数(relu)254和最大池化操作256。每个上采样器单元(例如,249-1、249-2、249-3、249-4、249-5)包括逐深度可分离卷积252、整流线性激活函数(relu)254和双线性上采样操作258。最后上采样器单元(例如,249-5)的输出被提供给逐深度可分离卷积252,然后是整流线性激活函数(relu)。
65.逐深度可分离卷积252包括将标准卷积因式分解成逐深度卷积和称为逐点卷积的1x1卷积的因式分解卷积。这种分解具有减小计算和模型大小的效果。另外,双线性上采样操作258的使用可以减少使卷积转置的参数并且因此减小网络的大小。在一些示例中,神经网络218可以使用blurpool编码器,该blurpool编码器可以是使神经网络218变得对诸如旋转、缩放、模糊和噪声变体的损坏更鲁棒且稳定的组合抗混叠和子采样操作。
66.图3图示使用公制深度图338来检测或识别一个或多个平面区域395(例如,公制平面区域)的平面生成器390的示例。例如,可以通过根据公制尺度的信息来识别平面区域395的位置和大小。在一些示例中,平面生成器390被包括在图1a至图1i的深度估计系统100内并且可以包括参考那些图讨论的任何细节。公制平面区域可以是具有公制尺度的图像内的对象的平面表面。在一些示例中,平面生成器390可以接收公制深度图338和姿态数据310并且从公制深度图338中检测一个或多个平面区域395。
67.如上面所指示的,仿射模糊度可以对于需要(或受益于)实词尺度的一些应用造成困难。例如,移动ar应用可以涉及将虚拟对象放置在具有真实世界维度的相机视图中。然而,为了以真实世界尺度渲染对象,可能需要以公制单位估计上面放置有虚拟对象的表面的深度。根据本文讨论的实施例,公制深度图338(例如,由图1a至图1i的深度估计系统100生成)可以用于估计图像数据中的至少一个平面区域395,其中至少一个平面区域395被配置成被用作要附着虚拟对象的表面。通过使用公制深度图338,能够减小用于检测平面区域395的时延。例如,深度估计系统(例如,图1a至图1i的深度估计系统100)可以通过使用卷积神经网络来预测放置的对象/平面表面深度的尺度来减小放置时延(例如,根据单个图像或少量图像估计深度从而不太需要用户移动)。此外,深度估计系统可以根据诸如白桌子的低
纹理表面预测深度。
68.平面生成器390可以包括被配置成将公制深度图338转换为点云394的映射转换器392。平面生成器390可以包括执行被配置成使用点云394来检测一个或多个平面区域395的平面拟合算法的平面检测器396。平面生成器390包括被配置成处理平面区域395的证实模型398,其可以基于可见性和其他约束拒绝一个或多个平面区域395。
69.图4图示根据一方面的ar系统450。参考图4,ar系统450包括第一计算设备411-1和第二计算设备411-2,其中第一计算设备411-1的用户和第二计算设备411-2的用户能够查看包括在共享ar环境401中的一个或多个虚拟对象430并且与之交互。尽管图4图示两个计算设备,但是实施例包含能够加入共享ar环境401的任何数目的计算设备(例如,不止两个)。第一计算设备411-1和第二计算设备411-2被配置成经由一个或多个应用编程接口(api)与可由服务器计算机461执行的ar协作式服务415进行通信。
70.ar协作式服务415被配置成创建用户能够共享的多用户或协作式ar体验。ar协作式服务415通过网络451与包括第一计算设备411-1和第二计算设备411-2的多个计算设备进行通信,其中第一计算设备411-1的用户和第二计算设备411-2的用户可以共享相同的ar环境401。ar协作式服务415可以允许用户创建用于创建用户能够与其他用户共享的多玩家或协作式ar体验的3d地图。用户能够将虚拟对象430添加到场景425,然后多个用户然后能够从共享物理空间中的不同位置同时地查看这些虚拟对象430并与之交互。
71.第一计算设备411-1和/或第二计算设备411-2可以是诸如智能电话、平板、膝上型电脑、可穿戴设备等的任何类型的移动计算系统。可穿戴设备可以包括诸如光学头戴式显示器(ohmd)设备、透明平视显示器(hud)设备、增强现实(ar)设备的头戴式显示器(hmd)设备,或诸如具有传感器、显示器和计算能力的护目镜或头戴式耳机的其他设备。在一些示例中,可穿戴设备包括智能眼镜。智能眼镜是以一副眼镜的形状设计的光学头戴式显示设备。例如,智能眼镜是在穿戴者通过眼镜观察到的东西旁边添加信息的眼镜。
72.ar环境401可以涉及在用户的视图内的物理空间和一个或多个虚拟对象430被定位在其内的虚拟空间。图4所示的虚拟对象430被示出为框但是可以包括用户添加的任何类型的虚拟对象。提供(或渲染)ar环境401然后可以涉及通过显示虚拟对象430来更改用户对物理空间的视图,使得它们对用户而言似乎被呈现在用户的视图中的物理空间中,或者覆盖到用户的视图中的物理空间上或之中。虚拟对象430的显示因此是根据虚拟空间与物理空间之间的映射。可以例如通过将虚拟对象430叠加到物理空间的用户的光场中、通过在一个或多个显示屏幕上再现物理空间的用户的视图和/或以其他方式——例如通过使用平视显示器、移动设备显示屏幕等——实现重叠虚拟对象430。
73.第一计算设备411-1和/或第二计算设备411-2包括深度估计系统400。深度估计系统400是图1a至图1i的深度估计系统100的示例并且可以包括参考那些图讨论的任何细节。深度估计系统400使用由第一计算设备411-1捕获的图像数据来生成公制深度图,并且该公制深度图用于根据上面讨论的任何技术来检测一个或多个平面区域495。在一些示例中,平面区域495可以被在视觉上图示给用户,使得用户能够查看平面区域495,使得用户能够将虚拟对象430附着到平面区域495。例如,第一计算设备411-1的用户可以使用平面区域495来附着虚拟对象430。当第二计算设备411-2进入同一物理空间时,ar协作式服务415可以将ar环境401渲染到第二计算设备411-2的屏幕中,其中用户能够查看由第一计算设备411-1
的用户添加的虚拟对象430并与之交互。第二计算设备411-2可以包括被配置成生成公制深度图并且使用该公制深度图来检测一个或多个平面区域495的深度估计系统400,其中第二计算设备411-2的用户可以将一个或多个其他虚拟对象430添加到所检测到的平面区域495,在其中第一计算设备411-1的用户将能够查看和交互。
74.图5图示描绘深度估计系统的示例操作的流程图500。尽管参考图1a至图1i的深度估计系统100描述操作,但是图5的操作可以适用于本文描述的任何系统。尽管图5的流程图500以顺序次序图示操作,但是应领会,这仅仅是示例,并且可以包括附加或替代操作。此外,可以以与所示出的次序不同的次序或者以并行或重叠方式执行图5的操作和相关操作。
75.操作502包括从传感器系统102接收图像数据104。操作504包括由神经网络118基于图像数据104生成深度图120(例如,第一深度图),其中深度图120具有第一尺度。操作506包括获得与图像数据104相关联的深度估计108。操作508包括使用深度估计108来将深度图120变换为深度图138(例如,第二深度图),其中深度图138具有第二尺度。第一尺度和第二尺度是能够基于具有不同标准的两个不同的测量系统的不同尺度。在一些示例中,第一尺度是非公制尺度。在一些示例中,第二尺度是公制尺度。另外,深度估计108具有与第二尺度相对应的深度值。
76.图6图示描绘深度估计系统的示例操作的流程图600。尽管参考图1a至图1i的深度估计系统100描述操作,但是图6的操作可以适用于本文描述的任何系统。尽管图6的流程图600以顺序次序图示操作,但是应领会,这仅仅是示例,并且可以包括附加或替代操作。此外,可以以与所示出的次序不同的次序或者以并行或重叠方式执行图6的操作和相关操作。
77.操作602包括由神经网络118基于图像帧104a预测深度图120(例如,第一深度图)和第一表面法线122a,其中深度图120具有第一尺度(例如,非公制尺度)。操作604包括获得与图像数据104相关联的深度估计108。在一些示例中,深度估计108具有根据第二尺度(例如,公制尺度)的深度值。操作606包括使用深度估计108来将深度图120变换为深度图138(例如,第二深度图),其中深度图138具有第二尺度(例如,公制尺度)。操作608包括根据深度图138估计第二表面法线122b。另外,注意,第一尺度和第二尺度是能够基于具有不同标准的两个不同的测量系统的不同尺度。
78.操作610包括基于第一表面法线122a与第二表面法线122b之间的差异计算自我一致性损失182。在一些示例中,自我一致性损失182是无监督损失。在一些示例中,流程图600包括基于第一表面法线122a与地面实况法线122c之间的差异计算损失180(例如,监督损失)。操作612包括基于自我一致性损失182更新神经网络118。在一些示例中,基于自我一致性损失182和损失180更新神经网络118。
79.图7图示描绘深度估计系统的示例操作的流程图700。尽管参考图1a至图1i的深度估计系统100和图4的ar系统450描述操作,但是图7的操作可以适用于本文描述的任何系统。尽管图7的流程图700以顺序次序图示操作,但是应领会,这仅仅是示例,并且可以包括附加或替代操作。此外,可以以与所示出的次序不同的次序或者以并行或重叠方式执行图7的操作和相关操作。
80.操作702包括从传感器系统102接收图像数据104。操作704包括由神经网络118基于图像数据104生成深度图120(例如,第一深度图),其中深度图120具有第一尺度(例如,非公制尺度)。操作706包括获得与图像数据104相关联的深度估计108。在一些示例中,深度估
计108具有根据第二尺度(例如,公制尺度)的深度值。操作708包括使用深度估计108来将深度图120变换为深度图138(例如,第二深度图),其中深度图138具有第二尺度(例如,公制尺度)。操作710包括使用深度图138来估计图像数据104中的至少一个平面区域495,其中至少一个平面区域495被配置成被用作要在增强现实(ar)会话174期间附着虚拟对象430的表面。
81.示例1.一种用于深度估计的方法,所述方法包括:从传感器系统接收图像数据;由神经网络基于所述图像数据生成第一深度图,其中所述第一深度图具有第一尺度;获得与所述图像数据相关联的深度估计;以及使用所述深度估计来将所述第一深度图变换为第二深度图,其中所述第二深度图具有第二尺度。
82.示例2.根据示例1所述的方法,进一步包括:由所述神经网络基于所述图像数据生成表面法线。
83.示例3.根据示例1至2中的任意一个所述的方法,其中使用所述表面法线和所述深度估计来将所述第一深度图变换为所述第二深度图。
84.示例4.根据示例1至3中的任意一个所述的方法,进一步包括:基于所述图像数据生成视觉特征点,所述视觉特征点与所述深度估计相关联。
85.示例5.根据示例1至4中的任意一个所述的方法,进一步包括:从深度传感器获得所述深度估计。
86.示例6.根据示例1至5中的任意一个所述的方法,其中可由移动计算设备执行的增强现实(ar)会话期间获得所述深度估计。
87.示例7.根据示例1至6中的任意一个所述的方法,进一步包括:基于所述第一深度图与所述深度估计之间的偏移估计仿射参数,所述仿射参数包括尺度和移位,其中基于所述仿射参数将所述第一深度图变换为所述第二深度图。
88.示例8.根据示例1至7中的任意一个所述的方法,进一步包括:由所述神经网络基于所述图像数据预测第一表面法线;和根据所述第二深度图预测第二表面法线。
89.示例9.根据示例1至8中的任意一个所述的方法,进一步包括:基于所述第一表面法线和所述第二表面法线计算自我一致性损失。
90.示例10.根据示例1至9中的任意一个所述的方法,进一步包括:基于所述自我一致性损失更新所述神经网络。
91.示例11.根据示例1至10中的任意一个所述的方法,进一步包括:使用所述第二深度图来估计所述图像数据中的至少一个平面区域,所述至少一个平面区域被配置成被用作要附着虚拟对象的表面。
92.示例12.一种深度估计系统,包括:传感器系统,所述传感器系统被配置成获得图像数据;神经网络,所述神经网络被配置成基于所述图像数据生成第一深度图,所述第一深度图具有第一尺度;深度估计生成器,所述深度估计生成器被配置成获得与所述图像数据相关联的深度估计;以及深度图变换器,所述深度图变换器被配置成基于所述深度估计和所述第一深度图估计仿射参数并且使用所述仿射参数来将所述第一深度图变换为第二深度图,所述第二深度图具有第二尺度。
93.示例13.根据示例12所述的深度估计系统,其中所述神经网络被配置成在移动计算设备上执行。
94.示例14.根据示例12至13中的任意一个所述的深度估计系统,进一步包括:视觉惯性运动跟踪器,所述视觉惯性运动跟踪器被配置成生成视觉特征点,所述视觉特征点与所述深度估计相关联。
95.示例15.根据示例12至14中的任意一个所述的深度估计系统,进一步包括:深度传感器,所述深度传感器被配置成获得所述深度估计。
96.示例16.根据示例12至15中的任意一个所述的深度估计系统,其中所述深度估计生成器被配置成在增强现实(ar)会话期间获得所述深度估计,所述深度估计生成器被配置成还在所述ar会话期间获得姿态数据、重力方向以及对所述图像数据中的一个或多个平面区域的识别。
97.示例17.根据示例12至16中的任意一个所述的深度估计系统,其中所述仿射参数包括用于所述第一深度图中的每个深度估计的尺度和移位。
98.示例18.根据示例12至17中的任意一个所述的深度估计系统,其中所述深度图变换器包括基于随机样本合意(ransac)的求解器,所述基于随机样本合意(ransac)的求解器使目标函数最小化以估计所述尺度和所述移位。
99.示例19.根据示例12至18中的任意一个所述的深度估计系统,进一步包括:神经网络训练器,所述神经网络训练器被配置成使用所述神经网络来基于所述图像数据预测第一表面法线;根据所述第二深度图预测第二表面法线;基于所述第一表面法线和所述第二表面法线计算自我一致性损失;基于所述第一表面法线和地面实况法线计算损失;并且/或者基于所述自我一致性损失和所述损失更新所述神经网络。
100.示例20.根据示例12至19中的任意一个所述的深度估计系统,进一步包括:平面生成器,所述平面生成器被配置成使用所述第二深度图来估计所述图像数据中的至少一个平面区域,所述至少一个平面区域被配置成被用作要附着虚拟对象的表面,所述平面生成器包括图转换器,所述图转换器被配置成将所述第二深度图转换为点云;以及平面检测器,所述平面检测器被配置成使用所述点云来根据平面拟合算法检测所述至少一个平面区域。
101.示例21.一种非暂时性计算机可读介质,所述非暂时性计算机可读介质存储可执行指令,当由至少一个处理器执行时,所述可执行指令使所述至少一个处理器:从传感器系统接收图像数据;由神经网络基于所述图像数据生成第一深度图,所述第一深度图具有第一尺度;获得与所述图像数据相关联的深度估计;使用所述深度估计来将所述第一深度图变换为第二深度图,所述第二深度图具有第二尺度;并且使用所述第二深度图来估计所述图像数据中的至少一个平面区域,所述至少一个平面区域被配置成被用作要在增强现实(ar)会话期间附着虚拟对象的表面。
102.示例22.根据示例21所述的非暂时性计算机可读介质,其中所述可执行指令包括指令,当由所述至少一个处理器执行时,所述指令使所述至少一个处理器:基于所述第一深度图与所述深度估计之间的偏移估计仿射参数,所述仿射参数包括尺度和移位,其中基于所述仿射参数将所述第一深度图变换为所述第二深度图。
103.示例23.根据示例21至22中的任意一个所述的非暂时性计算机可读介质,其中从视觉惯性运动跟踪器、深度传感器、双像素深度估计器、运动立体深度估计器、稀疏主动深度估计器和/或预先计算的稀疏图中的至少一个获得所述深度估计。
104.示例24.根据示例21至23中的任意一个所述的非暂时性计算机可读介质,其中所
述可执行指令包括指令,当由所述至少一个处理器执行时,所述指令使所述至少一个处理器:由所述神经网络基于所述图像数据生成表面法线,其中使用所述表面法线和所述深度估计来将所述第一深度图变换为所述第二深度图。
105.图8示出可以与本文描述的技术一起使用的示例计算机设备800和示例移动计算机设备850的示例。计算设备800包括处理器802、存储器804、存储设备806、连接到存储器804和高速扩展端口810的高速接口808,以及连接到低速总线814和存储设备806的低速接口812。部件802、804、806、808、810和812中的每一个都使用各种总线互连,并且可以被安装在通用主板上或视情况以其他方式安装。处理器802可以处理用于在计算设备800内执行的指令,包括存储在存储器804或存储设备806中的指令以在外部输入/输出设备——诸如耦合到高速接口808的显示器816——上显示用于gui的图形信息。在其他实施方式中,可以适当地使用多个处理器和/或多个总线,以及多个存储器和存储器类型。另外,可以连接多个计算设备800,每个设备提供部分必要的操作(例如,作为服务器库、一组刀片式服务器或多处理器系统)。
106.存储器804存储在计算设备800内的信息。在一种实施方式中,存储器804是一个或多个易失性存储单元。在另一种实施方式中,存储器804是一个或多个非易失性存储单元。存储器804也可以是另一种形式的计算机可读介质,诸如磁盘或光盘。
107.存储设备806能够为计算设备800提供大容量存储。在一种实施方式中,存储设备806可以是或包含计算机可读介质,诸如软盘设备、硬盘设备、光盘设备、或磁带设备、闪存或其他类似的固态存储设备、或设备的阵列,包括存储区域网络或其他配置中的设备。计算机程序产品可以有形地体现在信息载体中。计算机程序产品还可以包含在被执行时执行诸如上面描述的那些方法的一种或多种方法的指令。信息载体是计算机可读介质或机器可读介质,诸如存储器804、存储设备806或处理器802上的存储器。
108.高速控制器808管理计算设备800的带宽密集型操作,而低速控制器812管理较低带宽密集型操作。这种功能分配仅是示例性的。在一种实施方式中,高速控制器808被耦合到存储器804、显示器816(例如,通过图形处理器或加速器),并且被耦合到可以接受各种扩展卡(未示出)的高速扩展端口810。在实施方式中,低速控制器812被耦合到存储设备806和低速扩展端口814。可以包括各种通信端口(例如,usb、蓝牙、以太网、无线以太网)的低速扩展端口可以例如通过网络适配器被耦合到一个或多个输入/输出设备,诸如键盘、指向设备、扫描仪或诸如交换机或路由器的联网设备。
109.如图所示,可以以多种不同的形式实现计算设备800。例如,它可以被实现为标准服务器820,或者被多次实现在这种服务器的组中。它也可以被实现为机架服务器系统824的一部分。此外,它还可以在诸如膝上型计算机822的个人计算机中实现。替代地,来自计算设备800的部件可以与移动设备(未示出)中的其他部件进行组合,诸如设备850。每个这种设备可以包含计算设备800、850中的一个或多个,并且整个系统可以由彼此通信的多个计算设备800、850组成。
110.除其他部件之外,计算设备850包括处理器852、存储器864、诸如显示器854的输入/输出设备、通信接口866和收发器868。还可以向设备850提供存储设备,诸如微驱动器或其他设备,以提供附加的存储。部件850、852、864、854、866和868中的每个部件均使用各种总线互连,并且多个部件可以被安装在通用主板上或视情况以其他方式安装。
111.处理器852可以执行计算设备850内的指令,包括存储在存储器864中的指令。处理器可以被实现为包括单独的以及多个模拟和数字处理器的芯片的芯片组。例如,处理器可以提供设备850的其他部件的协调,诸如用户界面的控制、设备850运行的应用以及设备850的无线通信。
112.处理器852可以通过控制接口858和耦合到显示器854的显示器接口856与用户进行通信。例如,显示器854可以是tft lcd(薄膜晶体管液晶显示器)或者oled(有机发光二极管)显示器,或其他适当的显示技术。显示器接口856可以包括用于驱动显示器854向用户呈现图形和其他信息的适当电路。控制接口858可以从用户接收命令并且将其转换以提交给处理器852。此外,可以提供与处理器852通信的外部接口862,以实现设备850与其他设备的近区通信。例如,外部接口862可以在一些实施方式中提供有线通信,或者在其他实施方式中提供无线通信,并且还可以使用多个接口。
113.存储器864存储在计算设备850内的信息。存储器864可以被实现为一个或多个计算机可读介质、一个或多个易失性存储单元或者一个或多个非易失性存储单元中的一种或多种。还可以提供扩展存储器874并且通过扩展接口872将其连接到设备850,例如,扩展接口872可以包括simm(单列直插存储器模块)卡接口。这种扩展存储器874可以为设备850提供额外的存储空间,或者也可以为设备850存储应用或其他信息。具体地,扩展存储器874可以包括用于执行或补充上述过程的指令,并且还可以包括安全信息。因此,例如,扩展存储器874可以被提供为用于设备850的安全模块,并且可以用允许安全使用设备850的指令进行编程。此外,可以经由simm卡,诸如以不可入侵的方式将识别信息放置在simm卡上来提供安全应用以及附加信息。
114.例如,存储器可以包括闪存和/或nvram存储器,如下所述。在一种实施方式中,计算机程序产品有形地体现在信息载体中。计算机程序产品包含在被执行时执行诸如上述的那些方法的一种或多种方法的指令。信息载体是诸如存储器864、扩展存储器874或处理器852上的存储器的计算机可读介质或机器可读介质,例如,其可以通过收发器868或外部接口862被接收。
115.设备850可以通过在必要时可以包括数字信号处理电路的通信接口866进行无线通信。通信接口866可以提供各种模式或协议下的通信,诸如gsm语音呼叫、sms、ems或mms消息传递、cdma、tdma、pdc、wcdma、cdma2000或gprs等等。例如,这种通信可以通过射频收发器868而发生。此外,可以进行短程通信,诸如使用蓝牙、wi-fi或其他这种收发器(未示出)。此外,gps(全球定位系统)接收器模块870可以向设备850提供附加的导航和与位置有关的无线数据,其可以被设备850上运行的应用适当地使用。
116.设备850还可以使用可以从用户接收口头信息并将其转换为可用的数字信息的音频编解码器860在听觉上进行通信。音频编解码器860可以同样地为用户生成可听声音,诸如通过扬声器,例如在设备850的听筒中。这种声音可以包括来自语音电话呼叫的声音,可以包括录制的声音(例如,语音消息、音乐文件等),并且还可以包括由在设备850上操作的应用生成的声音。
117.如图所示,计算设备850可以以多种不同的形式实现。例如,它可以实现为蜂窝电话880。它也可以被实现为智能电话882、个人数字助理或另一类似的移动设备的一部分。
118.可以在数字电子电路、集成电路、专门设计的asic(专用集成电路)、计算机硬件、
固件、软件和/或其组合中实现本文描述的系统和技术的各种实施方式。这些各种实施方式可以包括在一个或多个计算机程序中的实施方式,该程序可以在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用的或通用的,其被耦合以从存储系统、至少一个输入设备和至少一个输出设备接收数据和指令,并且被耦合以向存储系统、至少一个输入设备和至少一个输出设备传送数据和指令。另外,术语“模块”可以包括软件和/或硬件。
119.这些计算机程序(也被称为程序、软件、软件应用或代码)包括用于可编程处理器的机器指令,并且可以以高级过程和/或面向对象的编程语言和/或汇编/机器语言来实现。如本文所使用的,术语“机器可读介质”、“计算机可读介质”是指用于向可编程处理器提供机器指令和/或数据的任意计算机程序产品、装置和/或设备(例如,磁盘、光盘、存储器、可编程逻辑设备(pld)),包括接收机器指令作为机器可读信号的机器可读介质。术语“机器可读信号”是指用于向可编程处理器提供机器指令和/或数据的任意信号。
120.为了提供与用户的交互,本文描述的系统和技术可以在计算机上实现,所述计算机具有显示器设备(例如,crt(阴极射线管)或lcd(液晶显示器)监视器)以向用户显示信息以及具有用户可以通过其向计算机提供输入的键盘和指向设备(例如鼠标或轨迹球)。其他种类的设备也可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈(例如,视觉反馈、听觉反馈或触觉反馈);并且可以以任何形式接收来自用户的输入,包括声音、语音或触觉输入。
121.本文描述的系统和技术可以在计算系统中实现,所述计算系统包括后端部件(例如,作为数据服务器),或包括中间件部件(例如,应用服务器)或包括前端部件(例如,具有用户可以通过其与本文描述的系统和技术的实施方式进行交互的图形用户界面或web浏览器的客户端计算机),或这种后端、中间件或前端部件的任意组合。系统的部件可以通过数字数据通信的任何形式或介质(例如,通信网络)互连。通信网络的示例包括局域网(“lan”)、广域网(“wan”)和互联网。
122.计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离并且典型地通过通信网络进行交互。客户端和服务器之间的关系是通过在各自计算机上运行并且彼此具有客户端-服务器关系的计算机程序产生的。
123.在一些实施方式中,图8中描绘的计算设备可以包括与虚拟现实(vr头戴式耳机890)对接的传感器。例如,包括在图8中描绘的计算设备850或其他计算设备上的一个或多个传感器,可以向vr头戴式耳机890提供输入,或者通常,可以向vr空间提供输入。传感器可以包括但不限于触摸屏、加速度计、陀螺仪、压力传感器、生物特征传感器、温度传感器、湿度传感器和环境光传感器。计算设备850可以使用传感器确定vr空间中计算设备的绝对位置和/或检测到的旋转,然后可以将其用作vr空间的输入。例如,计算设备850可以作为诸如控制器、激光指示器、键盘、武器等的虚拟对象被并入vr空间。用户对计算设备/虚拟对象的安置当被并入vr空间时可以允许用户安置计算设备来以某种方式在vr空间中观看虚拟对象。例如,如果虚拟对象表示激光指示器,用户可以像计算设备是实际的激光指示器一样操纵计算设备。用户可以左右、上下、圆圈等方式移动计算设备并且以与使用激光指示器类似的方式使用设备。
124.在一些实施方式中,包括在或连接到计算设备850上的一个或多个输入设备可以
被用作vr空间的输入。输入设备可以包括但不限于触摸屏、键盘、一个或多个按钮、轨迹板、触摸板、指向设备、鼠标、轨迹球、操纵杆、相机、麦克风、耳机或具有输入功能的耳塞、游戏控制器或其他可连接的输入设备。当计算设备被合并到vr空间中时,与计算设备850上包括的输入设备进行交互的用户可能使特定动作在vr空间中发生。
125.在一些实施方式中,计算设备850的触摸屏可以被渲染为vr空间中的触摸板。用户可以与计算设备850的触摸屏进行交互。例如,在vr头戴式耳机890中,将交互渲染为在vr空间中所渲染的触摸板上的移动。所渲染的移动可以控制vr空间中的对象。
126.在一些实施方式中,计算设备850上包括的一个或多个输出设备可以向vr空间中的vr头戴式耳机890的用户提供输出和/或反馈。输出和反馈可以是视觉的、触觉的或音频的。输出和/或反馈可以包括但不限于振动、一个或多个灯或频闪灯的打开及关闭或闪烁和/或闪光、发出警报、播放铃声、播放歌曲以及播放音频文件。输出设备可以包括但不限于振动马达、振动线圈、压电设备、静电设备、发光二极管(led)、频闪灯和扬声器。
127.在一些实施方式中,计算设备850可以表现为在计算机生成的3d环境中的另一个对象。用户与计算设备850的交互(例如,旋转、摇动、触摸触摸屏、在触摸屏上滑动手指)可以被解释为与vr空间中的对象的交互。在vr空间中的激光指示器的示例中,计算设备850表现为在计算机生成的3d环境中的虚拟激光指示器。当用户操纵计算设备850时,vr空间中的用户看到激光指示器的移动。用户在计算设备850或vr头戴式耳机890上的vr空间中从与计算设备850的交互中接收反馈。
128.在一些实施方式中,除了计算设备之外,还可以在计算机生成的3d环境中渲染一个或多个输入设备(例如,鼠标,键盘)。渲染的输入设备(例如,渲染的鼠标、渲染的键盘)可以在vr空间中渲染时使用,以控制vr空间中的对象。
129.计算设备800旨在表示各种形式的数字计算机,诸如膝上型计算机、台式计算机、工作站、个人数字助理、服务器、刀片服务器、大型机和其他适当的计算机。计算设备850旨在表示各种形式的移动设备,诸如个人数字助理、蜂窝电话、智能电话和其他类似的计算设备。本文所示的部件,它们的连接和关系以及它们的功能仅是示例性的,并不意味着限制本文中描述和/或要求保护的发明的实施方式。
130.已经描述了多个实施例。然而,将理解的是在不脱离本说明书的精神和范围的情况下可以进行各种修改。
131.此外,附图中描绘的逻辑流程不需要所示的特定顺序、或连续顺序来实现期望的结果。此外,可以从所述的流程中提供其他步骤或者去除步骤,并且可以向所描述的系统中添加其他部件或从中移除其他部件。因此,其他实施例在所附权利要求的范围内。