检测视频数据中的对象的制作方法

文档序号:17439579发布日期:2019-04-17 04:34阅读:233来源:国知局
检测视频数据中的对象的制作方法

本发明涉及视频处理。具体地,本发明涉及处理视频数据的帧并且标记三维(3d)空间的表示内的表面元素。本发明具体地但不排他地涉及生成机器人和/或增强现实应用程序中使用的3d空间的语义标记的表示。



背景技术:

在计算机视觉和机器人领域,通常需要构建3d空间的表示。构建3d空间的表示允许将真实世界的环境映射到虚拟或数字领域,在那里可以被电子装置使用和操纵。例如,可移动的机器人装置可能需要3d空间的表示,以允许同时定位和映射,并且因此导航其环境。可替换地,3d空间的表示可以使得能够识别和/或提取该空间内的对象的3d模型。

存在几种技术可用于构建3d空间的表示。例如,从运动求取结构和多视角立体视觉是两种此类技术。许多技术从3d空间的图像(例如,角落和/或边缘)提取特征,例如,使用尺度不变特征转换(sift)和/或加速鲁棒特征(surf)算法。然后可以将这些提取的特征在图像之间关联,以建立3d表示。这个3d表示一般设置为3d点云,即,作为限定的3d容积内的一系列限定的x、y和z坐标。其他方法可将限定的3d容积分为多个单位容积或者“体素”。沿着一系列常用的z坐标排列的一组3d点可以模拟地板或桌面。在某些情况下,点云可以在称为表面渲染的过程中转换为用于在显示器上渲染的多边形网格。

当构建3d空间的表示时,技术通常分为“稀疏”和“密集”类别。使用更少数量的点或特征来生成表示的技术被称为“稀疏”。例如,这些技术可以使用10到100个特征和/或点来生成表示。这些可能与生成具有数千或数百万个点的表示的“密集”技术形成对比。“稀疏”技术具有更容易实时实现的优点,例如,以每秒30帧左右的帧速率;使用有限数量的点或特征限制了构建3d表示所需的处理程度。相对而言,由于计算需求,所以更难以执行3d空间的实时“密集”映射和处理。例如,经常优选的是执行3d空间离线的“密集”映射,例如,可以采用10个小时从30分钟的提供的图像数据生成“密集”表示,再次加上相似的时间量以应用任何后续的表示处理。

一旦生成了空间的3d表示,则存在该表示的使用的另一个问题。例如,许多机器人应用程序不仅需要空间的几何图形的定义而且需要关于什么存在于空间中的有用信息。这在计算机视觉领域称为空间的“语义”知识。知道什么在空间内是在人脑中潜意识发生的过程;因而,易于低估利用相等能力构建机器的难度。例如,当人类观察3d空间中的对象(诸如,杯子)时,除了包括与本体感受(例如,朝向对象的移动)和语言处理有关的那些核心视觉处理网络之外激活脑部的许多不同区域。然而,许多计算机视觉系统对空间具有非常幼稚的了解,这些系统仅“知道”空间的几何图形。

在计算机视觉和机器人领域,在空间的表示内包含丰富的语义信息将能够具有比只有几何图形更大的功能范围。例如,在家用机器人中,简单的拿取任务需要了解这是什么东西以及它在哪儿这两个信息。类似地,查询表示内的语义信息的能力可用于人类例如直接提供用于回答关于预先生成的表示的语义的口头查询的数据库:“我们在会议室有几把椅子?讲台与最靠近的椅子之间的距离是多少?”

对生成3d表示的语义信息的研究处于初期。在过去,主要将精力分布在二维(2d)图像分类(例如,“这个场景的图像是否包含一只猫?”)和3d场景映射的相对分开的领域。在后者种类中,许多现有系统被配置为离线操作大数据集(例如,整夜或连续几天)。实时提供3d场景映射是真实世界应用程序的期望目的。

a.hermans,g.floros和b.leibe在2014年的ieee国际机器人与自动化会议(icra)的进程中公布的文章“dense3dsemanticmappingofindoorscenesfromrgb-dimages”中描述了提供周围场景的语义注释的3d重建的方法,其中,每个3d点被分配一个语义标记。该文章讨论不存在将2d标记转换为全局一致的3d重建的明确方法。所描述的方法建造场景的点云重建并且将语义标记分配给每个3d点。使用随机决策森林计算用于2d图像的图像标记,然后经由贝斯更新和密集成对地条件随机场模型(crfs)转换至点云。使用零速卡尔曼滤波器在全局的3d空间内跟踪点。尽管提出的方法是鼓舞的,但是运行时间性能为4.6hz,这将禁止处理直播视频馈送。

r.f.salas-moreno、r.a.newcombe、h.strasdat、p.h.j.kelly和a.j.davison在2013年的ieee国际计算机视觉与模式识别(cvpr)的进程中公布的文章“slam++:simultaneouslocalisationandmappingatthelevelofobjects”中描述了室内场景内的实时3d对象识别的方法。这些方法使用空间的位姿图表示,其中,图中的每个节点以给定的时间步长存储识别的对象的估计位姿或者相机的历史位姿。这个位姿图表示随后优选提供一致表示。通过匹配位姿图部分管理环路闭合。尽管在该领域提供了改进,但是所描述的方法局限于映射存在于预定义的数据库中的对象,并且需要用手生成用于匹配模板模型的特征。它们还不提供整个场景(例如,墙壁、门和窗户)的密集标记,这种标记可用于内部导航。

假定现有技术,仍然存在处理视频数据的可用方法的希望以能够检测和标记视为存在于场景中的对象。例如,增强现实和机器人应用程序希望了解基于实时或接近实时(例如,以大于15hz的帧处理率)提供的场景中可见的东西。与相机的简单有限的旋转相比,这种应用程序通常还利用大视点变化产生场景观察,例如,从多个不同位置和/或方位观看场景部分的延伸的“不断改变方向的”或“一圈圈的”运动的视频数据。例如,非均匀的地形或手持拍摄装置可以导致在其中反复观察并且重新观察场景的区域的拍摄装置位置和方位中的频繁变化。希望的是能够利用这些可变的场景观察来检测和标记对象。



技术实现要素:

根据本发明的第一方面,提供了用于检测视频数据中的对象的方法,包括:使用二维图像分类器确定视频数据的帧的空间元素的对象标记概率值;识别在对应于空间元素的视频数据的帧中观察到的空间的三维表面元素表示中的表面元素,其中,空间元素和表面元素之间的对应是基于表面元素表示的投影使用帧的估计的位姿来确定;并且基于对应的空间元素的对象标记概率值更新表面元素的对象标记概率值以便提供存在于视频数据中的对象的语义标记的三维表面元素表示。

在某些实例中,在所述视频数据的处理期间,该方法可包括:检测环路闭合事件并且将空间变形应用于表面元素表示,该空间变形修改表面元素在表面元素表示中的三维位置,其中,空间变形修改表面元素表示的空间元素和表面元素之间的对应,使得在空间变形之后,使用先前对应于第二表面元素的空间元素的对象标记概率值更新第一表面元素的对象标记概率值。

可以在没有位姿的情况下执行处理视频数据的帧以生成三维表面元素表示。这可包括逐帧地:将使用三维表面元素表示生成的渲染帧与来自视频数据的帧的视频数据帧进行比较,以确定用于视频数据帧的拍摄装置的位姿;并且使用位姿和来自视频数据帧的图像数据更新三维表面元素表示。

在某些情况下,用于生成三维表面元素表示的视频数据的帧的子集被输入至二维图像分类器。

视频数据帧可包括颜色数据、深度数据和法线数据(normaldata)中的至少一个。在这种情况下,二维图像分类器被配置为基于用于帧的颜色数据、深度数据和法线数据中的至少一个计算对象标记概率值。在某些情况下,用于帧的颜色数据、深度数据和法线数据中的两个或更多个可以提供用于图像分类器的输入信道。

二维图像分类器可包括卷积神经网络。在这种情况下,卷积神经网络可被配置为输出对象标记概率值作为用于每个视频数据的帧的一组像素映射,该组中的每个像素映射对应于一组可用的对象标记中的不同的对象标记。反卷积神经网络可以通信耦接至卷积神经网络的输出。

在一种情况下,在更新表面元素的对象标记概率值之后,该方法包括正则化表面元素的对象标记概率值。这可涉及将条件随机场应用于表面元素表示中的表面元素的对象标记概率值和/或可基于表面元素位置、表面元素颜色和表面元素法线中的一个或多个。

在某些实例中,一组一个或多个表面元素可以基于分配给所述表面元素的对象标记概率值利用三维对象定义替换。

在一个实例中,该方法可包括:利用对象标记注释空间的三维表面元素表示的表面元素以提供带注释的表示;基于带注释的表示的投影从带注释的表示生成带注释的视频数据的帧,投影使用用于每个带注释的帧的估计的位姿,每个带注释的帧包括具有分配的对象标记的空间元素;并且使用带注释的视频数据的帧训练二维图像分类器。

在另一实例中,该方法可包括以下步骤:获得对应于对象的第一部分的观察的视频数据的第一帧;使用二维图像分类器生成用于视频数据的第一帧的图像映射,所述图像映射指示在第一帧的区域中出现对象的第一部分;并且确定表面元素没有投射在第一帧的区域上并且因而没有更新所述区域中的基于表面元素的图像映射值的对象标记概率值。在这个实例中,在检测环路闭合事件之后,该方法可包括:修改表面元素的三维位置,获得对应于对象的第一部分的迭代地观察的视频数据的第二帧;使用二维图像分类器生成用于视频数据的第二帧的图像映射,所述图像映射指示在第一帧的区域中出现对象的第一部分;在环路闭合事件之后确定所修改的第一表面元素没有投射在第二帧的区域上;并且基于用于视频数据的第二帧的图像映射更新表面元素的对象标记概率值,其中,表面元素的对象标记概率值包括来自多个视点的表面元素的熔合对象投影。

根据本发明的第二方面,提供了用于检测视频数据中的对象的设备,包括:图像分类器界面,接收视频数据的单个帧的二维对象标记概率分布;对应界面,针对视频数据的给定帧,接收指示给定帧内的空间元素和三维表面元素表示中的表面元素之间的对应,所述对应基于表面元素表示的投影使用用于给定帧的估计的位姿来确定;以及语义增强器,反复更新分配给三维表面元素表示中的单独的表面元素的对象标记概率值,其中,针对视频数据的给定帧,语义增强器被配置为使用通过对应界面接收的数据将通过图像分类器界面接收的二维对象标记概率分布应用于分配给对应的表面元素的对象标记概率值。

在某些实例,对应界面被配置为在表面元素表示的空间变形之后提供更新的对应,该空间变形在视频数据内实施环路闭合。在这些实例中,语义增强器可以使用所更新的对应使用先前对应于第二表面元素的空间元素的对象标记概率值更新第一表面元素的对象标记概率值。

在一种情况下,图像分类器界面被配置为在视频数据的给定帧接收对应于相应多个对象标记的多个图像映射,每个图像映射具有指示相关联的对象标记的概率值的像素值。

该设备可包括执行如上所述的正则化的正则化器。语义增强器还可以被配置为基于分配给所述表面元素的对象标记概率值利用三维对象定义替换一组一个或多个表面元素。

在本实例中,表面元素表示中的每个表面元素至少包括定义表面元素在三维中的位置的数据和定义表面元素在三维中的法线向量的数据。在这种情况下,每个表面元素表示三维空间中的二维区域。

根据本发明的第三方面,提供了用于检测存在于视频数据中的对象的视频处理系统,该系统包括:如上所述的设备;视频获取界面,从拍摄装置获得视频数据帧,所述视频数据帧导致拍摄装置和三维空间之间随着时间相对移动;以及同步定位和映射(slam)系统,通信耦接至设备的对应界面以基于所获得的视频数据的帧生成三维空间的表面元素表示,其中,slam系统被配置为将空间变形应用于表面元素表示以关闭视频数据的帧内的观察环路,所述空间变形导致用于表面元素表示中的至少一个修改的表面元素的新的三维位置。

