用于虚拟增强视觉同时定位和地图构建的系统和方法与流程

文档序号:19429770发布日期:2019-12-17 16:18阅读:139来源:国知局
用于虚拟增强视觉同时定位和地图构建的系统和方法与流程

本发明总体上涉及重构场景的模型,更具体地涉及同时定位和地图构建(slam)。



背景技术:

在机器人地图构建中,同时定位和地图构建(slam)是构造或更新未知环境的地图和/或模型、同时追踪代理在该环境内的地点的计算问题。虽然slam涉及地图的建造(地图构建)和地图的使用(定位),但是对于执行slam的系统,与定位相关联的处理和与地图构建相关联的处理实际上不需要同时执行。例如,过程可以以复用的方式执行。

在一些应用中,例如,在城市或在室内环境中,gps或另一位置估计系统对于slam是不可用的、不实用的或者精度不足。为此,一些系统除了使用专门的位置估计系统之外或者替代使用专门的位置估计系统,依赖于其他的使用被命名为视觉slam的一类技术的视线传感器(比如相机)。视觉slam(vslam)使用视觉传感器数据或图像作为输入来建造环境的模型,例如,表示环境的点云。例如,vslam使用视线传感器来获取周围环境的图像并将多个这样的图像配准到一致的坐标系(例如,全局坐标系)中以形成描述周围环境的几何形状和外观这二者的模型。

vslam使用传感器捕捉的图像来估计该坐标系内部的传感器的六个自由度(dof)姿势(地点和朝向)。为此,vslam依赖于找到在不同图像中观察到的同一物理区域的对应的能力。然而,vslam有长基线匹配问题,即,从两个遥远的视图观察到的区域在这样的匹配处理期间可能频繁错过,因为从不同视点看到的同一区域的外观可能显著变化。

一些方法通过将vslam技术与单独的姿势估计方法组合来解决该问题。例如,专利文献1中所描述的方法使用运动传感器来估计携带相机的机器人的姿势。运动传感器的使用尽管是有用的,但是不总是可取的。

另一方法通过拍摄多个图像以确保图像之间的姿势变化小,来连续地跟踪传感器的姿势,参见例如专利文献2。然而,该方法在计算和存储器上是昂贵的,并且可能需要传感器跟随环境内的费力的且复杂的轨迹以便构造其3d模型。

[引文列表]

[专利文献]

[ptl1]

u.s.7,162,338

[ptl2]

u.s.20140126769



技术实现要素:

因此,需要适合于用数量减少的用于跟踪传感器的姿势的图像来构造场景的3d模型的vslam。如果给定相同数量的图像,则这样的vlsam应实现更高的3d重构和姿势估计准确度、以及更多数量的重构的3d点。

一些实施例的目的是公开一种用于视觉同时定位和地图构建(slam)的方法,该方法使用图像作为视觉传感器数据输入以用于重构场景的三维(3d)模型。一些实施例的另一个目的是提供适合于用数量减少的用于跟踪传感器的姿势的图像来重构场景的3d模型的视觉slam(vslam)。

一些实施例是基于以下认识的,即,为了减少用于重构场景的3d地图或3d模型的图像的数量,需要从相对较远的视点获取图像。以这样的方式,可以使用较少的图像来捕捉场景的错综复杂的部分。然而,这样的方法造成起因于vslam所用的姿势跟踪的长基线匹配问题。具体地说,从两个间隔开的视图观察到的地标可能被vslam匹配处理错过,因为从不同视点看到的同一地标的外观可能显著改变。

这个长基线匹配问题的简单的例子如下。假设视觉slam地图是通过将传感器(例如,相机)在相机指向地点b的情况下从地点a笔直移动到地点b(被称为第一轨迹)而建造的。现在假设相机被转动180度以在指向地点a的同时从地点b移动到地点a,被称为第二轨迹。然后,vslam框架可能无法在先前建造的地图中正确地定位该相机的姿势,因为在第二轨迹中新近观察到的特征可能显著不同于在存在于地图中的第一轨迹中观察到的特征。

一些实施例是基于以下认识的,即,虚拟图像可以帮助规避vslam对外观不变性的这样的依赖性。例如,在模型重构期间,可以对来自未来可能造访的新的视图的一些新的虚拟图像进行合成。为了使用上述例子来例示说明该原理,可以将相机在从地点a指向地点b的第一轨迹中捕捉的图像变换为在从地点b指向地点a的第二轨迹中从虚拟视点看到的虚拟图像。虚拟图像可以用于与相机在从地点b指向地点a的第二轨迹中新近拍摄的图像进行比较以规避长基线匹配问题。这样的vslam在本文中被称为虚拟增强视觉slam(va-vslam)。与常规的视觉slam相比,va-vslam可以用更少的图像来构造场景的类似模型,或者用相同数量的图像来构造更好的模型。为此,va-vslam可以使计算能力和存储器使用降低,并且可以使由传感器跟随的轨迹简化来构建环境的地图。

具体地说,这样的虚拟图像可以具有用作用于姿势跟踪的地标的特征的不同外观。然而,因为虚拟图像是从真实图像产生的,所以不论真实图像和虚拟图像中的地标的外观如何,真实图像和虚拟图像中的地标之间的对应都可以保持。为此,可以在虚拟图像的帮助下将新近捕捉的真实图像与其他的真实图像进行比较。

