HK1171281B - 使用深度圖的實時相機跟蹤 - Google Patents
使用深度圖的實時相機跟蹤 Download PDFInfo
- Publication number
- HK1171281B HK1171281B HK12112062.4A HK12112062A HK1171281B HK 1171281 B HK1171281 B HK 1171281B HK 12112062 A HK12112062 A HK 12112062A HK 1171281 B HK1171281 B HK 1171281B
- Authority
- HK
- Hong Kong
- Prior art keywords
- depth
- camera
- depth map
- mobile
- frame
- Prior art date
Links
Description
技术领域
本发明涉及图像技术,尤其涉及相机跟踪技术。
背景技术
对于许多应用,能够随相机在环境中移动时跟踪该相机的定向和位置是有价值的。例如,在机器人技术、车辆导航、计算机游戏应用、医学应用及其他问题领域。以前的方法已涉及使用由移动相机所捕捉的彩色图像,在那些图像中标识诸如线和边缘等特征,以及在相机所捕捉的彩色图像序列中捕捉该信息以尝试并评估相对的相机位置。现有的方案在准确性、稳健性和速度上受到限制。然而,对于许多应用,需要实时地进行准确的相机跟踪,例如以使得机器人可以成功地在其环境中四处移动。
以下描述的各实施例不限于解决已知相机跟踪过程的缺点中的任一个或全部的实现。
发明内容
下面呈现了本发明的简要概述,以便向读者提供基本理解。本发明内容不是本发明的详尽概述,并且不标识本发明的关键/重要元素,也不描述本发明的范围。其唯一的目的是以简化形式呈现此处所公开的精选概念,作为稍后呈现的更详细的描述的序言。
描述了使用深度图的实时相机跟踪。在一实施例中,深度图的帧由移动深度相机按每秒超过20帧来捕捉,且被用于实时地动态更新指定移动深度相机已经如何移动的一组配准参数。在各示例中,实时相机跟踪输出被用于计算机游戏应用和机器人技术。在一示例中,迭代最近点过程与投影数据关联以及点到面的误差度量一起使用,以便计算经更新的配准参数。在一示例中,图形处理单元(GPU)实现被用于实时地优化误差度量。在某些实施例中,使用移动相机环境的密集3D模型。
通过结合附图参考以下详细描述,可更易于领会并更好地理解许多附带特征。
附图说明
根据附图阅读以下详细描述,将更好地理解本发明,在附图中:
图1是房间中持有移动深度相机的人的示意图,该移动深度相机可用于实时相机跟踪并且可任选地还产生该房间的密集3D模型或图;
图2是持有移动深度相机的人正在探索的建筑物某层的平面视图;
图3是连接到实时相机跟踪系统、密集3D模型形成系统、以及游戏系统的移动深度相机的示意图;
图4是示例帧对齐引擎的示意图;
图5是用于相机跟踪的迭代过程的流程图;
图6是图5的迭代过程中用于计算相应点的对的部分的更多细节的流程图;
图7是用于使用来自密集3D模型的预测来计算相应点的对的过程的流程图;
图8是用于计算和最小化供图5的迭代过程中使用的点到面的误差度量的过程的流程图;
图9是在诸如图形处理单元(GPU)之类的并行计算单元处的过程的流程图;
图10示出可在其中实现实时相机跟踪系统的各实施例的示例性基于计算的设备。
在各个附图中使用相同的附图标记来指代相同的部件。
具体实施方式
下面结合附图提供的具体实施方式旨在作为本发明示例的描述,并不旨在表示可以构建或使用本发明示例的唯一形式。本描述阐述了本发明示例的功能,以及用于构建和操作本发明示例的步骤的序列。然而,可以通过不同的示例来实现相同或等效功能和序列。
尽管本发明的各示例在本文中被描述且示出为使用从发射和捕捉红外光的移动深度相机获得的深度图像在实时相机跟踪系统中实现的,然而所描述的系统是作为示例而非限制来提供的。本领域的技术人员将理解,本发明的各示例适于在各种不同类型的实时相机跟踪系统中应用,包括但不限于使用从立体相机获得的深度信息的系统和使用通过发射和捕捉其他类型的电磁辐射所获得的深度信息的系统。
术语“图像元素”在本文中用于指代像素、像素组、体素、体素组、或图像的其他更高级别的组成部分。
术语“密集3D模型”在本文中用于指代包括对象和表面的三维场景的表示,其中该表示包括关于该场景的图像元素的细节。相反,非密集3D模型可包括对象的基于帧的表示。在一示例中,来自传入深度图的全部或许多点可用于描述环境中的表面,且该描述形成密集3D模型。稀疏模型会仅取这些点的子集来使计算加速并减少存储器覆盖区域。
图1是站在一房间中并持有移动深度相机102的人100的示意图,在本示例中移动深度相机102还结合有投影仪,该投影仪将猫108的图像投影到该房间中。该房间包含各种对象106,如椅子、门、窗、植物、灯和另一个人104。这些对象106中的许多对象是静态的,但这些对象中的一些对象(诸如人104)可以移动。当人在该房间内四处移动时,该移动深度相机捕捉图像,这些图像由实时相机跟踪系统112用来监视该相机在该房间中的位置和方向。实时相机跟踪系统112可以与移动深度相机102集成,或可以处于另一位置,只要它能够(直接或间接)接收来自移动深度相机102的通信。例如,实时相机跟踪系统112可以在房间中的个人计算机、专用计算机游戏装置、或其他计算设备处提供,并与移动深度相机102进行无线通信。在其他实施例中,实时相机跟踪系统112可以处于建筑物中的别处或处于使用任何合适类型的通信网络与移动深度相机102进行通信的另一远程位置。移动深度相机102还与该环境的密集3D模型110(在此情况下是该房间的3D模型)或该环境的另一类型的图进行通信。例如,当人在房间中四处移动时,移动深度相机102捕捉到的图像被用来形成和构建环境的密集3D模型。实时相机跟踪系统112可跟踪相机相对于环境110的3D模型或图的位置。实时相机跟踪系统112的输出和密集3D模型或图110可由游戏系统或其他应用来使用,但这不是必要的。例如,移动深度相机102处的投影仪可被安排成取决于实时相机跟踪系统112的输出和3D模型110来投影图像。
图2是建筑物的楼层200的平面图。持有移动深度相机204的人202正如虚线箭头208所示在该层四处移动。此人沿走廊206走过各个房间和家具210。实时相机跟踪系统112能够随移动深度相机204移动来跟踪它的位置,并且该层的3D模型或图被形成。人202不必携带移动深度相机204。在其他示例中,移动深度相机204被安装在机器人或运载工具上。这也适用于图1的示例。
图3是与实时相机跟踪器316、密集模型形成系统324和可任选的游戏系统332一起使用的移动环境传感器300的示意图。移动环境传感器300包括被安排成捕捉场景的深度图像序列的深度相机302。每一深度图像或深度图帧314包括二维图像,在该二维图像中每一图像元素包括诸如从相机到所捕捉的场景中的产生了该图像元素的对象的长度或距离等深度值。这一深度值可以是以指定测量单位(如米或厘米)来提供的绝对值,或可以是相对深度值。在某些情况下,深度值可以是诸如在其中立体深度信息为可用的情形中的差别值。在每一捕捉到的深度图像中,存在大约300000或更多个图像元素,每一图像元素具有深度值。帧速率足够高而使得深度图像能够被用于工作机器人、计算机游戏、或其他应用。例如,每秒至少20帧。
深度信息可以使用任何合适的技术来获得,包括但不限于飞行时间、结构化光、立体图像。在一些示例中,深度相机能够将深度信息组织为与沿该深度相机的视线延伸的Z轴垂直的Z层。
移动环境传感器300还可包括被安排成以可由深度相机302查明深度信息的方式来照亮该场景的发光器304。例如,在深度相机302是红外(IR)飞行时间相机的情况下,发光器304将IR光发射到该场景上,并且深度相机302被安排成检测从该场景中的一个或多个对象的表面反向散射的光。在一些示例中,可以从发光器304发出脉冲红外光,使得外出光脉冲与对应的传入光脉冲之间的时间可由深度相机来检测和测量,并被用来确定从环境传感器300到场景中的对象上的位置的物理距离。另外,在一些示例中,可将来自发光器304的出射光波的相位与入射光波的相位在深度相机302处进行比较来确定相移。随后经由包括例如快门式光脉冲成像的各种技术来分析反射光束随时间的强度来将相移用于确定从移动环境传感器300到各对象上的位置的物理距离。
在另一示例中,移动环境传感器300可使用结构化光来捕捉深度信息。在这种技术中,可使用发光器304将图案化光(例如,显示为诸如网格或条形图案等已知图案的光)投影到场景上。在到达场景中的对象的表面之后,该图案变形。深度相机302捕捉图案的这种变形并对其进行分析来确定从深度相机302到场景中的对象的绝对或相对距离。在某些情况下,移动环境传感器300发射电磁辐射的空间变化和/或时间变化的图案,且该图案是校准的,使得当图像由深度相机302接收时,它能够针对图案的数据库来执行图案匹配,并由此计算深度信息。这可被认为是投影到环境的3D图案的点(dot),且当存在图案被反射的表面的任何时候,深度相机302可检测该表面、并计算该表面距离深度相机302的距离。
在另一示例中,深度相机302包括一对立体相机,以便获得并解析视觉立体数据来生成相对深度信息。在这种情况下,发光器304可被用来照亮场景或可被省略。
在一些示例中,除深度相机302之外,移动环境传感器300包括被称为RGB相机306的彩色视频相机。RGB相机306被安排成在可见光频率处捕捉场景的图像序列。
移动环境传感器300可包括定向传感器308,诸如惯性测量单元(IMU)、加速计、陀螺仪、指南针、或其他定向传感器308。然而,使用定向传感器不是必要的。移动环境传感器300可包括诸如GPS等位置跟踪设备,但这不是必须的。
移动环境传感器可包括上面参考图1提到的投影仪312,但这不是必要的。
移动环境传感器还包括一个或多个处理器、存储器、以及通信基础结构,如下文更详细地描述的。
移动环境传感器可以在外壳中提供,该外壳的形状和大小制定成由用户手持或由用户佩戴。在其他示例中,移动环境传感器的大小和形状被制定成被包括或安装在运载工具、玩具、或其他可移动装置上。
移动环境传感器300连接到实时跟踪器316。这一连接可以是物理有线连接或可以使用无线通信。在一些示例中,移动环境传感器300通过诸如因特网等一个或多个通信网络间接连接到实时跟踪器。
实时跟踪器316使用控制一个或多个图形处理单元(GPU)的通用微处理器来用计算机实现。它包括帧对齐引擎318并且可任选地包括环闭合引擎320和重新定位引擎322。实时跟踪器316从深度相机302获得深度图帧314,并还可任选地从移动环境传感器300获得输入,并获得可任选地图数据334以及来自游戏系统332的可任选数据。实时跟踪器可用于使深度图帧对齐,以产生深度相机302的六自由度姿势估计的实时系列328。它还可以产生变换参数(也称为配准参数)以用于深度图帧的对之间变换。在一些示例中,实时跟踪器对来自深度相机的各对深度图帧314进行操作。在其他示例中,实时跟踪器216获取单个深度图帧314并将它与该场景的密集3D模型326对齐而非与另一深度图帧314对齐。在某些示例中,实时跟踪器还使用来自RGB相机306的彩色视频输入,但这不是必需的。
例如,在一些实施例中,实时跟踪器316向密集3D模型形成系统324提供输出,密集3D模型形成系统324使用该信息以及深度图帧314来形成并存储移动环境传感器300正在其中移动的场景或环境的密集3D模型。例如,在图1的情况下,3D模型将是房间中的表面和对象的3D模型。在图2的情况下,3D模型将是建筑物的该层的3D模型。密集3D模型326可被存储在GPU存储器中,或以其他方式存储。
移动环境传感器300可结合游戏系统332来使用,游戏系统332连接到显示器330。例如,游戏可以是高尔夫游戏、拳击游戏、赛车游戏、或其他类型的计算机游戏。来自游戏系统332的数据(如与游戏相关的游戏状态或元数据)也可被提供给实时跟踪器316。而且,来自实时跟踪器的信息可以被游戏系统332用来影响游戏的过程。来自3D模型的信息也可以被游戏系统332用来影响游戏的过程。
可任选地,图数据334对实时跟踪器316是可用的。例如,这可以是架构师对该环境(例如,房间或建筑物的层)的绘图、该环境中已知的地标的位置、可从另一源获得的该环境的图。
实时跟踪器的帧对齐引擎318被安排成将各对深度图帧对齐,或将一深度图帧与来自密集3D模型的一深度图帧的估计对齐。它使用迭代过程,该迭代过程是用一个或多个图形处理单元来实现的,以使帧对齐引擎实时操作。下面参考图4给出关于帧对齐引擎的更多细节。环闭合引擎被安排成检测移动环境传感器何时按照环移动,使得当前深度图像帧中描绘的场景至少部分与不是紧邻的在先深度帧的先前深度帧的场景相重叠。例如,这可在用户在图2中的建筑物的整层四处走动并再次到达起始点时发生。这也可以在用户在房间四处移动至某家具背后并再次出来到原始起始位置或接近该原始起始位置时发生。
重新定位引擎322被安排成处理以下情况:实时跟踪器失去移动环境传感器300的当前位置并且重新定位或再次找出当前位置。
在一个示例中,实时跟踪器316和/或密集3D模型形成系统324所执行的处理可以离开移动环境捕捉设备300的位置而远程执行。例如,移动环境捕捉设备300可被连接到(或包括)具有相对低处理能力并且通过通信网络将深度图像流传送到服务器的计算设备。该服务器具有相对高的处理能力,并且执行实时跟踪器316和/或密集3D模型形成系统324的在计算上复杂的任务。该服务器可以逐帧返回密集重构的已渲染图像以向用户提供交互体验,并且在模型完成时返回最终密集3D重构以供后续本地使用(例如,在游戏中使用)。这样的安排避免了用户对拥有高能力本地计算设备的需要。
在一个示例中,来自移动环境传感器处的RGB相机的输入可用于补充来自深度相机的信息。这在其中深度没有提供足够信息供跟踪的情形中是有用的,诸如当相机正在具有太少深度特征的环境中移动时。如果在该环境中存在视觉特征,则这些视觉特征可被RGB相机检测且可用于启用要提供的同时本地化和映射。
图4是图3的帧对齐引擎318的更详细的示意图。帧对齐引擎408是在具有一个或多个GPU 416或其他并行计算单元的计算设备处所实现的计算机。例如,并行计算单元可以是向量处理器,单指令多数据(SIMD)体系结构,图形处理单元、或其他并行计算设备。它包括迭代最近点过程410和可任选的平面提取组件412。迭代最近点过程使用投影数据关联和点到面的误差度量,如下面更详细地描述的。该帧对齐引擎从深度相机接收当前深度图400。这也被称为目的地深度图。在一些示例中,它还从深度相机接收源深度图402,源深度图402是该先前的深度图帧。在其他示例中,该帧对齐引擎获取该源深度图的密集表面模型估计406。帧对齐引擎的输出是变换的一组配准参数,以将当前帧和源帧(即帧估计)对齐。在一些示例中,这些配准参数是作为SE3矩阵形式的六自由度(6DOF)姿势估计来提供的,该SE3矩阵描述了深度相机302相对于真实世界坐标的旋转和平移。此变换矩阵可以被更加正式地表示为:
其中Tk是深度图像帧k的变换矩阵,Rk是帧k的相机旋转,tk是帧k处的相机平移,而欧几里德群。相机空间中的坐标(即,来自相机角度)可以通过乘以这个变换矩阵被映射到真实世界坐标。
然而,配准参数可以以任何适当的形式提供。这些配准参数被实时跟踪器316用来产生该深度相机的6自由度姿势估计的实时系列。
图5是帧对齐引擎处的示例迭代过程的流程图。形成(500)配准参数的初始估计。这些是用于将当前帧和源帧对齐的变换的配准参数。这一初始估计是用任何合适的方式形成的。例如,以下信息源中的一个或多个可被用来形成初始估计:游戏状态、游戏元数据、地图数据、RGB相机输出、定向传感器输出、以及GPS数据。在另一示例中,通过预测其中该相机正在使用关于该相机的先前运动路径的信息处来形成初始估计。例如,可假定该相机具有恒定的速度或恒定的加速度。可以使用相机从时刻0到时刻t-1的运动路径来估计在时刻t相机将在何处,并因此获得配准参数的估计。
使用初始估计,计算(502)当前帧和源帧(深度图或估计的深度图)之间的各对相应点。一对相应点是来自来自一个深度图的一点和来自另一深度图的一点,其中那些点被估计为来自场景中的同一真实世界点。术语“点”在此处被用于指示像素、或一组或一小块相邻像素。由于点的可能组合的很大的数量,这个对应性问题是非常困难的。通过标识每个图像中的诸如线、边缘、角落等形状然后尝试在各对图像间匹配那些形状,前面的使用彩色或灰度图像的方法已经解决了这个问题。与之相对,此处描述的实施例标识相应的点而不需要在深度图中寻找形状。下面参考图6给出了关于如何计算相应点的更多细节。计算(504)配准参数的经更新的估计,其对被应用到所计算的相应点的误差度量进行优化。
进行检查以评估是否达到收敛(506)。如果达到,则输出经更新的估计和配准参数中的很少的改变或没有改变(508)。如果没有达到,则该迭代过程重复,如图5中所指示的。
参考图6,现在给出有关如何计算各对相应点的更多细节。在一些实施例中,从当前深度图和源深度图中的任何一个或两个采集(600)样本点,并且使用那些样本点作为从中寻找各对相应点的候选。采样可以通过随机地选择所述点的指定比例而实现。在另一实施例中,用将这些点的表面法线计入的方式来实现采样。例如,对于每个点计算出表面法线(如下面更详细地描述的),以及创建具有对于不同范围的表面法线值的多个柱的直方图。如此进行采样:实现跨越各柱的均匀采样。
通过使用采样,实现了减少计算成本的益处。然而,风险是当使用采样时减少该过程的精确度和稳健性。这是因为样本点可能不提供对从其采集样本的深度图的良好指示。例如,样本可能使得该过程找到该过程标识为解但是事实上却表示局部最优解而不是全局最优解的一组相应点。
如上所述,没有必要使用任何采样。当使用所有可用点时,该过程也是可行的,并且给出了很好的结果。在此情况下,此处描述的并行处理实现允许该过程对于每个深度图中的所有点实时地操作,这些点可能多达300000个或更多。在下面参考图6描述的示例中,使用采样描述该过程。然而,图6的过程还能够在不执行采样时应用。
如图6所指示的,计算(602)样本点(或者在不进行采样的情况下的每个可用点)的表面法线。例如,对于给定点,通过找出深度图中的两个(或更多个)最接近的邻居点并计算包括这些邻居点及该点本身的表面小块来实现这一点。随后计算该表面小块在该点的位置处的法线。
然后接下来是寻找(604)点的相应对的过程现在在源深度图和当前深度图可用而不使用密集3D模型的情况下描述这一点。对于每个从源深度图采样的源点,从与该源深度图相关联的相机位置投影(606)光线,该光线穿过被采样的源点并投影到目的地深度图中的目的地点上。在一些情况下,目的地点可以沿着所投影的光线在被采样的源点前方。这一投影过程可被称为“投影数据关联”。然后在目的地点周围(且包括目的地点)搜索(608)候选相应点。例如,该搜索针对具有与所采样的原点的表面法线兼容、且在目的地点的指定欧氏距离(Euclidean distance)内的表面法线的那些点。表面法线在它们位于彼此的指定范围内的情况下被认为是兼容的。例如,这一指定的范围和欧式距离可以是用户可配置的和/或使用与所考虑的特定应用条件有关的经验数据来设置的。
作为此搜索的结果,找到了一个或多个候选的相应点。从那些候选相应点中选择(610)单一点来与源点形成一对。这种选择是以距离度量为基础做出的。例如,计算源点和所述候选相应点中的每个点之间的欧几里德距离。然后选择给出最小欧几里德距离的那对点。然后对于所采样的源点中的每一个点,或者在不进行采样的情况下对于源深度图中的可用点中的每一个点,重复框604的过程。
在一些实施例中,向各对相应点中的每一对分配(612)权重。例如,可以使用来自其他源(诸如RGB相机或其他传感器)的信息来分配权重。在一示例中,对于各对相应点中的每一对,计算与深度相机的测量特征有关的权重并将其存储,测量特征诸如径向透镜畸变和/或取决于深度的误差。在另一示例中,包括位于使用边缘检测算法在深度图中检测出的边缘处的一点的各对被给予比其他各对更高的权重。这些权重可在应用误差度量过程期间使用,以便改进结果的质量。例如,与取决于深度的误差有关的权重使得高深度值要被考虑,这些高深度值有可能由于缺少精度而波动很多。
在一些实施例中,拒绝(614)包括在深度图的边界上或边界附近的点的对。这有助于避免两个深度图间只是部分重叠的情况下的误差。还可以使用其他准则来拒绝对。例如,在一些实施例中,执行如上面参考图4的组件410所提到的平面提取。在该情况下,平面上的各对可被拒绝,以便防止跟踪器偏移一较大的平面,且如此忽略深度图内较小但唯一的部分。
在一些实施例中,从深度相机所正在捕捉的场景的密集3D模型中估计或预测源深度图。在此情况下遵循图7的方法。该场景的密集3D模型包括存储在并行计算单元处的存储器中的场景的3D表面表示。例如,该密集3D模型可以按照片-行-列的次序被存储为线性阵列(下面给出了关于这一点的更多细节),可选地具有一些填充以使得片和行对齐某个存储器块大小。可以使用其他存储该3D模型的方式,诸如八叉树、粗略-精细表示、基于网格的表示(诸如多边形网格)。
现在给出密集3D模型被按照“片-行-列”的次序存储在诸如GPU之类的并行计算单元上的情况的更多细节。在此情况下,该模型可以被存储为用于表示3D体的存储器位置的线性阵列。通过使用线性倾斜存储器(linear pitchedmemory)将每个体素映射到存储器阵列索引来实现这一点,该线性倾斜存储器提供对存储在该并行计算单元存储器上的数据的快速并行访问。
如上所述,通过评估(700)到样本点的相邻点,计算当前深度图的样本点的表面法线。对于所预测的源深度图,对于每个所预测的样本点,从该密集3D模型计算(702)表面法线预测和表面位置预测。所预测的样本点是来自该密集3D模型的与来自当前深度图的样本点在同一像素位置处的点。这是通过将光线投射到密集表面模型的体积中完成的。该光线是从与当前深度图相关联的所估计的相机位置和定向投影的,并且穿过该3D模型的面上的与当前深度图中的样本点相对应的点而进入该3D模型。这在该3D模型被存储为体表示的3D模型的情况下适用。在使用基于网格的表示存储该3D模型的情形中,则此表面首先被投影以形成虚拟深度图像表示。然后该光线可被投影到该虚拟深度图像表示中。通过沿着该光线迈进并评估表面密度函数以找到第一次从正到负的零跨越而沿着该光线找到第一可见表面。沿着该光线从表面密度函数的交叉点的估计找到相关联的子像素世界点。在一个示例中,给出三线性采样的点在所检测的零跨越的任一侧上以找到零出现处的子像素世界点,使用简单线性内插可以计算出沿光线的表面交叉点。该子像素世界点被当作预测的表面位置。为了找到此位置处的所预测的表面法线,使用三线性内插来寻找该表面密度函数梯度的有限差别。计算表面法线预测和表面位置预测702的过程可以在并行计算单元处实现,其中每个光线被并行处置。
对于每个所预测的样本点(从该密集3D模型获得),遵循过程704来标识当前深度图中的相应点。这类似于图6的过程604。所预测的样本点被投影(706)到目的地深度图(当前深度图)中的目的地点上。然后在目的地点周围对与该目的地点具有兼容的表面法线的候选相应点进行搜索(708)。根据距离度量,从那些候选相应点中选择(610)一点。例如,如果一对点在彼此的指定欧几里德距离e1内并且该对点的表面法线之间的点积大于指定阈值e2,则该对点是兼容的。参数e1和e2可以是用户能够配置的,或者可以在制造阶段期间设置,由此根据经验校准该设备以在特定设定中使用。
在一些情况下,对各对相应点分配(712)权重。在一些实施例中,如果对包括在深度图边界上或在边界附近的至少一个点,则拒绝所述对714。在一示例中,对于各对相应点中的每一对,存储与深度相机的测量特征有关的权重。在应用误差度量以改善结果的质量的过程期间,可以使用这些权重。
一旦例如使用图6或图7的过程标识了各对相应点,则计算并最小化误差度量,而图5的迭代过程重复。
在一示例中,对于各对相应点计算(800)点到面的误差度量,并且优化此度量以获得经更新的配准参数。现在参考图8描述此过程的一示例。该过程被设计为使用至少一个GPU来实现,以获得如现在所述的实时处理。
计算点到面的误差度量可以被认为是计算802从每个源点到包含该目的地点并且与该目的地点的表面法线近似垂直地定向的平面的平方距离的和。该过程寻求优化此度量以寻找一组经更新的配准参数。求解这种类型的优化问题不是简单直接的,而是通常需要大量的计算资源,从而使得这种类型的过程对于实时应用来说难以实现。现在描述启用实时处理且使用至少一个GPU的示例实现。
各对相应点可被缩放和平移(804)。这可以改善优化过程的稳定性,但是不是必要的。
对于每一对相应点,在诸如GPU等并行计算单元上形成806包括多个同时等式的线性系统,以使用数值最小二乘优化来优化误差度量。在该并行处理单元上这些矩阵被简化为单个6乘6矩阵。因为帧率很高(例如,每秒20至40帧),则对于任何两个连续帧之间的角度(相机定向的变化)进行小角度逼近是可能的。即,因为帧率如此高,相机在帧间将只移动了很小的量。通过进行这种逼近,促进了系统的实时操作。
单个6乘6矩阵被传递给CPU 808并被求解以寻找经更新的配准参数。解被缩放并平移810回去以逆转804的缩放和平移步骤。检查812解的稳定性并且该过程输出经更新的配准参数814。
图9给出与怎样可在诸如GPU之类的并行计算单元上形成线性系统以及怎样可将线性系统简化为6乘6矩阵有关的更详细描述。在这一示例中,使用下面的点到面的误差度量,但是这不是必须的;也可以使用其他误差度量。
此误差度量可用于获得新的平移Tk。现在给出关于所使用的符号的更多细节。深度相机Dk的当前帧k提供了在图像域中的图像像素u=(x,y)处校准的深度测量d=Dk(u)。这些测量可以作为vk(u)=(xd,yd,d,1)被重新投影到相机的世界空间中(使用齐次坐标)。因为来自该深度传感器的每一帧是在规则网格上的表面测量,该系统还可以计算相应的法线矢量nk(u),这些法线矢量是通过相邻的重新投影的网格点之间的有限差异来估计的。SE3变换矩阵将时刻k处的相机坐标帧作为映射到全局帧g中。(法线矢量的等同映射是在全局坐标系中该3D模型在时刻k处的估计被表示为Mk,Mk可被存储在此处所述的体表示中。通过光线投射到先前帧的相机姿势Tk-1中,将传入的深度帧Dk对照完全3D的经重构的模型Mk-1的先前帧的估计来配准。这得到了所预测的图像或者等同地一组全局模型点和模型法线其中i∈s是相应索引集。上面用于点到平面误差度量的等式中的符号ρk表示时刻k处的相机和模型点之间的保护性数据关联映射。
由此,图9的方法是图8中所示过程的一示例实现,该过程形成GPU上每对相应点的线性系统且将这些线性系统简化806为单个6乘6矩阵908。在这一示例中,被帧对齐引擎408标识的每对相应点可以在GPU处被并行处理902。因此,对于每对相应点,计算线性系统的6乘6矩阵表达式904,该6乘6矩阵表达式给出点到面约束系统的算术表达式。通过作出小角度假设,变换T可使用由倾斜对称矩阵R≈[α,β,γ]×进行的3个向量的增量式旋转连同三元素平移向量t来参数化。通过将线性化的误差度量的一阶导数设为0,获得线性系统。该点到面约束系统表达了上面提到的点到面的误差度量的优化。本计算在GPU处对于每一对相应点并行进行。以此方式,将该误差度量并行地应用到所标识的相应点中的每一个。使用树减少过程或估算算术表达式的其他适当方法来估算每对点的算术表达式906。树减少过程是一种估算策略,通过该估算策略,算术表达式被表示为树结构,树的节点表示算术运算而树的叶节点表示值。通过将估算的结果沿着树的分支传递,按照根据树的结构的次序估算该表达式。来自各并行过程的误差度量优化过程的结果一起通过将每一对相应点的6乘6矩阵简化为单个6乘6矩阵,提供了6乘6矩阵输出908。
图10示出示例性的基于计算的设备1004的各组件,该基于计算的设备1004可以任何形式的计算设备和/或电子设备来实现、并且其中可实现实时相机跟踪器的实施例。
基于计算的设备1004包括被安排成接收并处理来自诸如用户输入设备(例如,捕捉设备1008、游戏控制器1005、键盘1006、鼠标1007)的一个或多个设备的输入的一个或多个输入接口1002。此用户输入可被用于控制软件应用或实时相机跟踪。例如,捕捉设备1008可以是被安排成捕捉场景的深度图的移动深度相机。基于计算的设备1004可以被安排成提供该捕捉设备1008的实时跟踪。
基于计算的设备1004还包括被安排成向可与计算设备1004分开或集成在一起的显示设备1009输出显示信息的输出接口1010。该显示信息可以提供图形用户界面。在一示例中,如果显示设备1009是触敏显示设备,则它还可担当用户输入设备。输出接口1010还向除显示设备之外的设备(例如,本地连接的打印设备)输出数据。
可以使用基于计算的设备1004能够访问的任何计算机可读介质来提供计算机可执行指令。计算机可读介质可以包括例如诸如存储器1012等计算机存储介质和通信介质。诸如存储器1012等计算机存储介质包括以用于存储如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括但不限于,RAM、ROM、EPROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光存储、磁带盒、磁带、磁盘存储或其他磁存储设备,或者可用于存储信息以供计算设备访问的任何其他非传输介质。
相反,通信介质可以以诸如载波或其他传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或者其他数据。如本文所定义的,计算机存储介质不包括通信介质。虽然在基于计算的设备1004中示出了计算机存储介质(存储器1012),然而应当理解,该存储可以是分布式的或位于远处并经由网络或其他通信链路(例如,使用通信接口1013)来访问。
基于计算的设备1004还包括一个或多个处理器1000,该一个或多个处理器可以是微处理器、控制器、或用于处理计算可执行指令以控制设备的操作以便提供实时相机跟踪的任何其他合适类型的处理器。在一些示例中,例如在使用片上系统架构的示例中,处理器1000可以包括一个或多个固定功能块(亦称加速器),这些块以硬件(而非软件或固件)来实现实时相机跟踪方法的一部分。
可以在基于计算的设备处提供包括操作系统1014或任何其他合适的平台软件的平台软件以使得能够在该设备上执行应用软件1016。可以在计算设备1004上执行的其他软件包括:帧对齐引擎1018(例如,参见图4到图8及上面的描述)、环闭合引擎1020、重新定位引擎1022。提供数据存储1024来存储数据,诸如先前接收的深度图、配准参数、用户可配置参数、其他参数、场景的密集3D模型、游戏状态信息、游戏元数据、地图数据和其他数据。
此处所使用的术语“计算机”是指带有处理能力使得它可以执行指令的任何设备。本领域的技术人员将认识到,这样的处理能力被集成到许多不同的设备中,因此,术语计算机憭包括PC、服务器、移动电话、个人数字助理和许多其他设备。
本文描述的方法可由有形存储介质上的机器可读形式的软件来执行,例如计算机程序的形式,该计算机程序包括在该程序在计算机上运行时适用于执行本文描述的任何方法的所有步骤的计算机程序代码装置并且其中该计算机程序可被包括在计算机可读介质上。有形(或非瞬态)存储介质的示例可包括盘(disk)、拇指型驱动器、存储器等,而不包括所传播的信号。软件可以适合于在并行处理器或串行处理器上执行,使得各方法步骤可以以任何适当的顺序实现,或同时实现。
这确认了软件可以是有价值的、可单独交易的商品。它旨在包含运行于或者控制“哑”或标准硬件以实现所需功能的软件。它还旨在包含例如用于设计硅芯片,或者用于配置通用可编程芯片的HDL(硬件描述语言)软件等“描述”或者定义硬件配置以实现期望功能的软件。
本领域的技术人员将认识到,用来存储程序指令的存储设备可以分布在网络上。例如,远程计算机可以存储被描述为软件的进程的示例。本地或终端计算机可以访问远程计算机并下载软件的一部分或全部以运行程序。可另选地,本地计算机可以根据需要下载软件的片段,或在本地终端上执行一些软件指令,并在远程计算机(或计算机网络)上执行另一些软件指令。本领域的技术人员还将认识到,通过利用本领域的技术人员已知的传统技术,软件指令的全部,或一部分可以通过诸如DSP、可编程逻辑阵列等等之类的专用电路来实现。
如本领域技术人员将清楚的,此处给出的任何范围或者设备值都可以被扩展或者改变而不失去所寻求的效果。
尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。相反,上述具体特征和动作是作为实现权利要求的示例形式公开的。
可以理解,上文所描述的优点可以涉及一个实施例或可以涉及多个实施例。各实施例不限于解决所述问题中的任一个或全部的实施例或具有所述好处和优点中的任一个或全部的实施例。进一步可以理解,对“一个”项目的引用是指那些项目中的一个或多个。
此处所描述的方法的步骤可以在适当的情况下以任何合适的顺序,或同时实现。另外,在不偏离此处所描述的主题的精神和范围的情况下,可以从任何一个方法中删除各单独的框。上文所描述的任何示例的各方面可以与所描述的其他示例中的任何示例的各方面相结合,以构成进一步的示例,而不会丢失寻求的效果。
此处使用了术语“包括”旨在包括已标识的方法的框或元素,但是这样的框或元素不构成排它性的列表,方法或设备可以包含额外的框或元素。
可以理解,上面对一较佳实施例的描述只是作为示例给出并且本领域的技术人员可以做出各种修改。以上说明、示例和数据提供了对本发明的各示例性实施例的结构和使用的全面描述。虽然上文以一定的详细度或参考一个或多个单个实施例描述了本发明的各实施例,但是,在不偏离本发明的精神或范围的情况下,本领域的技术人员可以对所公开的实施例作出很多更改。
Claims (10)
1.一种实时相机跟踪的方法,包括:
从正在移动的移动深度相机(302)接收深度图帧(314)的序列,每一深度图帧包括每一图像元素处的深度值,该深度值与从所述移动深度相机到由所述移动深度相机所捕捉的场景中的表面的距离有关;
通过计算每一深度图帧的配准参数(328、414)来跟踪所述移动深度相机的位置和定向,这些配准参数是用于将每一深度图帧和在先深度图帧对齐的变换的参数;
其中,计算所述配准参数包括使用迭代过程(412)用于:
标识成对的深度图帧的相应点(502)而不计算所述深度图帧内所描绘的形状,且通过使用并行计算单元来优化应用于所标识的相应点的误差度量,使得所述误差度量被并行地应用于所标识的相应点中的每一个。
2.如权利要求1所述的方法,其特征在于,还包括从与所述移动深度相机(302)相关联的第二传感器(306、308、310)接收输入,且使用该输入来形成所述配准参数的初始估计,所述第二传感器从选自以下各项之一:定向传感器(308)、RGB视频相机(306)、游戏系统(332)、所述深度相机正在其中移动的环境的图(334)、移动传感器、位置传感器。
3.如权利要求1或2所述的方法,其特征在于,包括以每秒至少30帧的帧速率接收所述深度图帧(314)的序列。
4.如权利要求1所述的方法,其特征在于,使用所述并行处理单元来优化误差度量包括:对于每一对相应点,形成(806)数值最小二乘优化的线性系统,以产生6乘6矩阵,并且将这些矩阵简化为所述并行计算单元处的单个6乘6矩阵。
5.如权利要求1所述的方法,其特征在于,包括估计来自由所述移动深度相机所捕捉的场景的密集3D模型(326)的在先深度图帧。
6.如权利要求1所述的方法,其特征在于,标识成对的深度图帧的相应点(502)包括使用投影数据关联过程,藉此所估计的移动相机的位置被用于将来自源深度图帧的点投影(606)到当前深度图帧的目的地点,且所述投影数据关联过程包括在所述目的地点周围搜索候选相应点。
7.如权利要求1所述的方法,其特征在于,优化所述误差度量包括优化点到面的误差度量,该度量包括从源点到包含目的地点并且与该目的地点的表面法线近似垂直地定向的平面的平方距离的和(802)。
8.如权利要求1所述的方法,其特征在于,计算所述配准参数包括,对于每一深度图帧,计算每一点的表面法线且形成具有对于不同范围的法线值的多个柱的直方图,并且跨所述柱对点进行均匀采样;以及仅使用来自均匀采样点的那些点来计算所述配准参数。
9.一种实时相机跟踪器(316)包括:
输入(1002),所述输入(1002)被安排成从移动的移动深度相机(302)接收深度图帧(314)的序列,每一深度图帧包括每一图像元素处的深度值,该深度值与从所述移动深度相机到由所述移动深度相机所捕捉的场景中的表面的距离有关;
帧对齐引擎(318),所述帧对齐引擎(318)通过计算每一深度图帧的配准参数来跟踪所述移动深度相机的位置和定向,这些配准参数是用于将每一深度图帧和在先深度图帧对齐的变换的参数;
所述帧对齐引擎被安排成使用迭代过程来计算所述配准参数,用于:标识成对的深度图帧的相应点而不计算所述深度图帧内所描绘的形状;
所述帧对齐引擎包括并行计算单元,所述并行计算单元被安排成优化作为所述迭代过程的一部分应用于所标识的相应点的误差度量,使得所述误差度量在所述并行计算单元处被并行地应用于所标识的相应点中的每一个。
10.一种游戏系统(332),所述游戏系统(332)包括移动红外飞行时深度相机,所述移动红外飞行时深度相机使用结构化光以及如权利要求9所述的用于跟踪所述移动深度相机的实时跟踪器(316),所述移动深度相机以及所述实时跟踪器被安排成以每秒至少30帧来操作,所述游戏系统被安排成影响与跟踪所述移动深度相机相关的游戏的过程。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US13/017,587 US8401242B2 (en) | 2011-01-31 | 2011-01-31 | Real-time camera tracking using depth maps |
| US13/017,587 | 2011-01-31 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| HK1171281A1 HK1171281A1 (zh) | 2013-03-22 |
| HK1171281B true HK1171281B (zh) | 2014-12-12 |
Family
ID=
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US8401242B2 (en) | Real-time camera tracking using depth maps | |
| JP5881743B2 (ja) | 奥行きマップを使用したモバイルカメラの自己位置推定 | |
| US9053571B2 (en) | Generating computer models of 3D objects | |
| US9251590B2 (en) | Camera pose estimation for 3D reconstruction | |
| EP2670496B1 (en) | Using a three-dimensional environment model in gameplay | |
| US9857470B2 (en) | Using photometric stereo for 3D environment modeling | |
| KR101861313B1 (ko) | 삼차원 환경 재구성 | |
| US8401225B2 (en) | Moving object segmentation using depth images | |
| KR20180004151A (ko) | 실시간 맵핑 및 로컬리제이션을 위한 장치 및 방법 | |
| CN115019167B (zh) | 基于移动终端的融合定位方法、系统、设备及存储介质 | |
| HK1171281B (zh) | 使用深度圖的實時相機跟蹤 | |
| HK1171853B (zh) | 使用深度圖進行移動相機定位 | |
| HK1173829A (zh) | 使用深度圖像的活動對象分割 | |
| HK1173829B (zh) | 使用深度圖像的活動對象分割 | |
| HK1172131B (zh) | 三維環境重構 |