在这个方面中,slam系统可包括:分割器,被配置为基于至少一个表示属性将三维表面元素表示分割成至少有效和无效部分,其中,slam系统被配置为基于来自表面元素表示的有效部分的投影计算有效渲染帧以便随着时间更新所述表示;并且配准引擎,被配置为将三维表面元素表示的有效部分与三维表面元素表示的无效部分随着时间对准。在这种情况下,配准引擎可以被配置为:基于来自三维表面元素表示的无效部分的投影来计算无效渲染帧;确定使有效渲染帧与无效渲染帧对准的空间变形;并且通过应用空间变形更新三维表面元素表示。slam系统还可以包括帧到模型跟踪部件,该帧到模型跟踪部件被配置为将有效渲染帧与从所述视频数据提供的帧进行比较,以确定三维表面元素表示的有效部分与视频数据的对准。配准引擎可以被配置为使用变形图使三维表面元素表示的有效部分与三维表面元素表示的无效部分对准,变形图是基于用于表面元素的初始化时间来计算,变形图指示用于在对准期间修改给定的表面元素的给定的表面元素的一组表面-元素邻居。

在某些实例中,视频处理系统包括二维图像分类器,该二维图像分类器通信耦接至图像分类器界面以计算用于从视频获取界面获得的视频数据的帧的对象标记概率分布。二维图像分类器可以应用如关于第一方面描述的处理。

根据本发明的第四方面,提供了机器人装置,包括:至少一个拍摄装置,提供包括深度数据和颜色数据中的一个或多个的视频数据的帧,所述深度数据指示多个图像元素与拍摄装置相距的距离;如上所述的第二方面的设备、或者第三方面的视频处理系统;一个或多个运动致动器,利用三维空间移动机器人装置;以及导航引擎,控制一个或多个运动致动器,其中,导航引擎被配置为访问分配给三维表面元素表示中的单独的表面元素的对象标记概率值以在三维空间内导航机器人装置。

导航引擎可以被配置为基于分配给三维表面元素表示中的表面元素的对象标记概率值识别房间或者房间的入口点和出口点。

根据本发明的第五方面,提供了移动计算装置,包括:至少一个拍摄装置,被设置为记录包括深度数据和颜色数据中的一个或多个的视频数据的帧,所述深度数据指示多个图像元素距拍摄装置的距离,以及如上所述的第二方面的设备、或者第三方面的视频处理系统。

根据本发明的第五方面,提供了包括计算机可执行指令的非易失性计算机可读存储介质,当由处理器执行时,该指令使得计算装置执行以上描述的视频处理方法。

本发明的进一步的特征和优点将从参考附图进行的仅以实例的方式给出的本发明的优选实施方式的以下描述中变得显而易见。

附图说明

图1a是示出了三维空间的实例的示意图;

图1b是示出了示例性拍摄装置的可用自由度的示意图;

图1c是示出了通过示例性拍摄装置生成的视频数据的示意图;

图2是根据实例的用于检测视频数据中的对象的设备的示意图;

图3a是示出了用于3d表面元素模型的示例性数据的示意图;

图3b是示出了根据实例的表面元素的属性的示意图;

图4是根据实例的用于检测存在于视频数据中的对象的视频处理系统的示意图;

图5是示出了基于视频数据的帧的用于语义标记表面元素表示的示例性管线的示意图;

图6是示出了根据实例的用于检测视频数据中的对象的方法的流程图;

图7是示出了用于配准表面元素表示的部分并且应用变形图的示例性过程流的示意图;

图8是示出了用于处理视频数据帧以更新三维空间的表示的示例性过程的流程图;

图9a至图9c是示出了更新表面元素表示的样例的示意图;并且

图10a和图10b是示出了示例性场景和语义标记的输出的示图。

具体实施方式

本文中描述的某些实例能够从视频数据生成3d空间的语义标记的3d表示。这称为场景中看得见的“检测对象”:“检测”可指的是确定用于一组可适用的类别标记的概率的过程,并且“对象”可指的是例如可以与机器人交互的任何可见的具有材料存在的东西或实体。术语“对象”和“类别”被同义使用,它们指的是用于真实世界实体的标记或标识符。在所描述的实例中,还可以称为映射或模型的3d表示是表面元素或“面元”表示,其中使用在3d坐标系内定义的多个表面或区域模拟空间的几何图形。3d表示被语义标记在于该表示内的给定面元具有识别与元件相关联的对象的关联的标号数据(例如,字串或密钥),即,检测到对象。在此对象被认为是广义的并且包括实体,诸如,墙壁、门、地板和人以及家中、办公室和/或外部空间中的家具、其他装置和常规对象等。以此方式,面元具有将含义提供至超出器几何图形或视觉特性(例如,颜色)的面元的附加数据。这个数据使计算机视觉和/或机器人应用程序能够更好地利用3d表示。例如,如果家用机器人的映射包括识别空间内的对象的数据,则机器人可以区分“门”与“墙壁”。因此,从几何图形视点来看相似的映射特征(例如,门和墙壁都是垂直平面)可以区分并且用于移动,例如,这个信息然后可以由机器人用于进入或退出该空间。标记可以按概率分配,能够在导航期间以贝斯方式更新看法。

本文中描述的某些实例具体适于以等于或大于15hz的帧速率处理实时视频馈送。这通过使用不依赖位姿图的计算的空间的表示是可行的;帧到表示跟踪和融合逐帧地出现,其中,该表示在检测环路闭合事件之后被空间变形。在某些实例中,表示被分成有效和无效部分,其中,只有有效部分用于更新该表示,其中,无效部分不用于更新该表示。这个更新可包括利用表示融合视频数据的帧,例如,确定新的面元,修改现有面元或者删除旧的面元。这有助于减少计算需求,因为任何时候只有空间表示的子集可以用于在对空间的新观察之后更新表示。除了更新表示之外,有效部分还可以用在追踪操作中,该追踪操作试图确定拍摄装置相对于表示的位置和方位的精确的当前表示。再次,与基于空间的完整表示的跟踪相比,仅使用空间表示的子集,使得计算需求减少。

本文中描述的某些实例为包括观察环路的视频数据提供增加的检测精确度,例如,其中,对象经过两次或更多次和/或从不同的角度观看。在实例中,基于新的数据帧持续更新与面元相关联的类别或对象标记概率。当重新观察表示的现有部分时,检测到环路闭合事件并且面元被非刚性变形以提供空间的一致的全局映射;然而,维持分配的概率。因而,在面元表示上的概率更新操作中,可以在变形之后使用新的概率的集合。在测试中,这导致了检测精确度的改进性能。实质上,“一圈圈的(loopy)”运动能够多次单独观察给定对象。这些单独观察都提供2d对象分类的集合。然后变形过程意味着来自单独帧的2d分类概率被一致应用于面元的相同集合。在某些情况下,这种变形可能是非刚性的,并且可使用变形图来对面元进行转换。变形图可以是稀疏的和/或可以嵌入例如与面元相关联的空间中。这些技术不同于那些需要位姿图的技术,例如,相机装置的位置和方位的概率表示,其用于刚性地转换图像数据的独立关键帧。实际上,通过在适当的情况下对准表示和变形的不同部分,不需要位姿图,例如,因为可通过对准和变形校正偏移和误差,因此不需要在任何时候跟踪正确的位姿。这个再次辅助实时操作并且简化处理。

图1a和图1b示意性地示出了3d空间的实例以及与该空间相关联的视频数据的拍摄。然后图1c示出了被配置为当观看空间时生成视频数据的拍摄装置。提供这些实例,以更好地说明本文中描述的某些特征,并且不应被认为是限制性的;为便于说明,省略和简化了某些特征。

图1a示出了三维空间110的实例100。三维空间110可以是内部和/或外部物理空间,例如,房间或地理位置的至少一部分。在这个实例100中,三维空间110包括位于三维空间的多个物理对象115。这些对象115可包括以下中的一个或多个:人、电子装置、家具、动物、建筑物部分和设备等。尽管图1a中的3d空间110被示出为具有较低的表面,但是不一定在所有的实现方式中都是这种情况,例如,环境可以是空中的或者在地球外空间内。

实例100还示出了可用于拍摄与3d空间相关联的视频数据的各种示例性拍摄装置120。拍摄装置120可包括相机,该相机被布置为以数字或模拟形式记录观察3d空间110产生的数据。在某些情况下,拍摄装置120是可移动的,例如,可以被设置为拍摄对应于3d空间110的不同观察部分的不同帧。拍摄装置120相对于静态安装可移动,例如,可包括致动器,以相对于三维空间110改变相机的位置和/或方位。在另一种情况下,拍摄装置120可以是由人类用户操作和移动的手持装置。

在图1a中,多个拍摄装置120还示出为耦接至机器人装置130,该机器人装置被布置为在3d空间110内移动。机器人装置135可包括自主的空中和/或陆地移动装置。在本实例100中,机器人装置130包括使装置能够导航3d空间110的致动器135。这些致动器135包括示图中的轮子;在其他情况下,它们可包括轨道、挖掘机构、转子等。一个或多个拍摄装置120-a、120-b可以静态地或者移动地安装在此类装置上。每个拍摄装置120-a、120-b可以拍摄不同类型的视频数据和/或可包括立体图像源。在一种情况下,拍摄装置120-a可以拍摄深度数据,例如,使用诸如红外线、超声波和/或雷达(包括光检测和测距-lidar技术)等遥感技术,而拍摄装置120-b拍摄测光数据,例如,彩色或灰度图像(反之亦然)。在一种情况下,拍摄装置120-a、120-b中的一个或多个可以独立于机器人装置130移动。在一种情况下,拍摄装置120-a、120-b中的一个或多个可以安装在旋转机构上,例如,该旋转机构以成角度的弧旋转和/或旋转360度,和/或与适配的光学器件一起被布置为拍摄场景的全景(例如,直到完整的360度全景)。

图1b示出了可用以拍摄装置120和/或机器人装置130的自由度的实例140。在诸如拍摄装置120-a的情况下,装置150的方向可以与镜头或者其他成像设备的轴共线。作为围绕三个轴中的一个轴旋转的实例,图中示出了法线轴155。类似地,在机器人装置130的情况下,可以定义移动装置145的对准方向。这可以指示移动装置的朝向和/或行进的方向。还示出了法线轴155。尽管参考拍摄装置120或机器人装置130仅示出了单个法线轴,但是这些装置可以围绕如下所述的示意性地示出为140的任何一个或多个轴旋转。

一般地,拍摄装置的方位和位置可以参考六个自由度在三维中定义:可以在三个维度中的每个维度内定义位置,例如,由[x,y,z]坐标表示,并且可以由表示围绕三个轴,例如,[θx,θy,θz]中的每个轴旋转的角度矢量来定义方位。在某些实现方式中,拍摄装置可以参考这六个自由度的受限组来定义,例如,对于地面车辆上的拍摄装置,z维度可以是恒定的。在某些实现方式中,例如,机器人装置130的实现方式,可以参考其他装置的方位和位置来定义耦接至另一装置的拍摄装置的方位和位置,例如,可以参考机器人装置130的方位和位置来定义。在本文中描述的实例中,拍摄装置的方位和位置被定义为拍摄装置的位姿。拍摄装置的位姿可以随时间变化,使得拍摄装置在时间t+1时可以具有与在时间t时不同的位姿。在手持式移动计算装置包括拍摄装置的情况下,位姿可以随着手持装置被3d空间110内的用户移动而改变。

图1c示意性地示出了拍摄装置配置的实例。在图1c的实例160中,拍摄装置165被配置为生成视频数据170。视频数据包括随时间改变的图像数据。如果拍摄装置165是数字相机,则这可以直接执行,例如,视频数据170可包括来自电荷耦合器件或互补金属氧化物半导体(cmos)传感器的经处理的数据。也可以间接生成视频数据170,例如,通过处理其他图像源,诸如,转换模拟信号源。