例如,新的图像中的地标可能具有与虚拟图像中的地标的外观类似的外观,因此这样的地标可以与虚拟图像中的对应的地标配准。此外,虚拟图像中的地标预先与该虚拟图像来源于的不同的真实图像中的对应的地标配准。以这样的方式,来自新近获取的图像的地标可以通过虚拟图像与之前的图像的地标配准。以这样的方式,可以缓解长基线匹配问题,这使得可以使用较少数量的图像来构造场景的模型。

因此,一个实施例公开了一种用于从场景的图像集合重构所述场景的三维(3d)模型的方法,所述图像集合是由至少一个传感器在限定所述图像的视点的不同姿势下获取的,其中,所述3d模型包括具有通过3d坐标标识的点的点云,其中,所述方法的步骤由处理器执行,所述处理器连接到存储所述图像集合的存储器,并且与所存储的实现所述方法的指令耦合,其中,所述指令在被处理器执行时实现所述方法的至少一些步骤,包括:对所述图像集合中的图像进行变换以生成从虚拟视点看到的场景的虚拟图像集合;比较来自所述图像和虚拟图像的至少一些特征以确定所述图像集合中的每个图像的视点;以及根据至少两个图像的视点,更新场景的模型中的至少一个点的3d坐标,以与从与所述点相对应的所述两个图像的像素的光线反向投影的交点的坐标匹配。

另一个实施例公开了一种用于重构场景的三维(3d)模型的系统,所述3d模型包括具有通过3d坐标标识的点的点云。所述系统包括:至少一个传感器,其在限定图像的视点的不同姿势下获取所述场景的图像集合;存储器,其存储所述图像集合和场景的3d模型;以及处理器,其操作地连接到存储器,并且与所存储的指令耦合,以执行以下步骤:对所述图像集合中的图像进行变换以生成从虚拟视点看到的场景的虚拟图像集合;比较来自所述图像和虚拟图像的至少一些特征以确定所述图像集合中的每个图像的视点;以及根据至少两个图像的视点,更新场景的模型中的至少一个点的3d坐标,以与从与所述点相对应的所述两个图像的像素的光线反向投影的交点的坐标匹配。

又一个实施例公开了一种其上包含处理器可执行的程序的非暂时性计算机可读存储介质,所述程序用于执行从场景的图像集合重构所述场景的三维(3d)模型的方法,所述图像集合是在限定所述图像的视点的不同姿势下由至少一个传感器获取的,其中,所述3d模型包括具有通过3d坐标标识的点的点云,所述方法包括:对所述图像集合中的图像进行变换以生成从虚拟视点看到的场景的虚拟图像集合;比较来自所述图像和虚拟图像的至少一些特征以确定所述图像集合中的每个图像的视点;以及根据至少两个图像的视点,更新场景的模型中的至少一个点的3d坐标,以与从与所述点相对应的所述两个图像的像素的光线反向投影的交点的坐标匹配。

附图说明

图1a示出根据一些实施例的适合于va-vslam的系统的框图。

图1b例示说明根据一些实施例的va-vslam系统可以被作为系统的例子合并在其中的移动机器人。

图1c例示说明一些实施例所用的全局参考系中的机器人和/或传感器的姿势的示例性位置(x,y)。

图2a示出根据一些实施例的va-vslam框架的框图。

图2b示出根据一些实施例的使用虚拟图像来解决长基线匹配问题的示意图的例子。

图2c示出穿过环境的可能的轨迹的示例性示意图。

图3a示出根据一些实施例的用于从场景的图像集合重构场景的3d模型的方法的框图。

图3b示出根据一些实施例的用于从场景的图像集合重构场景的3d模型的方法的框图。

图4a示出根据va-vslam的一个实施例的va-vslam初始化的流程图。

图4b示出根据一个实施例的捕捉用平面初始化的场景的图像的相机的侧面示意图。

图4c例示说明在相机移动到不同姿势之后的相机的侧面示意图。

图5a示出根据一个实施例的从虚拟视点看到的、用于查找预先计算的点对平面地图中的可见平面的点云。

图5b示出用于通过一些实施例产生虚拟图像的场景的变形图像的例子。

图6示出根据一个实施例的系统的示意图。

具体实施方式

图1a示出根据一些实施例的适合于虚拟增强视觉同时定位和地图构建(va-vslam)的系统100的框图。系统100可以包括通用处理器161和存储器164。另外,或者可替代地,系统100可以包括专用处理器,诸如图像处理器166、姿势处理器168和虚拟图像处理器167。装置100还可以包括耦合到一个或多个总线177的若干个传感器或进一步耦合到处理器161、166、167和168中的至少一个的信号线。

系统100可以是以下装置的一部分:移动装置、无线装置、蜂窝电话、个人数字助理、可穿戴装置(例如,眼镜、手表、头饰或类似的身体附连的装置)、移动计算机、平板、个人计算机、膝上型计算机、或具有处理能力的任何类型的装置或平台。

系统100可以包括用于捕捉场景的图像的传感器,诸如相机124、3d传感器、和/或相机和3d传感器的组合(被称为红-绿-蓝-深度(rgbd)传感器(未示出)),并且可以可选地包括运动传感器121,诸如加速度计、陀螺仪、电子罗盘、或其他类似的运动感测元件。系统100还可以捕捉面向前和/或面向后的相机(例如,相机124)上的图像。系统100可以进一步包括用户界面150,用户界面150包括显示器122、输入装置(诸如键盘和键区152)的一个或组合。如果期望,将虚拟键区集成到具有触摸屏/传感器的显示器122中可以去除键盘或键区152。例如,如果装置100是移动平台(诸如蜂窝电话),用户界面150还可以包括麦克风154和扬声器156。

在一些实现中,系统100可以用作移动或无线装置,并且可以使用收发器140、经由一个或多个无线通信链路进行通信。系统100可以包括各种其他的元件,诸如卫星位置系统接收器、电源装置(例如,电池)、以及通常与便携式电子装置和非便携式电子装置相关联的其他组件。

在一个或多个示例性实施例中,所描述的功能或模块可以用控制器160的硬件(例如,硬件162)、软件(例如,软件165)、固件(例如,固件163)或它们的任何组合来实现。如果用软件实现为计算机程序产品,则所述功能或模块可以作为一个或多个指令或代码被存储在非暂时性计算机可读介质上或者在非暂时性计算机可读介质上传输。计算机可读介质可以包括具有促使计算机程序从一个地方传送到另一个地方的任何介质的通信介质和计算机存储介质这二者。存储介质可以是可以被计算机访问的任何可用的介质。举例来说,而非限制,这样的非暂时性计算机可读介质可以包括ram、rom、eeprom、cd-rom或其他光学盘储存器、磁性盘储存器或其他磁性存储装置、或可以用于承载或存储指令或数据结构的形式的期望的程序代码并且可以被计算机访问的任何其他的介质。

图1b例示说明va-vslam系统可以被作为系统100的例子合并在其中的移动机器人101。例示说明的机器人101包括视觉传感器104,视觉传感器104用于视觉地辨识地标以使得slam模块可以确定全局位置。各种各样的视觉传感器可以用于视觉传感器104。例如,视觉传感器104可以对应于具有ccd成像器、cmos成像器、红外线成像器等的数字相机。视觉传感器104还可以对应于3d传感器,诸如结构化光传感器、飞行时间传感器、lidar和rgbd传感器。视觉传感器104可以包括普通的透镜或特殊的透镜,诸如广角透镜、鱼眼透镜、全向透镜等。此外,透镜可以包括可以用于提供相对较大的视场或多个视点的反射表面,诸如平面镜、抛物面镜或锥形镜。在另一个例子中,视觉传感器104可以对应于单个相机或多个相机。在一个实施例中,va-vslam系统有利地被配置为与单个相机一起操作,与多个相机相比时,这有利地降低了成本。

例示说明的机器人101的电机110、112耦合到轮子114、116以为机器人101提供运动力。本领域的普通技术人员将理解,代替轮子,或者除了轮子之外,机器人的其他实施例可以使用不同的致动器(诸如支腿、轨道、辊、推进器等)来四处移动。在例示说明的实施例中,关于轮子的旋转的信息(也被称为测距法)被作为输入提供给控件108。来自视觉传感器104的图像数据106也被作为输入提供给用于机器人101的控件108。在一个实施例中,va-vslam系统包含在控件108内。在例示说明的实施例中,控件108耦合到电机110、112以控制机器人101的移动。为清楚起见,图1b中没有示出用于机器人101的电源(诸如电池)。

响应于图像数据106,控件108可以将控制机器人101的移动的控制信号提供给电机110、112。例如,控件108可以提供控制信号以指示机器人向前移动、停止、向后移动、转弯、围绕垂直轴旋转等。当机器人围绕垂直轴(诸如图1b所示的示例性垂直轴118)旋转时,该旋转被称为“偏航(yaw)”。机器人的姿势限定传感器104的姿势,在本文中可互换地使用。另外,相机的姿势限定传感器捕捉的图像的视点。为此,机器人的姿势、传感器的姿势和图像的视点是相关的,并且包括全局参考系内的位置(例如,传感器和/或机器人的位置)、以及相机的朝向或机器人的前进方向。

图1c例示说明一些实施例所用的全局参考系中的机器人132和/或传感器134的姿势的示例性位置(x,y)。将理解,位置不必精确地对应于机器人132的中心,因为机器人132占据大于一个点的空间的面积。全局参考系的零矢量136可以对应于环境内的各种地点中的一个。在例示说明的例子中,全局参考系的零矢量136被设置在机器人132被初始化的地点处。在一个实施例中,该全局参考系的x方向对应于机器人被初始化时机器人正前方的轴。

例如,在例示说明的实施例中,x轴对应于当在零矢量136处初始化时机器人直接在向前的方向上行进时机器人行进的路径。在例示说明的实施例中,y方向对应于与x轴正交的轴,当从上面看时,正y轴向x轴的左边增大。将理解,参考系的零矢量以及x轴和y轴相对于零矢量的对齐可以取决于在零矢量被设置时(诸如,举例来说,在初始化时)机器人所在的地点以及机器人的朝向。

图1c还例示说明全局参考系中的机器人的姿势的朝向。在例示说明的实施例中,机器人的朝向θ以当零矢量被设置时机器人所具有的初始前进方向作为参考。有利地,机器人的地点和机器人的初始朝向是任意的,从而使得对于用户而言机器人的设置简化。