在图1c中,图像数据170包括多个帧175。每个帧175可以涉及在拍摄3d空间(诸如,图1a、图1b中的110)的图像的时间段中的特定时间t(即,ft)。帧175通常包括测量数据的2d表示。例如,帧175可包括在时间t时记录的像素值的2d阵列或矩阵。在图1c的实例中,视频数据内的所有帧175是相同大小的,尽管在所有实例中的情况不一定都如此。帧175内的像素值表示3d空间的特定部分的测量值。在图1c的实例中,每个帧175包括用于两种不同形式的图像数据的值。第一组值涉及深度数据180(例如,dt)。深度数据可包括距拍摄装置的距离的指示,例如,每个像素或图像元素值可表示3d空间的一部分距拍摄装置165的距离。第二组值涉及测光数据185(例如,颜色数据ct)。这些值可包括给定分辨率的红色、绿色、蓝色像素值。在其他实例中,可以使用其他颜色空间和/或测光数据185可包括单色或灰度像素值。在一种情况下,视频数据170可包括压缩的视频流或文件。在这种情况下,可以从流或文件重建视频数据帧,例如,作为视频解码器的输出。在对视频流或文件进行预处理之后,可以从存储器位置检索视频数据。

图1c的拍摄装置165可包括布置为拍摄rgb数据185和深度(“d”)数据180的所谓的rgb-d相机。在一种情况下,rgb-d相机被布置为随时间拍摄视频数据。深度数据180和rgb数据中的一个或多个可以在任何时间使用。在某些情况下,rgb-d数据可以与四个或更多个信道结合在单个帧中。深度数据180可以通过本领域已知的一种或多种技术生成,诸如,结构化光方法,其中,红外激光投影仪在三维空间的被观察部分上投射红外光的图案,该图案然后由单色cmos图像传感器成像。这些相机的实例包括由美国华盛顿州雷蒙德市的微软公司制造的相机系列、由台湾台北的华硕电脑公司制造的相机系列、以及由美国加利福尼亚州库比提诺的苹果公司的子公司primesense制造的相机系列。在某些实例中,rgb-d相机可以被合并到诸如平板电脑、膝上型电脑或移动电话等移动计算装置中。在其他实例中,rgb-d相机可以用作静态计算装置的外围设备,或者可以嵌入具有专用处理能力的独立装置中。在一种情况下,拍摄装置165可以被布置为将视频数据170存储在耦合的数据存储装置中。在另一种情况下,拍摄装置165可以将视频数据170传输至耦合的计算装置,例如,作为数据流或逐帧地。耦合的计算装置可以直接耦合,例如,经由通用串行总线(usb)连接,或者间接耦合,例如,可以通过一个或多个计算机网络传输视频数据170。在又一种情况下,拍摄装置165可以被配置为通过一个或多个计算机网络传输视频数据170,以用于存储在网络附接的存储装置中。视频数据170可以逐帧地或批量地存储和/或传输,例如,多个帧可以捆绑在一起。深度数据180不需要与测光数据185具有相同的分辨率或帧速率。例如,深度数据180可以以比测光数据185更低的分辨率来测量。也可以在之后描述的实例中使用之前对视频数据170进行一个或多个预处理操作。在一种情况下,可以应用预处理,使得两个帧组具有相同的大小和分辨率。在某些情况下,单独的拍摄装置可以分别生成深度和测光数据。本文中没有描述的其他配置也是可能的。

在某些情况下,拍摄装置可以被布置为执行预处理,以生成深度数据。例如,硬件感测装置可以生成视差数据或具有多个立体图像的形式的数据,其中,软件和硬件中的一个或多个用于处理该数据,以计算深度信息。类似地,深度数据可以替代地由输出可以用于重建深度信息的相位图像的飞行相机的时间产生。因而,可以使用任何合适的技术生成形成图像数据220的一部分的深度数据。

图1c作为实例提供,并且如将理解的,与附图中示出的那些不同的配置可以用于生成视频数据170,以在如下所述的方法和系统中使用。视频数据170可以进一步包括任何测量的感测输入,其被布置为二维形式,表示利用拍摄装置拍摄或记录的3d空间的视图。例如,这可以包括深度数据或测光数据、电磁成像、超声成像和雷达输出等中的仅一个。在这些情况下,可能仅需要与特定形式的数据相关联的成像装置,例如,没有深度数据的rgb装置。在上面的实例中,深度数据dt的帧可包括深度值的二维矩阵。这可以表示为灰度图像,例如,其中,具有xr1×yr1的分辨率的帧中的每个[x,y]像素值包括表示三维空间中的表面与拍摄装置相距的距离的深度值d。测光数据ct的帧可包括彩色图像,其中,具有分辨率为xr2×yr2的帧中的每个[x,y]像素值包括rgb矢量[r,g,b]。作为实例,两组数据的分辨率可以是640×480个像素。

给定的视频数据表示3d空间或场景的观察,图2示出了根据实例200的用于检测这个视频数据中的对象的设备210。设备210包括图像分类器界面220和对应界面230。这两个界面220、230通信耦接至语义增强器240。

图像分类器界面220被配置为接收用于单独的视频数据帧的2d对象标记概率分布250。例如,至于视频数据的特定帧,图像分类器界面220可以被配置为接收一个或多个图像的对应组,其中,图像中的像素值表示对象标记概率值。在这个背景下的对象或类别包括识别特定实体的给定标记、标记或字串。对象或类别标记可包括人类可读的字串,诸如,“椅子”或“地板”、或者用于数据的标识符,诸如,用于定义“椅子”或“地板”的数据的统一资源标识符(uri)(例如,“12345”)。在具有四个对象标记:“[“门”、“地板”、“墙壁”、“家具”]”的单个系统中,一组四个图像可以由图像分类器界面220接收,其中,每个图像的像素值表示相应的对象标记的概率值;例如,用于“地板”的图像可具有能够映射至0至1范围的像素值,其中,每个值表示视频数据的给定帧中的对应像素是房间的地板的观察的概率。在另一种情况下,可以接收一个图像,其中,每个像素具有多个关联的概率值(例如,具有关联的阵列),该组概率值(例如,阵列的长度)表示该组可用的对象标记。在其他实例中,在图像分类器界面220处接收的数据可以与不同于像素(例如,像素组或者在简单情况下,用于每个可用对象标记的单个概率值)的视频数据的给定帧的区域相关联。

对应界面230被配置为接收为视频数据的给定帧指示3d表面元素(“面元”)表示270中的给定帧内的空间元素和表面元素之间的对应的数据260。例如,在一种情况下,数据260可包括图像,其中,如果存在对应,则图像中的像素指示面元表示270中的特定面元。在另一种情况下,对应界面230可以被配置为发送请求以获得与视频数据的帧的给定空间元素相关联的面元,例如,以像素或像素组的形式的空间元素。在这种情况下,数据260可包括包含标识符的响应或者连接至面元表示270中的特定面元。在图2中,用于给定帧的空间元素和面元之间的对应是基于面元表示的投影使用用于帧的估计的相机位姿来确定。在某些情况下,没有面元可以与空间元素相关联,例如,如果在表示中,则对应空间是空白的或者空的,而不存在面元。

图2的语义增强器240被配置为针对视频数据的给定帧使用来自对应界面230的数据260和来自图像分类器界面的对象标记概率分布250更新分配给3d面元表示中的单独面元的对象标记概率值280。具体地,语义增强器240被配置为针对视频数据的给定帧使用通过对应界面230接收的数据260以将通过图像分类器界面220接收的二维对象标记概率分布250应用于分配给对应的面元的对象标记概率值280。

例如,在一个实现方式中,2d对象标记概率分布250和对应数据260可包括相等大小的2d阵列(例如,x×y个像素的图像,其中,x×y可以是共用的分辨率,诸如,视频图形阵列(vga)、高级vga(svga)或更高的)。这些阵列可以被配置为相同的大小伙子可以适当地重新制定大小或映射。假设前者用于这个实例,则首先选择对象标记概率分布250内的对应图像用于每个对象标记。然后,使用数据260检索对应的面元用于每个像素。例如,数据260中的像素[128,56]可识别特定的3d位置(例如,[34,135,99])处的面元或者利用特定的标识符(例如,“sf1234”)。然后检索当前对象标记的现有概率值用于所识别的面元。这可包括为具有特定标识符的面元定位数据定义并且更新数据定义。然后可使用对应于给定对象标记的对象标记概率分布250中的图像中的像素[128,56]处的当前概率值更新现有的概率值。然后迭代用于每个像素和每个对象标记图像。

在某些实例中,对应界面230被配置为在面元表示270的空间变形之后提供更新的对应。这可以是使用变形图的非刚性空间变形,其中,面元表示中的面元形成所述图的节点。空间变形在视频数据内实施环路闭合。例如,这可以涉及拍摄装置“重新观察”场景或空间的特定部分,例如,第二次或者从不同角度观看在面元表示中模拟的对象。在本实例中,语义增强器240使用所更新的对应使用先前对应于第二面元的用于空间元素的对象标记概率值更新用于第一面元的对象标记概率值。换言之,在环路闭合事件之后,空间变形修改面元的3d位置,意味着在用于后续帧的更新操作中,拍摄装置没有移动,对应数据260是不同的,并且因而即使由于缺乏移动导致对象标记概率分布250剩余相同的数据,也更新不同组的面元概率值。实际上,在表示变形期间,对象标记概率值“遵从”面元。这意味着精确且一致地结合在不同时间或不同角度观看与共用对象相关联的投影。这还改进对象检测精确性。这不会出现面元表示或概率值的繁重处理,并且因此允许快速的实时操作。

图3a示出了可用于提供如上所述的面元表示的数据结构310的示意图。数据结构310仅仅是示例性的并且不应被视为限制性的;根据实现方式,可以使用用于存储数据的其他方法和格式。在这种情况下,面元模型包括用于多个面元(即,表面元素)的数据定义,其中,每个面元表示3d空间中的2d区域(即,表面)。在某些情况下,面元表示可包括面元数据定义的无序列表。在这种情况下,每个面元至少包括定义面元在三维中的位置的数据(即,位置元素或部件)以及定义表面元素在三维中的法线向量的数据(即,与元素相关联的表面的“朝向”方向)。这在图3b中示意性地示出。可在2000年7月的acmpress/addison-wesleypublishingco.在第27届计算机图形与交互技术年会的进程中公布的pfister、hanspeter等的文章“surfels:surfaceelementsasrenderingprimitives”中找到一个“面元”的描述。

图3b示出了表面元素或“面元”320的示意图。面元320包括三维中的表面s。面元具有三维中的位置p。在图3a中,使用三维坐标来定义这个位置,例如,定义x、y和z坐标的数据“位置:px,py,pz;”。在其他实例中,可以使用其他坐标系。在图3b中,面元还具有在三维内定义的法线向量n。在图3a中,使用三维矢量来定义该位置,例如,数据“法线:nx,ny,nz;”。可以使用矢量定义内的有符号值来指示方向。