除了沿着x轴方向或y轴方向的位移之外,典型的移动机器人还可以围绕垂直轴旋转或“偏航”。将理解,机器人不必直接旋转或偏航来改变朝向。例如,围绕拐角转动的动作也改变机器人的朝向或前进方向。在一些实现中,传感器134被可旋转地安装在机器人132上,所以传感器134可以独立于机器人的朝向改变它的朝向,或者除了机器人的朝向之外还改变它的朝向。

以上例示说明的实施例是针对在平面地面上移动的、具有3-dof姿势(2-dof位置和1-dof朝向)的移动机器人描述的。在这种情况下,va-vslam框架可以通过考虑其他dof(即,沿着z轴方向的1-dof和与“翻滚(roll)”和“俯仰(pitch)”相对应的2-dof朝向)为零来估计3-dof姿势。在一些其他的实施例中,所述系统和/或传感器可以在3d空间中任意地移动,并且va-vslam框架估计传感器的6-dof姿势。这样的情况包括安装在在3d空间中飞行的或者在非平面地面上移动的机器人上的系统、以及安装在人类操作者手持的便携式平台上的系统。

图2a示出根据一些实施例的va-vslam框架200的框图,va-vslam框架200利用视觉slam框架210来既估计一个或多个相机的6-dof姿势(位置和朝向)、又估计几何周围环境的3d描述。va-vslam框架通过在相机和/或传感器124从一些真实的视点捕捉的当前观察到的真实图像(具有或没有深度)上的特征集合和虚拟相机从一些虚拟视点观察到的虚拟产生的图像上的特征集合之间进行匹配来工作。所述方法的步骤可以由连接到存储图像集合存储器(诸如存储器164)并且与所存储的指令(诸如实现所述方法的软件165)耦合的处理器(诸如通用的处理器161和/或专用的处理器166、167和168)执行。所述指令在被处理器执行时执行va-vslam框架200的方法的至少一些步骤。

视觉slam框架210如下工作。一些特征提取器对真实帧集合(图像的)进行处理以对图像的每个帧选择特征集合可以包括具有一个通道的灰色信息或三个通道的rgb信息的常规的2d图像和/或具有四个通道的rgbd信息的3d图像,其中,第四通道描述像素的深度,即,沿着相机的查看方向的、相机中心和沿着该像素的光线方向的最近的物体之间的距离。确定像素的光线方向的处理被称为该像素的反向投影,并且可以通过使用相机的固有参数来执行。例如,特征可以要么是2d点(如果帧是2d图像),要么是3d点(如果帧是3d图像),只要该特征在几何形状上或者在外观上显著不同于其相邻区域即可。特征提取器的例子包括harris、fast或orb关键点检测器。

然后,将该特征集合fi与另一个特征集合f′进行匹配以找到对应的特征对{(j,j′)},以使得特征和特征f′j′对应于场景中的同一物理区域(被称为地标或兴趣点)。这样的匹配可以通过各种特征描述方法来进行,诸如定位兴趣点并且产生其描述的标量不变特征变换(sift,scaleinvariantfeaturetransform)、加速鲁棒性特征(surf,speeduprobustfeature)、梯度地点-朝向直方图(gloh,gradientlocation-orientationhistogram)、orb、或其他的类似的技术和/或基于采样的方法(诸如ransac)。

通过使用对应的特征对,视觉slam210可以根据特征集合f′如何被构造来跟踪该帧相对于先前观察的一个帧或包含所有的先前观察的帧的地图240的姿势220。跟踪的姿势和特征对应被发送到捆绑调整230以找出用于进一步更新地图240的特征的帧的最佳的6-dof姿势以及3d几何形状描述。

给定描绘来自不同视点的若干个3d点的图像集合,捆绑调整230可以被定义为根据涉及所有点的对应的图像投影的最优性准则来同时解决改善描述场景几何形状的3d坐标、相机的相对运动的参数、以及用于获取图像的(一个或多个)相机的光学特性中的一个或它们的组合的问题。

在一个实施例中,捆绑调整包括使观察的和预测的图像点的图像地点之间的再投影误差最小化,该误差被表达为大量非线性的实值函数的平方和。因此,使用非线性最小二乘法来实现最小化。例如,一个实施例使用levenberg-marquardt优化,因为它易于实现,并且它使用有效的阻尼策略,这使得它能够从宽范围的初始猜测快速地收敛。通过对函数迭代地进行线性化以使其在当前估计的附近最小化,levenberg-marquardt法涉及被称为正规方程的线性系统的求解。当求解捆绑调整的框架中出现的最小化问题时,由于用于不同的3d点和相机的参数之间没有相互作用,所以正规方程具有稀疏的块结构。这可以被用来通过采用levenberg-marquardt法的稀疏的变体来获得计算益处,levenberg-marquardt法的稀疏的变体显式地利用正规方程零模式,避免了存储零元素和对零元素进行操作。

一些实施例的va-vslam旨在减少为构造场景240的3d地图或3d模型而获取的图像215的数量。为此,一些实施例是基于需要从相对较远的视点获取图像215的认识的。以这样的方式,可以使用较少的图像来捕捉场景的错综复杂的部分。然而,这样的方法造成起因于姿势跟踪220的长基线匹配问题。具体地说,从两个间隔开的视图观察到的地标可能被vslam匹配处理错过,因为从不同视点看到的同一地标的外观可能显著改变。

这个长基线匹配问题的简单的例子如下。假设视觉slam地图是通过在相机指向地点b的情况下将相机从地点a笔直移动到地点b(被称为第一轨迹)而建造的。现在假设相机被转动180度以在指向地点a的同时从地点b移动到地点a,被称为第二轨迹。然后,vslam框架可能无法在先前建造的地图中正确地定位该相机的姿势,因为在第二轨迹中新近观察到的特征可能显著不同于在第一轨迹中观察到的存在于地图中的特征。

一些实施例是基于如下认识的,即,虚拟图像可以帮助规避vslam对外观不变性的这样的依赖性。例如,在模型重构期间,可以对来自未来可能造访的新的视图的一些新的虚拟图像进行合成。为了使用上述例子来例示说明该原理,可以将相机在从地点a指向地点b的第一轨迹中捕捉的图像变换为在从地点b指向地点a的第二轨迹中从虚拟视点看到的虚拟图像。虚拟图像可以用于与相机在从地点b指向地点a的第二轨迹中新近拍摄的图像进行比较以规避长基线匹配问题。

具体地说,这样的虚拟图像可以具有用作用于姿势跟踪的地标的特征的不同外观。然而,因为虚拟图像是从真实图像产生的,所以不论真实图像和虚拟图像中的地标的外观如何,真实图像和虚拟图像中的地标之间的对应都可以保持。为此,可以在虚拟图像的帮助下将新近捕捉的真实图像与其他的真实图像进行比较。

例如,新的图像中的地标可能具有与虚拟图像中的地标的外观类似的外观,因此这样的地标可以与虚拟图像中的对应的地标配准。此外,虚拟图像中的地标预先与该虚拟图像来源于的不同的真实图像中的对应的地标配准。以这样的方式,来自新近获取的图像的地标可以通过虚拟图像与先前的图像的地标配准。以这样的方式,可以缓解长基线匹配问题,这使得可以使用较少数量的图像来构造场景的模型。

为此,va-vslam框架200包括虚拟图像产生器250以应用虚拟帧或图像255的概念来解决上述限制。va-vslam显式地将在真实图像上观察到的特征变换为虚拟观察到的图像,而不是仅仅依赖于现有的特征匹配方法的有限的视点不变性。

虚拟帧产生器250对图像215进行变换以生成场景的从虚拟视点看到的虚拟图像{vi}。这些虚拟图像然后被提交到视觉slam210以提取虚拟特征来帮助姿势跟踪器改进定位鲁棒性和准确性并将slam地图增大为

图2b示出根据一些实施例的使用虚拟图像来解决长基线匹配问题的示意图的例子。在该例子中,图像260、270和290是具有不同姿势的至少一个传感器获取的真实图像,即,图像260、270和290具有不同的视点。注意,图像是由同一传感器或多个传感器获取的,即,每个图像可能是由不同的传感器获取的。图像280是具有虚拟视点的虚拟图像。图像260和270的视点彼此相对较近。为此,图像260和270包括与场景中的同一特征相对应的地标265和275,即,地标265和275的像素对应于场景中的同一点p,并且具有类似的几何形状和/或外观。通过使用三角测量或任何其他的合适的计算技术,可以计算场景中的点p的坐标225。然而,当只有两个图像用于确定点p的坐标时,这样的坐标可能是不准确的。

图像290还包括地标295,地标295表示场景中与地标265和275相同的点p。然而,图像290的视点如此不同于图像260和270的视点以至于地标295具有不同的外观并且不能与地标265和275匹配。然而,虚拟图像280的视点更靠近图像290的视点,并且对应于与地标265和275相同的点p的地标285具有更类似于地标295的外观,并且可以与地标295匹配。以这样的方式,一些实施例可以确定地标265、275和295对应于场景中的同一点p。为此,图像290的姿势可以用来将点p的坐标更新为点p’的坐标235。以这样的方式,虚拟图像的使用提高了场景的模型的准确性。

类似地,图像270包括与场景中的点q相对应的地标277。图像290还包括表示场景中与地标277相同的点q的地标297。然而,图像290的视点如此不同于图像270的视点以至于地标297具有不同的外观并且不能与地标277匹配。为此,点q的坐标是未知的,并且点q不能被添加到场景的模型中。

然而,虚拟图像280的视点更靠近图像290的视点,并且对应于与地标277相同的点q的地标287具有更类似于地标297的外观,并且可以与地标297匹配。以这样的方式,一些实施例可以确定地标277和297对应于场景中的同一点q。为此,图像290的姿势可以用来确定点q的坐标245,并且点q可以被添加到场景的模型。以这样的方式,虚拟图像的使用用比不使用将会需要的图像少的图像提高了场景的模型的密度。

图2c示出穿过环境的系统100(例如,机器人101)的可能的轨迹的示例性示意图。在该例子中,在不利用虚拟图像来构造环境中的场景的模型的情况下,机器人101需要在使用圆圈和星形描绘的每个状态(诸如状态191、192、193、194、195)获取图像。然而,通过使用虚拟图像,机器人101可以仅在被描绘为星形的状态{x0,x1,x2,…xm-1,xm}获取图像,并且在被描绘为圆圈的状态产生的虚拟图像的帮助下执行定位和地图构建。以这样的方式,虚拟图像的使用使真实图像的数量减少以使得可以对场景进行稀疏建模。