图3a中的实例310还示出了分配给每个面元的对象标记概率值。在本实例中,概率(“概率:{{po1,po2,…,pon}”,其中,on表示第n个对象的对象标记)与面元定义一起存储。在其他情况下,概率可以经由面元标识符或外键存储在与面元相关联的单独的查询表或者数据库记录中。在具有四个对象标记([“门”、“地板”、“墙壁”、“家具”])的上述简单情况下,这些概率值可以是[0.1、0.2、0.2、0.5],表示面元与房间中的家具可能相关联的面元。

图3a中的实例310还具有在某些实例中可以用来描述面元的其他数据。在目前情况下,面元的表面在3d空间中是圆形或圆盘形。因而,图3a和图3b中的表面由半径r定义,如数据“半径:r”所示。每个面元的半径旨在表示在给定点周围的局部表面积,同时使可见孔最小化。在其他实例中,可以使用不同的数据来定义表面,例如,使用不同的几何图形的定义和/或变量,指示三维内表面的范围。图3a在本实例中示出了面元定义还包括定义以下内容的数据:表面的颜色(“颜色:r、g、b;”-在这种情况下,使用rgb颜色空间,但是任何已知的颜色空间是可行的);面元的重量(“重量:w;”-这可能是在融合新的测量与面元时使用的真实数字);初始化时间(“init_time:t0;”),指示首次生成面元的时间;以及最后的修改时间(“last_modified:t;),指示最后更新或修改面元时的时间。应理解的是,根据实现方式,可以添加、修改或省略定义面元的属性的数据。如图3a所示,可以在列表中定义多个面元(例如,在该实例中,在“{...}”之间)。

图4示出了可以使用图2中示出的设备210的视频处理系统的实例。在图4中,实体410至480对应于参考图2描述的实体210至280。图4进一步示出了视频获取界面405。视频获取界面405被配置为从拍摄装置获取视频数据415的帧。这可以是通过拍摄装置(诸如,图1c中的拍摄装置165)主动或者先前生成的视频数据。视频数据415的帧是在拍摄装置和3d空间或场景之间随着时间出现的相对移动的特征。

图4中的视频获取界面405通信耦接至图像分类器455和同步定位和映射(slam)系统465。图像分类器455和slam系统465都被配置为接收视频数据415的帧。在某些情况下,图像分类器455和slam系统465可以接收视频数据的相同帧。在其他情况下,图像分类器455可以接收由slam系统465接收的视频数据帧的子集。在这种情况下,slam系统465提供帧460之间的对应以及融合的面元470的全局一致的映射。语义增强器440如参考图2所描述的操作,因为它将从图像分类器界面420接收的概率450与现有的面元概率分布融合以在3d表示470中生成用于每个面元的一组对象或类别概率480。在这种情况下,根据经由对应界面430接收的对应数据460选择适当的面元。

图像分类器455包括二维图像分类器,该二维图像分类器通信耦接至图像分类器界面420以计算对象标记概率分布450以用于从视频获取界面405获得的视频数据415的帧。在某些情况下,视频数据415的帧可以重新正则化为图像分类器455的原始分辨率。例如,视频数据415的帧可以使用rgb像素值的双线性内插重新正则化为224×224分辨率。在某些情况下,图像分类器455的输出还可以重新正则化为匹配对应数据460的分辨率。例如,图像分类器455的输出可以使用最近邻粗化算法重新正则化为640×480图像分辨率。

图像分类器455可以实现各种机器学习方法中的至少一个。可以使用支持向量机(svm)、贝斯网络、随机森林、最近邻群集和/或神经网络等。在某些实例中,图像分类器455可包括卷积神经网络(cnn)。cnn可具有多个卷积层(例如,在一个实例中是16个),有时非正式地称为“深度学习”方法。在一种情况下,cnn被配置为输出对象标记概率值作为用于视频数据的每个帧的一组像素映射(例如,图像)。这可以通过将反卷积神经网络通信耦接至cnn的输出来实现。具有反卷积层的特征的示例性cnn的进一步详情可以在h.noh、s.hong、b.han关于学习用于语义分割的反卷积网络的文章(参见arxiv预印arxiv:1505.04366-2015)中找到。因此图像分类器455可以被配置为在适当训练之后输出密集的像素间的语义概率图。用于cnn图像分类器455的示例性测试操作参数包括0.01的学习率、0.9的动量以及5x10-4的权重衰减。在这种情况下,在10,000次迭代之后,学习率简化为1x10-3,其中,训练进行20,000次迭代。在这个测试实例中,原始的cnn权重首先在与普遍的图像分类任务相关联的图像的数据集上进行预训练。然后微调与本3d语义标记相关联的场景分割任务的权重。可以使用一个或多个图形处理单元以训练和/或实现图像分类器455。

在一种情况下,图像分类器455以连续的测光(例如,rgb)图像的形式接收视频数据415的帧,诸如,图1c中的测光数据185。在某些实例中,图像分类器455适用于接收深度数据以及测光数据或者代替测光数据,例如,深度图像,诸如图1c中的180。因而,图像分类器455可包括对应于rgb-d数据中的每一个的四个输入信道。在一种情况下,图像分类器455的深度信道利用三个测光信道的平均强度初始化。在这种情况下,0-255值色域可以通过增加图像分类器455使用的权重(例如,通过大约32次)转换为0-8m深度范围。在另一种情况下,以及或者代替rgb-d数据中的任一个,图像分类器455可以适用于使用面元法线值用作输入数据。例如,输入图像可包括3d面元表示使用用于拍摄装置的当前估计的位姿到2d图像平面上的投影,其中,图像中的每个像素值包括投射面元的法线值。在这种情况下,对应数据460可包括法线数据并且可被配置为用于图像分类器455的输入。

图像分类器455可以使用一个或多个标记的数据集(即,视频数据的帧)训练,其中,已经预分配了对象标记。例如,一个此类数据集包括如n.silberman等在2012年的eccv中公布的indoorsegmentationandsupportinferencefromrgbdimages中讨论的nyu深度数据集v2。对象或类别标记的数量可以取决于该应用。一个测试案例具有13个类别标记的特征。

在使用cnn的情况下,网络可包括学习的图像滤波器或内核的层。在最低层中,这些滤波器可以对应于简单的边缘和斑点检测器(例如,3x3矩阵),如果图像块包含就方位而言的“匹配”边缘或者颜色的匹配斑点,当利用小块输入图像卷积时,这导致大激活。在这种情况下,卷积称为元素间的相乘和求和。在某些情况下,可以使用互相关计算近似卷积运算。卷积之后,激活被输入到非线性激活函数中。在一个实例中,可以使用修正线性单元或relu(例如,输出=最大(输入,0))。继此之后,将构造更高层的抽象的每个后续层应用于滤波器的更多层,诸如,边缘的组合以构造复杂形状或纹理。还可以应用称为“最大池化”的程序,其中,选择小邻域内的最高激活并且传递至下一层。这个cnn处理的结果是降低采样的图像。然后可存储池化激活的位置。在进一步卷积运算之后,可以利用设置为原始存储位置的“非池化的”激活以及将激活“涂抹”回到高级的多信道特征图的反卷积滤波器“反过来”执行类似过程。最终,以与原始的输入图像相同的比例,计算原始图像中的每个像素的每个类别的一组分数。该分数通过将softmax函数应用于每个像素的类型转换为概率映射。这整个神经网络可以在训练图像的大集合上端到端地训练以使所有像素上的正确类别的总消极记录概率最小化。

返回至图4,slam系统465可包括诸如在国际性专利申请pct/gb2016/051423中描述的slam系统。slam系统465被配置为基于视频数据415的帧生成面元表示470。slam系统465可以被配置为将空间变形应用于面元表示470以关闭视频数据415的帧内的观察环路。这个空间变形产生面元表示中的至少一个面元的新的三维位置。如上所述,并且以下更详细地,可以使用变形图应用非刚性空间变形。在这种情况下,slam系统465不需要位姿图以构建全局一致的面元表示。这个slam系统465特别适于使用语义增强器440,因为在一般的交互使用期间频繁出现的一个或多个小的或大的环路闭合之后,生成的面元表示470自动变形以保持一致。因为表面表示在操作期间变形和校正,因此单独的面元保持与真实世界实体持续相关联,并且这使得能够在视点的广泛变化上长期融合每个帧的语义投影。

图5示出了可以应用于视频数据的帧的示例性过程流或管线500。这个过程流示出了诸如slam系统465的slam系统的部件如何与用于检测对象的设备(诸如,210或410)同步工作,以便生成观察的3d空间的语义标记的3d表示或映射。

在图5的实例中,为了每个到达帧ft,跟踪诸如相机等拍摄装置的位姿。这可以使用迭代最近点(icp)算法和测光(例如,rgb)对准的结合执行。这个跟踪可为每个帧产生新的位姿pt,该位姿参考“世界”帧和“拍摄装置”帧进行定义。然后新的面元使用位姿被添加到面元表示,并且现有的面元信息结合新的证据细化面元定义,例如,位置、法线和颜色信息。环路闭合事件的额外检查同时运行并且根据环路闭合检测优选面元表示。

更详细地,在图5中,slam系统和语义增强器这两者的部件通信耦接至视频获取界面505。这可包括图4中的视频获取界面405。在附图中,视频获取界面505供应视频数据的帧ft(其中,t可包括时标)。

图5中示出的slam系统部件包括帧到模型跟踪部件515、有效帧发生器520、模型融合部件525、模型分割器535、无效帧发生器550和配准引擎560。这些部件被配置为一起工作来生成3d面元表示530,它可具有图3a和图3b中示出的形式。图5还示出了图像分类器565、面元到像素映射器575、贝斯更新引擎585和正则化器590。在这种情况下,贝斯更新引擎585形成用于检测对象的设备的核心。用于检测对象的设备被布置为语义标记面元表示530,例如以便将对象标记概率分配给如图3a所示的面元。在本实例中,这些被假定为利用面元表示530存储;在其他实现方式中,它们可以存储在单独的面元连接的数据存储器中。

帧到模型跟踪部件515、模型融合部件525和图像分类器565各自被布置为从视频获取界面505接收视频数据帧ft。该数据可以从表示拍摄的或先前记录的视频数据的时间索引数据结构中检索和/或可以作为实时视频馈送的一部分提供,在每种情况下,该数据涉及当前由至少一个拍摄装置提供的帧。如上所述,在一个实现方式中,图像分类器565可以接收从视频获取界面505接收的每n个帧中的一个,即,由帧到模型跟踪部件515和模型融合部件525接收的帧的子集。在一种情况下,这可以是每2n个帧中的一个。

在一种情况下,如国际性专利申请pct/gb2016/051423中所描述的,分割器535被配置为基于至少一个表示属性将面元表示530至少分为有效和无效部分。至少一个表示特性可包括以下项中的一个或多个:给定面元的生成时间、给定面元的最后一次修改时间以及面元和拍摄装置之间确定的距离。例如,当自上次更新或修改的面元以来的时间(例如,为了数据融合而具有与其相关联的原始图像数据值)大于预定义的δt时,面元可以被声明为无效。当接收新的视频数据帧时,面元表示530的有效部分用于更新表示。例如,如图5所示,帧到模型跟踪部件515通信耦接至有效模型帧发生器520。有效模型帧发生器520被配置为从面元表示530的有效部分540计算有效模型帧。然后,帧到模型跟踪部件515被配置为将从有效模型帧生成器520接收的有效模型帧与从视频获取界面505接收的图像数据帧进行比较。模型融合部件525被配置为基于从图像获取界面505接收的图像数据帧和从有效模型帧发生器520接收的数据更新面元表示530。无效部分545不被有效模型帧生成器520和模型融合部件525使用。在其中面元表示530包括面元的无序列表的情况下,部分540和545可包括无序列表的过滤版本。

有效模型帧发生器520可以被配置为基于从面元表示的有效部分540的投影生成有效模型帧。在图5中,由有效模型帧生成器520在时间t-1生成的有效模型帧amft-1以及在时间t的视频数据的帧ft由帧到模型跟踪部件515接收,并且该有效模型帧amft-1用于生成在时间t被认为生成视频数据的帧的拍摄装置的位姿估计pt。如先前所讨论的,这可以表示拍摄装置的或拍摄装置静态地安装到的装置的实际位置和方位,或者可以呈现被视为虚拟的拍摄装置。位姿估计可包括图1b中示出的六个自由度的变量值。有效模型帧amft-1可包括时间t-1时的深度数据和测光数据的预测帧。

时间t时的位姿估计pt从帧到模型跟踪部件515传达到有效模型帧生成器520。有效模型帧生成器520被配置为使用时间t时的位姿估计pt来确定在时间t时的有效模型帧amft。这可包括使用位姿估计的变量值确定使用有效面元340的投影几何图形。

在一种情况下,帧到模型跟踪部件515可以被配置为将时间t-1时的深度数据和颜色数据的预测帧中的每一个与时间t时的视频数据帧进行比较。该比较可包括针对每对帧(即,针对深度数据对和颜色数据对)确定使每对中的帧之间的误差函数最小化的运动参数。然后,跟踪误差可以被定义为深度数据误差和测光数据误差的总和。这个总和可能是加权总和。在一种情况下,测光数据误差可以乘以加权因子,例如,参考深度数据误差来减少其贡献。在一种情况下,这个因子可能是0.1。可以使用最小二乘函数来生成自由度的变量值的估计。该估计可以用来确定将时间t-1时的位姿估计pt-1映射到当前位姿估计pt的转换。该当前位姿估计可以用于将视频数据ft与有效部分540对准。它可以被模型融合部件525用来将视频数据帧ft与有效部分540融合。

除了有效模型帧生成器520之外,图5的实例500进一步包括无效模型帧生成器550。无效模型帧生成器550类似于有效模型帧生成器520,但是被配置为从面元表示530的无效部分545生成无效模型帧imft。例如,无效模型帧可以由无效模型帧生成器550基于来自无效部分545的几何投影来计算。在一种情况下,有效模型帧生成器520和无效模型帧生成器550可以通过公共帧生成器实现,该公共帧生成器被配置为接收模型的有效和无效部分,作为差分输入,以便分别生成有效和无效模型帧。如参考有效模型帧描述的,每个无效模型帧可包括深度数据的预测帧以及测光数据的预测帧

图5中的配准引擎560被配置为将3d面元表示的有效部分540与3d面元表示的无效部分随着时间对准。在图5中,配准引擎560被布置为从有效模型帧生成器520接收有效模型帧amft,并且从无效模型帧生成器550接收无效模型帧imft。在本实例中,配准引擎560被配置为比较这两个帧,以确定将有效模型帧与无效模型帧对准的转换。如图5中的箭头所示,然后可以使用该转换来更新面元表示530,以使模型的有效部分和无效部分对准。这种转换可以用于对有效部分和无效部分应用面元的非刚性空间变形。在一种情况下,可以使用变形图来应用变形。这参考图7更详细地描述。变形或对准可以利用当前位姿估计pt。在某些情况下,有效和无效模型帧的配准可以使用与帧到模型部件515的过程类似的过程。例如,不是尝试将先前预测帧与新接收的图像数据的帧对准,配准引擎560被配置为确定使有效帧和无效帧对准的转换ht。如果执行对准,则配准引擎560可以将所有可见的无效面元,例如,在无效的模型帧中可见的面元,设置为有效。

平行于部件515至560的操作,图像分类器565被配置为接收视频数据帧ft,并且计算一组对象标记概率分布570。在这种情况下,如上所述,对象标记概率分布570被设置为图像集,每个图像对应于不同的对象标记,其中,图像中的空间元素值,在这种情况下的像素值表示具有标记的对象在空间元素中可见的概率。在图5中,对象标记概率分布570的集合由面元到像素映射器575接收。在这个实例中,面元到像素映射器575被配置为确定图像570中的空间元素(例如,像素)和面元表示530中的面元之间的对应。这个对应是基于跟踪的位姿pt,该位姿可以利用面元表示530存储或者通过帧到模型跟踪部件515供应。使用跟踪的位姿pt,在面元表示530中的给定3d位置wx(s)处的每个面元可以与经由相机投影u(s,t)=π(cwptwx(s))与帧ft相关联的像素坐标u相关联,其中,cwpt是拍摄装置(“c”)相对于3d表示的“世界”(“w”)的位姿,该3d表示是采用齐次变换矩阵cwpt=wcpt-1(其中,wcpt是“世界”相对于拍摄装置的位姿pt)和使用齐次3d坐标来计算。在一个实现方式中,这个投影的结果可以提供为对应的图像,其中,每个像素值具有从面元表示530关联的识别的面元。然后面元到像素映射器575能够基于像素对应利用面元映射从数据570输入的概率值,例如,基于该投影确定来自视频数据帧ft的像素[256,34]与面元“sf1234”相关联,并且因此与来自图像分类器565的相同像素相关联的概率值与面元“sf1234”相关联。在简单的情况下,像素对应可以是一对一的,例如,视频数据帧ft、包括概率值570的图像、以及指示面元对应的图像全部以共用分辨率设置(例如,640×480)。在其他情况下,图像可具有已知比例的不同的分辨率;因而像素对应可以基于已知比例映射。在一种情况下,如果没有先验证据是可用的,则利用可用的对象标记上的均匀分布初始化新生成的面元。

在图5中,一旦一组对象标记概率值580被分配给认为在视频数据帧中可见的面元,则它们被发送至贝斯更新引擎585。例如,面元到像素映射器575可以被配置为输出一组面元概率对,从图像分类器565识别给定面元(例如,“sf1234”)和对应的概率值。贝斯更新引擎585被配置为检索现有的对象标记概率值spt-1,以用于在数据580中识别的面元,并且使用数据580中的新的概率值更新这些现有值。例如,贝斯更新引擎585可以被配置为利用对应的概率分布借助于递归的贝斯更新从面元表示530更新可见组中的所有面元。贝斯更新可包括:

其中,ls是用于面元s的对象标记,li是该组可能的对象标记中的给定的对象标记,ou(s,t)是来自图像分类器的概率值,f识别视频数据帧,并且z是产生正常分布的归一化常数。这个更新可应用于每个面元的所有标记概率。

在简单的实现方式中,贝斯更新引擎585可以进行如下配置。针对表示投射的面元标识符的图像中的每个像素,首先检索用于对应面元的前一组概率(spt-1)。然后加载来自图像分类器565的对应预测570。如果图像分类器565将不同大小输出至投射的面元图像,则就高度和宽度而言像素位置可以重新映射至0和1之间的归一化实际值,其中,乘以分类器输出大小的值的最低数值可用于选择适当组的概率。针对每个类别(例如,对象名称),为该类别存储的概率乘以该类别的新的预测概率,并且整个组的类别上的这些相乘值的总数被累积。在更新了所有类别之后,总数(即,累积的概率)可用于归一化每个概率(例如,通过除以总数)。

在某些情况下,贝斯更新引擎585可以使用至少一个图形处理单元(gpu)实现。在这些情况下,可以使处理并行化。在这种情况下,可以应用排序方案用于在数据580中具有多个对应像素的面元。

由于通过面元到像素映射器575计算面元对应,因此通过贝斯更新引擎585应用的更新是可行的。这使来自多个视频数据帧的对象标记假定能够以贝斯的方式结合。在某些情况下,更新图像分类器565的概率值和/或应用可以延迟预定数量的帧,以便留出使系统适当地初始化并且在面元表示530内生成面元的适当集合。贝斯更新引擎585的输出是面元概率值spt的更新集合,该概率值表示给定面元应该分配最接近帧ft(即,最新证据)之后的一组可用的对象标记中的一个的概率。

在一个实现方式中,该组更新的面元概率值spt可以用于更新面元表示530。在某些实现方式中,如图5所示,正则化器590可以应用于更新的面元概率值spt,以便在更新面元表示530之前,生成一组正则化的面元概率值rspt。在某些情况下,正则化可以用于传播面元表示内的空间的语义信息。然而,可以不必在所有情况下要求如此。正则化器590可以基于面元位置、面元颜色和面元法线中的一个或多个应用正则化。

在一个实现方式中,正则化器590可以将条件随机场(crf)应用于对象标记概率值spt。在一种情况下,充分连接的crf可以应用高斯边缘位势。在这种情况下,每个面元可以当作crf图中的节点。不是使用crf得出每个面元的最终预测,它可以简单地用于从贝斯更新引擎585逐渐地改进预测。

图5中示出的示例性管线500被配置为逐帧地实时操作(例如,640×480分辨率的帧)。因而,因为接收新的视频数据(例如,用于每一帧或每n个帧),因此更新对象标记和面元表示以提供全局一致的且语义标记的表示。slam系统、基于面元的表示和语义增强协同工作,允许在环路闭合期间利用面元“携带”概率分布,并且还融合新的深度阅读以更新用于给定面元的深度和法线信息,而不破坏面元,或者它的根本概率分布。贝斯更新方案追踪每个面元的对象标记概率分布,并且使用由slam系统提供的对应,以便基于图像分类器预测更新这些概率。因为管线以帧速率实时操作,因此在人类和机器人应用程序的交互中使用它。此外,管线特别适于处理可变的场景观察;实际上,在测试中,惊人地看到这些观察形式以增加对象检测的精确性。

图6示出了根据实例的用于检测视频数据中的对象的方法600。可以使用参考图2、图4和图5描述的实例200、400和500实现该方法600。

在框605中,使用二维图像分类器确定用于视频数据帧的空间元素的对象标记概率值。例如,二维图像分类器可以是如上所述的cnn,该cnn被配置为接收视频数据帧作为2d图像并且输出用于2d图像的至少一个区域的概率值。在这种情况下,概率值涉及多个可用的对象或类别标记,例如,表示用于对象数据定义的单词和/或标识符的字串标记。在一种情况下,可以输出用于输入2d图像的每个像素的概率值并且这个输出可以构造为一个或多个图像,其中,在某些情况下,每个图像包括特定的对象标记的概率分布。这些输出图像可以称为“像素映射”。这可以是其中二维图像分类器包括通信耦接至cnn的输出的反卷积神经网络的情况。二维图像分类器可以被配置为至少基于帧的颜色数据和深度数据计算对象标记概率值。

在框610中,识别空间的3d面元表示或模型中的对应于空间元件的面元。在这种情况下,空间元素和面元之间的对应是基于面元表示的投影使用帧的估计位姿来确定,例如,面元模型从帧的当前估计的位姿的视点投射到2d平面上。如参考图4和图5所描述的,可以逐帧地通过处理视频数据帧生成面元表示,包括:将使用3d面元表示生成的渲染帧与来自视频数据的帧的视频数据帧进行比较以确定用于视频数据帧的拍摄装置的位姿并且使用位姿和来自视频数据帧的图像数据更新3d面元表示。在一种情况下,用于生成三维表面元素表示的视频数据的帧的子集被输入至二维图像分类器。

在图6中的框615中,基于用于对应的空间元素的对象标记概率值更新3d面元表示中的面元的对象标记概率值。这产生存在于视频数据中的对象的语义标记的3d面元表示。例如,可以通过采用每个面元的对象标记概率值的集合中的最高的概率值(例如,使用最大似然方法)生成表示存在于视频数据中的对象的估计。

因为(例如,从直播视频馈送或记录)接收新的视频数据,因此框605、610和615例如逐帧地反复迭代。因而,持续更新对象标记概率值。因此可以开始对象标记概率分布的初始化统一值,然后集中于场景的地面实况。此外,该方法能够适合于空间或场景的结构变化,例如,对象到达或离开场景或者与场景交互。

返回至图6,在框605、610和615的迭代期间,即,在视频数据的处理期间,该方法可以进一步包括检测环路闭合事件。当从新接收的视频数据生成的面元被确定为与对应于三维空间的相同区域的面元未对准时,出现环路闭合事件,该面元基于先前处理的视频数据先前生成和/或修改。例如,当拍摄装置完成运动环路时,例如,返回以查看之前观察到的空间区域,面元表示的先前部分可能与面元表示的较新部分不对准。由于表示的生成使用了估计并试图使误差函数最小化,所以发生面元表示中的这种不对准或“漂移”,例如,非确定性地操作,使得可以在生成模型时累积位姿估计和表示中的小误差。另外,不需要位姿图而构造面元表示,其中,一般持续优化位姿图以减少误差。随后参考图7描述用于检测和实施环路闭合事件的示例性管线。在一种情况下,例如针对每个帧,进行连续尝试,以便将当前估计的拍摄装置(即,有效模型)内的面元表示的有效部分与相同帧内的面元表示的无效部分配准。

如果检测到环路闭合事件并且例如基于所需的对准度量或变形水平对准是可行的,则空间变形可应用于面元表示,其中,空间变形修改表示中的面元的三维位置。在某些情况下,这个空间变形进行将面元表示的较新的有效部分与较旧的无效部分对准,其中,整个3d面元表示可以是可非刚性地变形为适当的位置以反射该配准。通过包含许多小的局部模型到模型环路闭合以及更大规模的全局环路闭合,可以保持接近面元表示的概率分布的模式,并且实时地产生全局一致的重构,而无需使用位姿图优化或后处理步骤。使用频繁的非刚性模型变形,例如,逐帧地改进了拍摄装置的轨迹估计和表面重构质量。这种方法在长范围的“走廊式”相机运动和更多的一圈圈综合的空间扫描轨迹上也是有效的。

当面元变形时,在框605、610和615的后续迭代中使用新变形的面元表示。在所有其他参数保持不变的情况下,这具有修改分类的视频帧和面元的空间元素之间的对应的效果。例如,如果拍摄装置保持静态并且观看场景的区域,使得在表示这个观看的环路闭合事件像素将与面元表示中的面元的第一集合相关联之前,但是在环路闭合事件相同像素将与面元的第二个不同的集合相关联之后,位姿保持不变。因为每个面元具有对象标记概率值的分配的集合,这意味着输出那些像素的图像分类器将用于在环路闭合事件之后更新对象标记概率值的不同的集合。环路闭合事件进行“快照”先前一起偏移开的面元,使得在实际的观察空间中的模型面元和表面之间存在一致关系。在本方法中,环路闭合事件还一起进行“快照”用于那些面元的对象标记概率,例如,使得与“椅子”有关的像素分类一致用于更新具有形成椅子的一部分的表面的面元。这导致精确的分类。令人惊讶地,然而对象分类的比较方法在有环路闭合事件参与的情况下退化(因为资源密集的启发式需要处理疏远的概率值的不同集合),本方法实际改善精确性,因为“不断改变方向的”或“一圈圈的”视频序列包括其分类在面元模型内一致合并的对象的多个视图。例如,围绕诸如床或桌子等对象行走将导致视频数据从多个角度具有对象的视图。由于计算机视觉的非确定性本质,利用相对的点云方法,这利用关联的对象标记概率值产生多个单独的3d点。然后存在如何将这些点利用语义标记结合到全局一致的模型中的问题。利用本方法,变形、面元和迭代的基于帧的更新导致表示来自一致应用于相同面元的不同视图的对象和概率的有限的面元。

在某些情况下,该方法可包括基于分配给面元的对象标记概率值利用3d对象定义替换一个或多个面元的集合的另一个框。例如,如果彼此的预定距离内的一组面元具有70%以上的“桌子”对象标记概率,这些面元可以利用桌子的3d表示替换,该桌子的尺寸通过将预定义的对象形状适合于面元的位置设置。

在某些情况下,在框615之后,该方法可包括正则化用于表面元素的对象标记概率值。这可以涉及应用如上所述的crf和/或基于位置数据、颜色数据和法线数据中的一个或多个正则化分配给面元的对象标记概率值。

在一种情况下,可以通过注释面元表示,例如先前通过slam系统产生的一个面元表示生成用于图像分类器的图像的训练集。在这种情况下,现有表示中的面元可以利用对象标记注释以提供带注释的表示。然后可以针对先前用于生成表示的视频数据的每个帧进行表示的投影,其中,该投影将带注释的标记投射在2d图像上,使得每个像素具有对象标记。然后可以使用2d图像训练图像分类器。

现在将参考图7描述关于示例性环路闭合方法的更多详情。

图7示出了可以提供除了图5中示出的那些之外的部件的实例700。在图7中,配准引擎710(其可以具有与先前描述的配准引擎560相同的功能)通信地耦合至数据存储装置720。数据存储装置720随着时间存储面元模型(例如,530)的编码730(“ε”)。这些编码730可以表示它们生成的有效模型帧amft的编码;例如,可包括深度数据和测光数据的编码。在一种情况下,该编码可以是有效模型帧的压缩的和/或下采样的版本。在某些情况下,可以使用来自视频数据的当前帧,来填充没有任何映射表面的有效模型帧中的预测视图的部分。在某些情况下,该编码可包括有效模型帧的蕨(fern)编码。在b.glocker、j.shotton、a.criminisi以及s.izadi,tvcg于2014年9月的论文realtimergb-dcamerarelocalizationviarandomizedfernsforkeyframeencoding中描述了蕨编码。蕨将rgb-d图像编码成由一组固定像素位置中的每个rgb-d通道上的二进制测试的值组成的代码串。本实例与论文的不同之处在于存储与图像数据相反的预测视图。每个编码可包括与以下项中的一个或多个相关联的数据:蕨编码串;深度数据的下采样的预测帧;测光数据的下采样的预测帧;当前位姿估计;以及编码的初始化时间。可以使用下采样帧大小,例如,80×60。

在图7的实例中,配准引擎710接收有效模型帧amft。然后尝试将有效模型帧amft与数据存储装置720中的一个编码730进行匹配。例如,可以从所接收的有效模型帧amft中生成新的编码并且将其与存储在数据存储装置720中的编码730进行比较,例如,可以使用蕨编码来执行匹配。匹配可以通过比较功能的输出来指示,例如,错误或匹配成像度量可以指示比较的帧或编码之间的相似度。例如,可以在蕨编码之间进行比较。在这种情况下,蕨编码可包括二进制码,其中,两个图像可以通过对两个二进制码之间的“距离”求和来进行比较。最小距离被认为是“最佳”匹配,其中,距离可以与阈值进行比较,以确定匹配是否“好”。有效模型帧amft可以下采样,以执行匹配,例如,可以对采样帧进行蕨编码。在这种情况下,可以使用指示最佳匹配的度量值(例如,指示差异或误差的成像度量的最低值)来指示匹配的存储编码εj。存储的编码以及具有用于匹配的数据的编码(例如,蕨编码)还可以包括模型帧的编码,例如,在一种情况下,用于最佳匹配的成像度量值可以进一步与预定义的阈值进行比较,以确定匹配是否有效。例如,甚至“最佳”匹配可能是不良的实际匹配,例如,具有高匹配误差;阈值比较从而避免了使用这些不良匹配。配准引擎710可以使用下采样,就好像找到了相对“粗略”的匹配并且是正确的,后续的有效和无效模型帧将足够接近,以使得能够进行如图5中所执行的对准,例如,将在“全局”环路闭合之后足够对准,使得可以实现更精确的“本地”环路闭合。

在一种情况下,如果找不到匹配,例如,如果匹配的成像度量高于给定的误差阈值,则执行有效模型帧amft和无效模型帧的配准,例如,如图5所示。另一方面,如果找到“最佳”匹配,例如,如果匹配的成像度量也低于给定的误差阈值,则从数据存储装置720中检索匹配编码εj,并且由配准引擎710访问。配准引擎710然后被配置为指示与关于图5描述的对准操作相似的对准操作;然而,在当前情况下,在有效模型帧amft和匹配编码εi之间执行对准。例如,有效模型帧的部件例如可以与匹配编码εj的部件例如对准。在一种情况下,可以评估对准度量并将其与阈值进行比较,以确定是否要执行对准,例如,需要与预定义的阈值相比较低的未对准的低水平以继续该对准。如果不执行对准,则配准引擎710可以尝试执行如参考图5所描述的有效和无效模型帧的对准。如果要执行对准,则配准引擎710可以被布置为指示模型变形器740使现有的三维模型750变形,例如,确定用于将有效模型帧的部件与匹配编码的部件对准的三维变形。在某些情况下,在可以被认为是“全局环路闭合”的这种对准之后,3d面元模型的有效和无效部分不更新。这可能是因为对准使得有效部分和无效部分进入更大的对准,使得可以执行图5所示的配准(例如,使得可以对下一个帧成功执行“本地环路闭合”)。不更新这些部分也使得可能在随后的配准操作中校正或恢复不准确的对准。在该对准之后,还可以通过将转换应用于与编码(例如,)相关联的位姿估计来更新(例如,以的形式)当前的位姿估计pt。

在本实例中,模型变形器740被布置为访问现有3d面元模型750并且使用变形图760来变形该模型,以生成对准的3d面元模型770。变形图760包括与在模型750中分布的面元相关联的一组节点和矢线。在一种情况下,每个节点可包括:时间戳;与面元相关联的三维中的位置;转换定义;以及一组邻居。每个节点的邻居,即,相邻的面元组成可以引导的图的矢线。以这种方式,当执行模型的变形时,变形图连接3d面元模型的彼此影响的部分。邻居的数量可能例如在一个实现方式中限于四个邻居。转换定义可以包括仿射(affine)转换的定义,例如,如由3×3矩阵(初始化为单位矩阵)和3×1矢量(初始化为0)或者由双四元组表示的。当执行变形时,可以根据一组表面约束来优化每个节点的转换定义。当应用变形时,识别图中用于3d面元模型的特定面元的一组影响节点。基于此,面元的位置可基于经转换的影响节点的加权和(例如,根据那些节点的位置与当前位置元素相距的距离,应用于每个影响节点的转换定义的加权和)来变形。可以以这种方式变形面元的位置和法线。例如,变形图中的节点可以基于其初始化时间与面元相关联。这些节点的列表然后可以通过这个时间戳排序。当指示面元的变形时,可以通过节点的这个列表执行二分查找,以便填充一组时间邻近的节点(在此该节点与其他面元相关联)。从这个组中,基于距离度量为面元确定一组k个最近的节点。这些节点然后用来使面元变形。这个过程很快并且有助于实现实时或接近实时的性能。

在一个实例中,可以逐帧地构建变形图。在一个特定情况下,可以针对图像数据的每个帧(即,ft)构建用于三维模型的新变形图。这可包括确定变形图的连通性,例如,每个图节点的一组邻居。在一种情况下,使用3d面元模型750初始化变形图。因为从面元表示构建变形并且用于修改相同的表示,这可被称为“映射中的”或“模型中的”环路闭合。例如,可以从面元的位置(例如,图3b中的p)确定帧的节点位置并且节点时间戳可被设为面元时间戳(例如,图3a的“init_time”)。在一种情况下,可以基于面元的采样(诸如,系统采样)生成变形图的节点。这种采样可以均匀地分布在整个群体上,使得变形图的空间密度反应3d面元模型的空间密度。这组采样节点可以基于节点时间戳来排序。在此之后,可以使用时间信息来确定变形图的连通性。在一种情况下,可以选择在时间上相邻的节点组,例如,基于节点时间戳。例如,如果具有四个邻居并且正在考虑给定的节点,则可以选择具有前两个时间戳(在时间排序的列表中)的节点以及具有随后的两个时间戳(在列表中)的节点作为给定节点的邻居。这具有在计算上有效并且防止3d面元模型的时间未校正的区域相互影响(例如,防止有效区域影响无效区域)的优点。例如,在空间上考虑时,与共用三维空间的多次通过相关联的变形图可能是复杂的并且在其自身内部缠绕;然而,排序并且考虑图在时间上允许多次通过不相交并自由对准。这可以与基于位姿时间确定图形连通性的比较方法形成对比,例如,在使用位姿图的情况下。

现在将更详细地描述可由模型变形器740应用以使用变形图760来变形现有三维模型750以生成变形模型770的示例性过程。模型变形器740通过访问给定面元定义开始。作为第一操作,模型变形器740定位变形图760的节点,例如,在时间上离给定面元最近的另一个面元。时间分离被存储为变量。接下来,模型变形器740在时间上定位邻近的节点,例如,远离预定义数量的节点的时间分离而移动,以探索。这些附近的节点然后可以由距离度量来排序,诸如,参考给定面元的位置的欧几里得距离。然后,可以选择给定数量的“邻居”节点(例如,使用以上讨论的邻居限制)作为最接近的k个节点。然后可以基于节点和给定面元之间的归一化距离来生成这些邻居中的每一个的一组权重。还可以确定权重的总和。然后作为最后的操作,可以应用邻居的转换定义,如通过每个邻居的单独计算的权重来加权并且通过权重的总和来归一化。这可以包括应用以上参考给定面元讨论的仿射转换的变量,以使面元的位置和法线向量变形。给定面元的其他方面保持相同(例如,可以复制到变形模型770)。然后这个使概率值能够从旧的面元复制到新的变形面元,而无需繁重的处理。这再次能够实时实现。

在一个实例中,使用模型变形器740来执行通过配准引擎560或710的方式执行的对准。在这个实例中,这是通过优化变形图760的参数来实现的。给定基于配准引擎560或710的输出设置的一组表面对应,优化可以反映在面元表示中的表面配准。这些表面对应可以指示第一时间的特定的源位置将到达或与第二时间的特定的目的地位置一致。每个单独的表面对应可以是绝对的(使变形位置与三维空间中的绝对位置相关)或相对的(使变形位置与不同变形位置相关)。当对准有效帧和无效帧(例如,如参考图5所描述的)时,源点可以表示有效模型帧中的点,并且目的地点可以表示无效模型帧中的点,其用于对准模型的有效和无效部分。例如,第一时间可包括用于生成给定的无效模型帧的无效面元的初始化时间;第二时间可以是当前帧时间;如基于当前位姿估计pt观看到的,源点可以是用于生成有效模型帧(例如,用于计算)的采样的面元;并且如基于三维中的当前位姿估计pt加上所定义的转换h观看到的,目的地点可以是用于生成有效模型帧(例如,用于计算)的采样的面元。在这种情况下,当正在应用所定义的转换(h)时,目的地点等于无效模型帧中的点,计算所述转换(h),以将模型的有效部分映射到无效部分,例如,该转换至少是由图5中的配准引擎560执行的对准的一部分。这些表面对应可以用于应用“本地环路闭合”。类似地,当使有效帧与所存储的表示对准时(例如,如参考图7所描述的):第一时间可包括用于所存储的表示的初始化时间;第二时间可以是当前帧时间;如基于当前位姿估计pt观看到的,源点可以是用于生成有效模型帧(例如,用于计算)的采样的面元;并且如基于三维中的用于编码的位姿估计加上所定义的转换h观看到的,目的地点可以是用于生成有效模型帧(例如,用于计算)的采样的面元。再次,当所定义的转换被应用于有效模型部分时,目的地点表示有效模型和无效模型的对准。这些表面对应可以用于应用“全局环路闭合”。表面对应可以针对一组采样的像素来计算,例如,针对使用的帧。在这些情况下,对准或配准可以包括针对这组表面对应解析在三维中所定义的转换。

在以上实例中,可以在一个或多个成本函数中使用表面对应来优化变形图的参数。例如,一个成本函数可包括等于变形的源点(例如,当应用变形图时)与目的地点之间的距离误差的总和的误差函数,源点和目的地点是在表面对应中使用的点。如本文中所描述的面元表示的时间参数化允许三维空间的相同部分的多次通过非刚性地变形为对准,从而允许建模继续并且新的数据融合到3d面元表示的重新访问的区域中。另一成本函数也可用于将面元表示的无效部分“固定”到位,即,将模型的有效部分变形成无效部分。该成本函数可包括等于变形的源点(例如,当应用变形图时)与未变形的目的地点之间的距离误差的总和的误差函数,该目的地点是在表面对应中使用的点。还可以使用另一成本函数来将面元表示的先前配准的区域保持在原位,即,当使映射的不同区域变形时,先前配准的区域的相对位置可能需要被约束,以保持相同。该成本函数可包括等于变形的源点(例如,当应用变形图时)与变形的目的地点之间的距离误差的总和的误差函数。该成本函数防止环路闭合及其相关的变形拉开面元表示的先前配准的区域。误差函数还可以被定义为最大化变形图的所定义的转换中的刚度(例如,通过最小化在乘以其转置的转换与单位矩阵之间的距离度量),并确保平滑变形(例如,基于包含邻居转换的距离度量)。这些所描述的误差函数中的一个或多个可以被最小化(例如,在加权和中),以确定变形图的转换定义。例如,可以使用迭代的高斯-牛顿方法以及稀疏的cholesky因子分解,来在处理单元上求解方程组。如果在实现方式中可用的话,则图形处理单元可用于将变形图应用于面元表示。这可以在图形处理单元上并行执行。在某些情况下,可以使用一个或多个成本函数来生成度量,以确定是否应该执行对准。例如,如果一个或多个成本函数输出低于预定阈值的误差值(例如,比较变形源点和目的地点的成本函数),则接受对准;如果误差值高于预定阈值,则拒绝对准(适当地分配相等情况)。

如上所述,可以使用基于预测的表面状况的位置识别操作解析“全局环路闭合”。这使得能够在不使用位姿图的情况下(例如,在不使用用于将拍摄装置相对于图像数据的关键帧的位姿建模的单独图形结构的情况下),来生成全局一致的密集的面元表示或模型。因此,包含这些部件的设备能够执行实时或接近实时的密集的同时定位和映射,操作实际上是同时的,而不是作为两个单独的操作来执行。在某些测试情况下,发现本地环路配准比全局环路配准更频繁地执行(例如,以10或20-1的比率)。在某些情况下,可能不会执行全局环路配准(例如,可能不需要或可能找不到匹配)。本地和全局环路配准的应用可能取决于正在处理的视频数据,例如,可能取决于使用拍摄装置的观察的轨迹。在某些测试情况下:帧的数量大约为103;面元的数量大约为106;并且变形节点的数量和存储的表示的数量大约为102。根据当前在三维模型中的位置元素的数量,用于这些测试情况的帧处理在20到40毫秒之间。这大约为30hz或者没有语义标记的面元表示的生成的帧每秒的处理速度。在这些测试情况下,测试平台采用了具有32gb内存的3.4ghz的corei7-4930k处理器以及具有3gb内存的gtx780ti图形处理单元。

图8示出了可以与图6的方法600同时运行的更新3d面元表示的方法800。在框805中,从拍摄装置接收深度和颜色帧。在框810中,生成基于3d面元表示的有效部分的预测帧。这可包括处理面元定义并且仅使用在特定时间窗内具有最后修改的时间戳的面元,例如,相对于当前时间。这可以进一步包括在时间t-1使用拍摄装置的位姿估计,例如,其中,被分类为“有效”的面元投射到指示拍摄装置在时间t-1可观看的区域的位置和方位的平面上。在框815中,执行帧到模型跟踪。这可包括通过比较从框805和810接收到的数据来确定当前时间的位姿估计。在框820中,可以使用当前时间的确定的位姿估计来更新预测的深度和颜色帧,例如,将被分类为“有效”的面元投影(或“飞溅”)到指示当前位姿估计所指示的在时间t时由拍摄装置可查看的区域的位置和方位的2d平面上。

在825中,确定更新的预测的深度和颜色帧是否匹配任何存储的编码。这可包括参考图7描述的比较。如果发现与特定的存储表示匹配,则在框830中,确定更新的预测的深度和颜色帧以及与特定存储的编码对应的数据的配准是不是可能的。这可包括应用参考图7中的模型变形器740描述的变形。如果一个或多个成本函数的输出指示使用变形图的变形导致高于给定阈值的误差,考虑到在一个或多个更新的预测帧中的约束点与所存储的编码的表面对应,则所述确定可以是否定的;否则,确定可以是肯定的。如果框830中的确定是否定的,例如,认为在存储的表示和更新的预测帧之间不存在可能的配准,则该方法移动至框835,其中,生成深度和颜色数据的无效模型帧。如果框835中的确定是肯定的,例如,认为在存储的编码和更新的预测帧之间存在可能的配准,则在框840中,3d面元表示被变形。这可包括应用优化的变形图,其中,优化被前述表面对应约束,并且其中,该优化使一个或多个误差函数最小化,以确定由变形图的节点应用的转换定义。

在框835中,生成深度和颜色数据的无效模型帧。在框845中,确定框820中的更新的预测帧是否可以与在框835中生成的无效模型帧配准。框845基于表示从与当前位姿估计相关联的两个部分中的每个生成的预测视图的数据,有效地确定有效模型部分与无效模型部分的配准是否可能。框845中的确定可以基于使用框815中作为帧到模型跟踪的一部分应用的技术对这两组预测视图的比较,例如,通过确定几何图形的和/或测光误差。在一种情况下,除了其他度量,可以使用包括几何图形的和/或测光误差的加权误差函数的输出,以在框845中进行确定,例如,如果误差低于给定阈值,则认为可以进行配准。也可以评估误差函数的协方差度量的特征值,例如,与阈值进行比较,以进行确定。框845还可包括确定一转换,该转换将预测的帧映射到彼此,例如,用类似的方式确定用于估计位姿的转换。该转换可以用于类似于在框830中进行的确定,即,可以形成用于限制优化的表面对应的一部分,其中,可以有助于用于确定有效和无效部分的配准是否可能的度量。

如果在框845中存在肯定的确定,则在框840中执行面元表示的有效和无效部分的变形。这可包括应用作为框845的评估的一部分而确定的转换。再次,框840可包括确定一组变形参数,例如,作为优化的结果,其中,参数可以形成变形图的一部分。框840可包括应用使用图的参数以使面元变形。框840的输出可以将所有可见的无效面元,例如,在无效模型帧中可见的那些面元,设置为有效。

最后,在框850中,在框805中接收到的深度和颜色帧与从框840得到的任何变形的面元表示融合。如果框845中的确定是否定的,则可以不执行变形,并且图像数据可以与未变形的表示融合。

在框850之后,可以为视频数据的后续帧重复该方法,例如,返回到框805,其中,接收深度和颜色数据的下一帧。然后可以在框810中使用在框850中输出的融合的面元表示,来生成修正的有效模型深度和颜色帧,例如,以便跟踪下一帧。在框810的迭代之后,可存储编码,以供稍后在框825的匹配中使用。

上述某些方法将面元表示的有效区域与表示的无效区域强对准,以实现紧密的本地环路闭合。这可以关于面元表示的表面。在表示的有效部分偏离无效部分太远以使局部对准收敛的情况下,可以使用基于外观的全局环路闭合方法来引导使表示的有效部分与下面的无效部分重新对准的变形,用于紧密的全局环路闭合和表示一致性,例如,参照模拟的表面。

现在将参考图9a至图9c描述表明可以如何更新面元表示的简化的样例900。

图9a示出了包括放置在地板915上的圆柱体对象905的场景910的示图。图中的场景910表示“地面实况”,即,场景的实际内容。图中还示出的是3d面元表示920。实际上,3d面元表示920可以实现为参考图3a和图3b描述的列表;然而,为了便于说明,图中示出了面元在3d模型空间内的范围(尽管附图是2d,但是假设920是3d模型的视图)。在3d面元表示920中,存在四个面元:s1至s4。如可以理解的,为了便于说明,已经大大简化了,一般的面元表示可包括一百万个左右面元。面元表示920表示slam系统运行给定的持续时间之后(或者可替换地,在加载了现有表示之后)的模型状态,因为可以看出面元s1近似对应于垂直的地板平面并且s2至s4近似模拟圆柱体对象的不同表面。图中还示出了面元s1至s4的法线向量。

图9a另外示出了两个示例性对象标记概率分布902。在这个简单的情况下,存在假设两个对象标记可以通过图像分类器分配:“地板”和“圆柱体”。在这种情况下,对象标记概率分布包括两个图像930和940。如从附图中可以看出,每个图像具有指示具有对象标记的对象存在于像素中的概率的像素值。例如,第一图像930具有一组像素935,该像素具有指示图像分类器指示“圆柱体”对象看起来存在于那些像素中的像素值(例如,根据值比例,在0.5和1或者128和255之间)。例如,第二图像940具有一组像素945,该像素具有指示图像分类器指示“地板”对象看起来存在于那些像素中的像素值(例如,根据值比例,在0.5和1或者128和255之间)。尽管在附图中示出为二值图像,实际上这种图像一般可看作灰度图像。

在图9a中,还示出了用于帧的示例性对应数据904。在这种情况下,对应数据904还以对应图像950的形式,该对应图像具有与图像930和940相同的分辨率。对应图像950具有基于当前相机位置将3d面元投射到2d图像平面上的特征。在图9a中,相机位姿涉及如方框910中示出的场景的视图,即,其中,圆柱体对象在房间的左上角中。对应图像950包括具有四个值中的一个的像素:[1、2、3、4]识别四个面元s1至s4中的一个,其中,第一组像素p-s1具有表示面元s1的对应的值1,第二组像素p-s2具有表示面元s2的对应的值2,第三组像素p-s3具有表示面元s3的对应的值3,并且第四组像素p-s4具有表示面元s4的对应的值4。在其他情况下,以与图像分类器数据相似的方式,对应图像950可包括四个二值图像。对应值用于基于图像930和940中的概率值更新与每个面元相关联的概率值906。在图9a中,示出了该组面元的四个数据定义:d-s1至d-s4,其中,每个面元的每个数据定义具有两个类别的对象标记概率值(“pf”指示标记“地板”的概率并且“pc”指示标记“圆柱体”的概率)。如果pf和pc利用均匀分布(即,每个值0.5)初始化,然后更新操作包括将初始值乘以用于与给定面元相关联的像素的类别相关联的所有概率值。例如,面元2的pc值0.5可以乘以覆盖图像930中的区域p-s2的像素的所有概率值(加上正常化)。在某些并行化处理管线中,如果面元具有多个对应的像素,则可以使用这些对应像素的子集更新面元的概率。例如,为了更快速地操作,可以使用图像950中给定的面元标识符的第一出现(例如,按行优先次序)更新优先于相同的面元标识符的其他出现的面元概率。概率更新还可以包括应用于面元状态的正常化过程。图9a示出了一个更新之后的面元的数据定义。

图9b示出了与图9a相同的元素,但是此时从不同的角度(即,不同的相机位姿)观看该场景。这可反映视频数据的第二(即,后续的)帧的操作。如方框910所示,现在相对于图9a的后面观看圆柱体对象。尽管面元表示920保持相同(如在3d中定义的),但是这个然后从图像分类器和不同组的投影的像素产生不同的数据902。在图9b中,在图像930和940中体现的对象标记概率值再次用于基于对应数据904更新面元数据定义中的现有概率。

图9c示出了在图9b中示出的视图变化之后,回到图9a中示出的相似的视图。在该实例中,如在面元表示920中可以看出的,这个返回至相似的视图触发使面元s4变形的环路闭合事件。这可以涉及视频数据的第三(即,另一个后续的)帧。在这种情况下,尽管更精确的模型具有与圆柱体对象905的表面有关的面元s2至s4的事实,但是虚假数据或优化偏移可能最初意味着面元s4从面元s2和s3偏移。可以在图9c中看出,因为从与图9a相似的角度观看场景,因此来自图9c中的图像分类器的数据902与图9a中示出的相似。然而,因为面元s4已经变形,因此图9c中的对应数据904现在与图9a中提供的不同。这意味着来自数据902的相似的概率值现在导致不同的面元数据定义更新:具体地,因为投影的像素p-s4在对应数据904中上移,因此现在主要通过像素值935加权以及较少通过像素值945加权面元s4的概率值。然后这导致面元s1的更精确的分类,因为像素945中更多的概率值用于更新(之前这些值中的一些应用于面元s4而不是s1,因为像素p-s4覆盖图9a中的950中的p-s1)。由于这个区域与修正的p-s4重叠,还导致面元s4的更精确的分类,因为它现在受到像素值935的影响。图9c中的更新的数据定义908中示出的面元对象标记概率值现在比图9a和图9b中的前面的定义更加精确。在更新的数据定义908的情况下,如果对象模型替换的阈值被设置为70%以上,则面元s1将由“地板”对象模型替换并且面元s2、s3和s4将由“圆柱体”对象替换(如基于面元尺寸制定的比例)。

图10a和图10b示出了从以上描述的方法和设备输出的示例性测试。图10a示出了通过将slam系统应用于nyu深度数据集v2(如参考上述)创建的卧室的面元表示1010。图10b然后还示出了相同场景的语义标记的面元表示1020。在这种情况下,选择面元的对象标记作为具有用于该面元的最高的概率值的对象标记。不同的标记具有不同的阴影。在图10b中指示标记“窗户”、“墙壁”、“家具”、“床”和“地板”及其对应的阴影。应注意,已经基于输入视频数据自动完全生成表示1010和1020-不存在物品的手动标记。

图10b示出了来自nyu深度数据集v2的其他场景。每行涉及不同的场景。图像1050的第一列示出了视频数据的输入帧。第二列1060示出了“地面实况”,即,类别标记的人类注释。第三列1070示出了在单个帧的分类之后分配的对象标记。第四列1080示出了使用本文中描述的方法和设备的实现的示例性输出。可以从比较区域1075和1085看出,本方法和设备提供更接近“地面实况”的更加一致和精确的输出。

图10a和图10b表明了使用slam系统提供帧之间的像素间的对应,允许每个帧2d的融合分割为连贯的3d语义映射。此外,实时生成该连贯的3d语义映射,能够环路闭合的方法适用于交互式的房间扫描并且结果示出了对应的2d分割精确性中的明显改善。这个然后为低速存储器和电源移动装置(例如,智能电话或家用机器人装置)上的实时语义分割提供机会。在生成的测试组上,使用除了nyu深度数据集v2外的所描述的方法和设备看到标记精确度的大改善,这一般具有较少变化的轨迹。这个表明视频数据中存在视点变化时的本方法的精确度优势。这对实地的自主代理具有特定的优势,其中,使用明显更长且更多的变化轨迹。本文中描述的某些实例适用于实时交互使用,例如,人类或机器人利用标记质量的实时测量(即,与面元相关联的对象标记概率)决定如何移动拍摄装置获得全部标记的覆盖范围并且接近模糊点。此外,对象标记可以反馈到任何slam系统以改善3d表示的精确度。例如,环路闭合操作可使用对象对应以提供对准和/或对象-或者特定类别的顺畅。

在某些情况下,利用来自数据库的完整且几何图形精确的模型替换已经识别为特定对象的面元的组合可能具有几个益处。例如,对象替换可改善映射表示的精密度(例如,允许台式计算机键盘上的精确键的表示)。还可以利用先前的语义含义的场景正则化以前的嘈杂深度估计(例如,允许表示中的完全平坦的墙壁或地板)。此外,还可以填充在具有可能存在的合理的近似值的视频数据中尚未观察到的映射区域(例如,如果利用单个圆柱体替换面元,则可以表示看不见的杯子的其他侧面)。具有对象替换的映射表示还可以具有减少存储需求的其他益处,因为与成千上万个单独的面元相比,需要很少参数来描述单个对象实例。

如在本文中参考图2、图4、图5和图7所描述的功能部件的实例可包括专用的处理电子设备和/或可以通过至少一个计算装置的处理器执行的计算机程序代码实现。在某些情况下,可以使用一个或多个嵌入的计算装置。这可包括与存储器关联操作的至少一个处理器,以执行加载到计算机可读介质上的计算机程序代码。该介质可包括诸如可擦除可编程只读存储器等固态存储器,并且计算机程序代码可以包括固件。在其他情况下,这些部件可包括适当配置的片上系统、专用集成电路和/或一个或多个适当编程的现场可编程门阵列。在一种情况下,这些部件可以通过移动计算装置和/或台式计算装置中的计算机程序代码和/或专用处理电子设备来实现。在一种情况下,这些部件可以通过执行计算机程序代码的一个或多个图形处理单元来实现,以及或者替代先前的情况。在某些情况下,这些部件可以通过并行实现的一个或多个功能来实现,例如,在图形处理单元的多个处理器和/或内核上。

在本文中描述的某些情况下,面元表示(例如,270、570、530)是3d空间的“密集”模型。在这种情况下,存在大量形成模型的面元,例如,数十万甚至数百万的元素。这可以与基于特征的或“稀疏”的模型进行比较,其中,可能只有数十或数百个定义的模型点。类似地,面元表示可以被认为是“密集的”,因为视频数据帧内的像素值被处理并且有助于模拟和标记三维空间。例如,在“密集”表示中,帧中的每个像素可以为跟踪、映射和标记过程贡献尽可能多的信息。这使面元3d模型能够投影回到合成的拍摄装置或相机中以重建“密集的”图像,即,以拍摄装置的分辨率的图像,其中,该合成的图像中的大多数像素具有基于存储有模型的信息合成的数据。相反,“稀疏”系统,例如,利用关键点或提取的特征的系统,仅使用图像数据中的像素值的小子集来生成模型。在“稀疏”情况下,由于模型内没有足够的信息,因此无法以拍摄装置分辨率创建合成图像。以这种方式,“密集”系统用来高精度地估计三维空间内的一个或多个表面,例如,在一个真实环境的给定容限内。

在某些情况下,以上描述的设备、系统或方法可以利用自动机器人装置实现。在这种情况下,可以通过该装置使用语义标记的表示以导航三维空间。例如,机器人装置可包括拍摄装置、面元模型生成器、被配置为存储3d面元模型的数据存储装置、语义增强器、导航引擎和一个或多个移动致动器。在这种情况下,机器人装置可以被配置为拍摄视频数据,因为机器人装置导航特定环境。当这发生时,机器人装置可以被布置为如本文中描述的语义标记的面元模型并且将其存储在数据存储装置中。导航引擎然后可以被配置为访问面元模型以在该环境内导航机器人装置。在一种情况下,机器人装置可以被设置为执行一个或多个功能。例如,机器人装置可以被设置为执行映射功能,定位特定的人和/或对象(例如,在紧急情况下),运输对象,执行清洁或维护等。为了执行一个或多个功能,机器人装置可包括另外的部件,例如,另外的传感装置、真空系统和/或致动器,以与环境互动。然后可以基于对象标记或对象标记概率应用这些功能。例如,家用机器人可以被配置为将一组功能应用于具有“地毯地板”标记的空间的部分以及将另一组功能应用于具有“亚麻地板”标记的空间的部分。类似的,导航引擎可以被配置为使用标记为“门”的空间的区域作为出口和/或入口点。在一个实例中,家用机器人可以使用对象分类或概率,例如,如在上述实例中计算的,以便预测房间类型或位置。例如,如果在空间中检测到指示“沙发”和“咖啡桌”的标记的面元的群集,则该空间可以分类为房间类型为“客厅”的房间。类似地,如果面元具有指示“床”的存在的标记,则房间可分类为“卧室”类型,或者标记为“烤箱”的面元可以是被分类为“厨房”的房间。房间预测可以是面元概率和/或替换的对象定义的功能。使用面元概率使房间预测能够是概率函数,例如,基于检测到的对象概率分配的对应概率的房间类别。

上述实例应被理解为说明性的。设想了更多实例。应当理解,关于任何一个实例描述的任何特征可以单独地或者与所描述的其他特征组合使用,并且也可以与任何其他实例的一个或多个特征或者任何其他实例的任何组合来组合使用。此外,在不背离发明的范围的情况下,还可以采用上面未描述的等同物及修改,所附权利要求中限定了发明的范围。

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