图3a示出根据一些实施例的用于从场景的图像集合重构场景的3d模型的方法的框图。所述图像集合由至少一个传感器在限定图像的视点的不同姿势下获取。3d模型包括具有通过3d坐标标识的点的点云。所述方法的步骤由处理器执行,所述处理器连接到存储所述图像集合的存储器,并且与所存储的实现所述方法的指令耦合。所述指令在被处理器执行时实现所述方法的至少一些步骤。

所述方法对图像集合310中的图像进行变换320以生成从虚拟视点看到的场景的虚拟图像集合325。集合310和325的大小可以是相同的或不同的。在一个实施例中,虚拟图像是当集合310中的真实图像无法彼此匹配时根据需要产生的。另外地或可替代地,虚拟图像可以主动地产生。

为此,不同的实施例采用不同的策略来选择用于产生虚拟图像的虚拟视点。例如,一个实施例对6-dof相机姿势空间中的一些有效的姿势(例如,随机地或确定性地)进行采样。这样的采样可以要么在整个姿势空间中是均匀的,要么是偏向未造访的区域。另一个实施例使用真实图像的现有的真实视点来估计未来的可能的姿势的集合。当移动机器人的轨迹是预先确定的时,该实施例对于图1b的移动机器人例子是有利的。

又一个实施例保持现有的真实视点的位置,但是使每个真实视点围绕其位置旋转以使得虚拟视点可以具有不同于真实视点的朝向,但是被限定在与真实视点相同的位置处。在那些虚拟视点处产生的虚拟图像可以具有不同于真实图像的外观,因为(1)真实视点和虚拟视点可以使用不同的投影模型,例如,真实视点可以使用鱼眼投影模型,而虚拟视点可以使用透视投影模型;以及(2)即使真实视点和虚拟视点都使用相同的透视投影模型,该透射投影模型也在平面(即,图像传感器平面)上均匀地对光线进行采样,但是在角域中不均匀地对光线进行采样,因此虚拟视点的不同朝向对不同的光线集合进行采样。当相机的视场较大时,这更加明显。在具有大视场的透视图像中,图像的外围区域与图像的中心区域相比显得被拉伸,这被称为透视畸变。因此,当系统使用几个不同的传感器(例如,鱼眼相机和透视相机、3d传感器和透视相机、或具有不同的固有参数的多个透视相机)时,该实施例是有利的。

接着,所述方法比较330来自图像310和虚拟图像325的至少一些特征以确定图像集合中的每个图像的视点335,并根据至少两个图像的视点来更新340场景的模型345中的至少一个点的3d坐标,以与从与所述点相对应的所述两个图像的像素的光线反向投影的交点的坐标匹配。例如,因为来自不同图像310的不同像素彼此匹配,所以一些实施例可以使用立体三角测量和/或片光三角测量来确定场景的深度。

图3b示出根据一些实施例的用于重构场景的3d模型的方法的框图,其中,图像集合包括通过相机在限定第一视点的第一姿势下看到场景的第一图像,并且包括通过相机在限定第二视点的第二姿势下看到的场景的第二图像。

所述方法对第一图像进行变换350以产生与不同于第一视点的虚拟视点相对应的第一虚拟图像。尤其是,变换保留第一图像和虚拟图像的至少一些像素之间的对应以表示场景的相同的点。接着,所述方法将第二图像的至少一些特征与虚拟图像的至少一些特征进行比较360以确定第二图像、虚拟图像和第一图像的至少一些像素之间的对应。这样的对应使得即使第二图像的地标和第一图像的地标具有不同的外观,也可以将第二图像的地标与第一图像的地标匹配。

所述方法基于第二图像的像素的子集的坐标和与第一图像的像素的子集相对应的场景的点的坐标,使用第一图像和第二图像的对应的像素的子集,确定370相对于第一图像的第一视点的第二图像的第二视点。接着,所述方法使用第一图像和第二图像中的对应的像素的捆绑调整来更新380场景的模型中的点的3d坐标。

第二视点的确定利用如下事实,即,从第一图像和第二图像中的对应的像素反向投影的光线应在3d点处相交。例如,如果图像260和270的视点是已知的,则点p的坐标225可以经由三角测量来确定,即,被确定为所述两个光线的交点。可替代地,如果图像260的视点和坐标225是已知的,则2d到3d配准方法可以确定图像270的视点以使得光线可以通过对应的3d点。这样的2d到3d配准方法被称为透射n点法。

例如,一些实施例使用3d传感器来对场景的模型的与第一图像的像素的子集相对应的点的坐标进行初始化。3d传感器的例子包括kinect式rgbd相机或立体相机。另外地或可替代地,一些实施例可以使用具有类似视点的多个图像来对模型中的点的坐标进行初始化。

图4a示出根据va-vslam的一个实施例的初始化的流程图。在方框401,实施例可以在对后一图像进行处理之前从第一图像(例如,单个参考图像)对3d模型进行初始化。例如,对第一图像(例如,从相机124捕捉的单个参考图像)进行初始化可以包括确定具有初始的估计的深度的三维空间中的兴趣点集合。在一些实施例中,初始化可以立即地、实时地、近乎实时地、或者在参考图像捕捉的短暂的时间窗口内发生。

在一种实现中,实施例从初始的捕捉的参考图像创建模型。如本文中所使用的模型也可以被理解为3d物体或场景的地图。实施例可以从来自单个相机传感器或单眼源的单个图像创建目标。所述模型可以被存储在存储器中(例如,装置100的存储器164中),并且用从图像提取或计算的一个或多个3d兴趣点表示或者与所述一个或多个3d兴趣点相关联。在一些实施例中,3d模型可以在选择初始参考图像或第二参考图像时,在没有任何用户输入的情况下被初始化。

在方框402,实施例对一个或多个后面的图像进行处理。处理可以包括确定所述后面的图像中的每个图像内的地标集合。在一些实施例中,地标集合可以是在对参考图像进行处理之后确定的相同的地标;然而,地点和深度值可以不同于参考图像。所述处理还可以包括产生具有不同外观的地标的虚拟图像。

在方框403,实施例在六个自由度上跟踪3d目标。跟踪可以立即地、瞬间地、实时地、近乎实时地、或者在接收到第一单个参考图像之后的短暂的时段内发生。在一些实施例中,初始化对于增强现实用户可以是显而易见的,因为3d模型可以被即刻地、实时地、近乎实时地、或者在帧捕捉的短暂时段内初始化。如以下更详细地描述的,系统100可以在跟踪的同时显示目标的表示。

在方框404,实施例基于所述一个或多个后面的图像的处理来更新3d模型。实施例确定地标是否可以被估计,并且通过相机的一系列的运动来逐渐地改善模型。在一种实现中,实施例可以通过使目标与具有假定的深度值的平面近似来提供对于初始的小的运动的相机运动估计。此外,在使用平面来近似目标的实现中,显式地求解对极几何(其可以取决于具有足够的平移)的步骤可以被省略以提供从第一参考图像起的连续的相机124跟踪。

图4b示出根据一个实施例的捕捉用平面初始化的场景的图像的相机的侧面示意图。在该初始化中,如在位置405处从相机124所看到的,地标集合(例如,地标425、430、435、440、445和450)被初始化在预定义的初始距离处的平面420上。每个地标可以与初始深度相关联,以使得所有的地标最初都在同一平面(例如,单个平面420上的点425、430、435、440、445和450)上。

在其他实施例中,地标可以用任何其他的几何形状、或初始化的深度值的任何布置来初始化。例如,实施例可以确定另一几何形状应是目标的基线起始点,并且随着更多的目标信息被发现而改善。此外,不是每一个地标都具有相同的深度值,而是初始化的深度值可以通过本领域中已知的其他技术来单个地估计或确定。例如,初始深度值可以是使得平均地标深度落在预定的阈值平均深度内的值范围。

图4b还例示说明了表示相机124观察到的3d场景的物体(例如,物体410)。线415例示说明与物体410相关联的地标425在其下被看见的光线(例如,与物体410的边缘相关联的地标425具有与在平面420上检测到的其他地标相等的初始深度)。沿着线415的从位置405处的相机124到地标425的距离是地标425的假定深度。

图4c例示说明相机405在相机移动406到姿势407之后的侧面示意图,在相机移动406到姿势407之后捕捉第二图像,这使得对于相机124在姿势407处对于点集合470、471、472、473、474和475中的每个点观察到的地标深度更准确(即,是更新的)。光线480对应于更新的地标470在其下被看见的光线415。以这样的方式,根据至少两个图像的视点,场景的模型中的点的3d坐标被更新,以与从与所述点相对应的所述两个图像的像素的光线反向投影的交点的坐标匹配。

一些实施例使用两个真实图像来对场景的模型的与第一图像的像素的子集相对应的点的坐标进行初始化。例如,在一个实施例中,图像集合包括通过相机在限定第三视点的第三姿势下看到的场景的第三图像。实施例将第一图像和第三图像的特征进行比较以确定第一图像和第三图像的与场景中的同一点相对应的像素,并且使用相对姿势估计方法来确定与像素的子集相对应的场景的点的坐标、以及相对于第一姿势的第三姿势。这样的相对姿势估计包括五点法、七点法和八点法中的一种或组合,并且通过第一图像和第三图像之间的至少五个2d对2d像素对应来进行工作。注意,这些2d对2d像素对应可以经由如上所述从第一图像和/或第三图像产生的虚拟图像来获得,而不一定需要通过直接匹配两个真实图像(第一图像和第三图像)来获得。

不同的实施例使用不同的方法来在给定虚拟视点的情况下、根据该虚拟视点和所述系统的真实帧的数据类型这二者产生虚拟帧。例如,当帧包括3d信息(例如,帧包括rgbd图像)时,可以直接从描述场景的密集的点云产生虚拟图像。例如,在一种实现中,可以从场景的地图或模型创建该场景的纹理网格模型。然后,该纹理网格被提交到图形流水线(诸如opengl),其中,虚拟相机的姿势(即,opengl的术语中的模型-视图矩阵)被设置为给定的感兴趣的姿势,并且其投影矩阵通过期望的相机固有矩阵设置,期望的相机固有矩阵通常等于或接近于真实相机的相机固有矩阵。此时,从opengl流水线的颜色缓冲器提取rgb信息,并且从深度缓冲器提取深度信息。因此,在期望的虚拟视点处产生rgbd图像的虚拟帧。

图5a示出根据一个实施例的从虚拟视点看到的、用于在预先计算的点对平面地图中查找可见平面的点云。在虚拟视图510中可见的主要平面是通过将光线从虚拟相机的中心通过其像平面中的像素投到场景中而确定的。当光线碰到场景点时,使用地图m来查找平面在空间中的位置(平面参数)。对虚拟视图的所有像素执行该步骤(尽管为了效率,可以使用像素域中的空间子采样),并且按属于每个平面的像素数量来对所得的平面列表进行排序。对于每个平面,实施例追踪是平面的一部分的像素。图5b示出用于通过一个实施例产生虚拟图像的场景的变形图像520、530和540的例子。在另一个实施例中,帧是常规的2d图像,并且虚拟视点具有与真实帧相同的查看位置,不同之处仅在于朝向。在该实施例中,虚拟帧可以通过将新的帧中的每一个像素pv从该真实帧中的像素pr按照pv=hpr变形而产生,其中,pv和pr是像素的2d齐次坐标,h是用定义的3×3单应矩阵,r是与虚拟视点相对于真实视点的朝向相对应的3d旋转矩阵,kv和kr分别是3×3虚拟相机固有矩阵和真实相机固有矩阵。

在又一个实施例中,当虚拟视点对于所有的真实帧具有不同的位置时,使用平面诱导的单应性来产生虚拟图像。对于这种情况,对于帧中的每一个像素,难以从遥远的虚拟视点产生虚拟帧,因为我们通常缺乏每一像素的3d信息。不是像前两种情况那样产生密集的虚拟图像,我们而是可以用先前估计的3d信息(即,该真实帧中的所有的特征点)来产生集中于像素地点的稀疏的虚拟图像。该产生处理可以如以下说明的通过使用平面诱导的单应性的基于图像的变形来进行。假定特征点的对应的地标从局部来说是个小平面(nw,dw),其中,nw是该平面在世界坐标系中的3d法线方向,dw是世界原点到该平面的距离。如果该特征点先前在世界中的姿势是(其中,rr和tr分别是真实相机的3d旋转矩阵和平移矢量)的真实帧中被观察到,并且给定的虚拟视点的姿势是(其中,rv和tv分别是虚拟相机的3d旋转矩阵和平移矢量),则从多视图几何理论来说,真实帧和通过观察同一局部平面而诱导的虚拟帧之间的单应性矩阵可以被发现为:

a.

其中,kv和kr分别是3×3虚拟相机固有矩阵和真实相机固有矩阵。

该单应性矩阵可以用于将该特征点及其相邻像素作为真实帧上的小块(patch)变形为虚拟帧上的小块。该变形的小块表示如果真实相机从虚拟姿势tv观察到对应的地标,则预计会观察到什么。通过对真实帧上的每个特征点重复该变形操作,产生具有稀疏的特征的虚拟帧。在一个实施例中,因为这种情况下所用的3d信息是可能包含相对较大的变化的估计,尤其是在视觉slam处理的开始阶段期间,所以递归地执行虚拟图像产生以及随后的姿势估计和slam地图优化,以使得随着slam地图质量提高,产生更好的虚拟视图。

本文中所描述的实施例可以被合并到各种设备(例如,装置)中(例如,在各种设备(例如,装置)内实现或者由各种设备(例如,装置)执行)。例如,本文中所教导的一个或多个方面可以被合并到以下装置中:电话(例如,蜂窝电话)、个人数据助理(“pda”)、平板、移动计算机、膝上型计算机、平板、娱乐装置(例如,音乐或视频装置)、头戴式受话器(例如,耳机、听筒等)、医疗装置(例如,生物计量传感器、心率监视器、计步器、ekg装置等)、用户i/o装置、计算机、服务器、销售点装置、娱乐装置、机顶盒、或任何其他的合适的装置。这些装置可能具有不同的功率和数据要求,并且可能导致针对每个地标或地标集合产生不同的功率分布。

图6示出根据一个实施例的系统的示意图。该系统包括车辆601,车辆601包括被配置为执行自动停车650的处理器602。该车辆还包括至少一个传感器,诸如lidar610和/或相机620。传感器操作地耦合到处理器602,并且被配置为感测指示停车空间的至少一部分的几何形状的信息。通过使用该信息,处理器602使用va-vslam来确定和/或更新停车空间630的模型。此外,处理器602使用地图130来执行自动停车650。

本发明的上述实施例可以以许多方式中的任何一种方式实现。例如,实施例可以使用硬件、软件或它们的组合来实现。当用软件实现时,软件代码可以在任何合适的一个处理器或一组处理器上执行,不管是在单个计算机中提供的,还是分布在多个计算机之间。这样的处理器可以被实现为集成电路,其中一个或多个处理器在集成电路组件中。不过,处理器可以使用任何合适的格式的电路来实现。

此外,本发明的实施例可以体现为其例子已经被提供的方法。被作为所述方法的一部分执行的动作可以以任何合适的方式排序。因此,可以构造其中按与例示说明的次序不同的次序执行动作(这可以包括同时执行一些动作,即使这些动作在说明性实施例中被示为是顺序的动作)的实施例。

关于在权利要求中修饰权利要求元素的诸如“第一”、“第二”的序数术语的使用,其自身并不暗示一个权利要求元素相对于另一个权利要求元素的任何优先、优先级或次序,也不暗示方法的动作被执行的时间次序,而是仅仅用作区分具有某个名称的权利要求元素和具有相同名称(序数术语的使用除外)的另一个元素以区分权利要求元素的标记。

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