发明内容
本公开的目的在于提供一种深度值确定方法、深度值确定装置、电子设备以及计算机可读存储介质,进而至少在一定程度上克服现有技术中无法计算基于单目相机采集到的关键帧中特征点的深度值的问题。
根据本公开的第一方面,提供一种深度值确定方法,包括:获取第一关键帧,从第一关键帧中选取像素梯度值大于第一预设阈值的特征点作为目标特征点;确定关键帧中特征点的深度值范围;基于深度值范围确定目标特征点在第二关键帧中对应的目标投影点;将目标投影点在深度值范围中对应的深度值作为目标特征点的目标深度值。
可选的,基于深度值范围确定目标特征点在第二关键帧中对应的目标投影点包括:根据深度值范围确定目标特征点在第二关键帧中对应的候选投影点;从候选投影点中筛选满足匹配条件的点作为中间投影点;基于中间投影点的误差函数值确定一中间投影点作为目标投影点。
可选的,匹配条件包括:中间投影点的像素梯度值大于第一预设阈值;中间投影点的像素梯度方向与极线的方向不同;以及中间投影点的像素梯度方向与特征点的梯度方向的差值小于第二预设阈值。
可选的,基于中间投影点的误差函数值确定一中间投影点作为目标投影点包括:基于中间投影点的像素值的残差值、梯度模的残差值、像素值的分布标准差以及梯度模的分布标准差确定中间投影点的误差函数值;从中间投影点中选取误差函数值最小的中间投影点作为目标投影点。
可选的,第二关键帧的数量为一个,将目标投影点在深度值范围中对应的深度值作为目标特征点的目标深度值包括:根据对极几何原理,确定目标投影点在深度值范围中对应的深度值作为目标深度值。
可选的,第二关键帧的数量为多个,将目标投影点在深度值范围中对应的深度值作为目标特征点的目标深度值包括:确定目标特征点与各第二关键帧对应的多个中间深度值;将多个中间深度值进行加权平均处理以得到目标深度值。
可选的,目标特征点的数量为多个,在将目标投影点在深度值范围中对应的深度值作为目标特征点的目标深度值之后,上述方法还包括:获取目标特征点的像素坐标以及与目标特征点对应的关键帧的相机位姿;结合像素坐标、目标深度值以及相机位姿构建第一地图。
可选的,在结合像素坐标、目标深度值以及相机位姿构建第一地图之后,上述方法还包括:将第一地图投影到二维平面上得到第二地图。
根据本公开的第二方面,提供一种深度值确定装置,包括:特征点确定模块,用于获取第一关键帧,从第一关键帧中选取像素梯度值大于第一预设阈值的特征点作为目标特征点;深度值范围确定模块,用于确定关键帧中特征点的深度值范围;投影点确定模块,用于基于深度值范围确定目标特征点在第二关键帧中对应的目标投影点;深度值确定模块,用于将目标投影点在所述深度值范围中对应的深度值作为目标特征点的目标深度值。
可选的,投影点确定模块包括投影点确定单元,用于根据深度值范围确定目标特征点在第二关键帧中对应的候选投影点;从候选投影点中筛选满足匹配条件的点作为中间投影点;基于中间投影点的误差函数值确定一中间投影点作为目标投影点。
可选的,投影点确定单元包括投影点确定子单元,用于基于中间投影点的像素值的残差值、梯度模的残差值、像素值的分布标准差以及梯度模的分布标准差确定中间投影点的误差函数值;从中间投影点中选取误差函数值最小的中间投影点作为目标投影点。
可选的,深度值确定模块包括第一深度值确定单元,用于根据对极几何原理,确定目标投影点在深度值范围中对应的深度值作为目标深度值。
可选的,深度值确定模块还包括第二深度值确定单元,用于确定目标特征点与各第二关键帧对应的多个中间深度值;将多个中间深度值进行加权平均处理以得到目标深度值。
可选的,深度值确定装置还包括地图构建模块,用于获取目标特征点的像素坐标以及与目标特征点对应的关键帧的相机位姿;结合像素坐标、目标深度值以及相机位姿构建第一地图。
可选的,地图构建模块包括地图构建单元,用于将第一地图投影到二维平面上得到第二地图。
根据本公开的第三方面,提供一种电子设备,包括:处理器;以及存储器,所述存储器上存储有计算机可读指令,所述计算机可读指令被所述处理器执行时实现根据上述任意一项所述的深度值确定方法。
根据本公开的第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现根据上述任意一项所述的深度值确定方法。
本公开的示例性实施例中的深度值确定方法,首先,获取第一关键帧,从第一关键帧中选取像素梯度值大于第一预设阈值的特征点作为目标特征点;其次,确定关键帧中特征点的深度值范围;基于深度值范围确定目标特征点在第二关键帧中对应的目标投影点;再次,将目标投影点在深度值范围中对应的深度值作为目标特征点的目标深度值。通过本公开的深度值确定方法,一方面,从第一关键帧中可以确定出像素梯度值较高的特征点作为目标特征点,这些目标特征点一般可以为表示物体边缘的特征点,确定出这些目标特征点的深度值是构建稠密地图或半稠密地图的基础。另一方面,可以确定出所有关键帧中的所有特征点的深度值范围情况,并基于深度值范围确定目标特征点在第二关键帧中对应的目标投影点,通过确定出的深度值范围可以减少在第二关键帧中确定与目标特征点对应的目标投影点的搜索范围,提高匹配效率。又一方面,确定出目标投影点后,可以确定目标特征点的目标深度值,即目标投影点在深度值范围中对应的深度值即为目标深度值,解决了采用单目相机无法确定目标特征点的深度值的问题。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
具体实施方式
现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本公开将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本公开的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而没有所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知结构、方法、装置、实现、材料或者操作以避免模糊本公开的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个软件硬化的模块中实现这些功能实体或功能实体的一部分,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
目前,基于特征点的SLAM算法所建立的地图是如图2所示的稀疏的特征点地图;而机器人在导航过程中,不仅需要准确的定位信息,而且机器人环境对应的二维地图也是必需的。现有的基于特征点的SLAM算法由于无法计算出目标特征点的深度值信息,因此,无法直接从建立的稀疏特征点地图中获取特征点信息并生成稠密的特征点地图。
基于此,在本示例实施例中,首先提供了一种深度值确定方法,可以利用服务器来实现本公开的用深度值确定方法;也可以利用终端设备来实现本公开所述的方法,其中,所述终端设备可以包括导航装置、机器人、平板电脑、笔记本电脑、可穿戴设备、个人数字助理(Personal Digital Assistant,PDA)等各种电子设备。参考图1,该深度值确定方法可以包括以下步骤:
步骤S110.获取第一关键帧,从第一关键帧中选取像素梯度值大于第一预设阈值的特征点作为目标特征点。
在本公开的一些示例性实施方式中,帧是动画中最小单位的单幅影像画面。关键帧,也称为代表帧,可以指角色或者物体运动或变化中的关键动作所处的那一帧,是可以代表图像主要内容的一幅或多幅图像。关键帧可以是通过单目视觉机器人通过不断移动而拍摄的实际场景的多张图像。
通过基于特征点的SLAM算法可以确定出单目视觉机器人拍摄到的一个或多个关键帧。关键帧中可以包括一个或多个特征点,特征点可以是关键帧中能够反映实际三维场景中的一个具体点的像素点。像素梯度值可以是特征点对应的梯度值。目标特征点可以是关键帧中一些像素梯度值比较高的特征点。第一预设阈值可以为预先设定的与像素梯度值进行对比的值,第一预设阈值可以表示为λG。可以将像素梯度值大于第一预设阈值的特征点作为目标特征点。例如,目标特征点一般可以是表示物体边缘的特征点,确定目标特征点可以通过对关键帧进行梯度运算来实现。
第一关键帧可以是包含目标特征点的关键帧,可以从基于特征点的SLAM算法的运行结果中获取一个关键帧作为第一关键帧。获取到第一关键帧后,从第一关键帧中选取一个满足条件的特征点作为目标特征点。举例而言,第一关键帧可以是包含目标特征点p的关键帧,其中,第一关键帧可以表示为关键帧Ki。
步骤S120.确定关键帧中特征点的深度值范围。
在本公开的一些示例性实施方式中,深度值范围可以是所有关键帧中包含的所有特征点在对应关键帧中的深度值大小所对应的取值范围。参考图3,曲线310可以是关键帧中的特征点对应的深度值范围,曲线310表示了特征点的深度值的所有可能的取值情况。
参考图3,Rji可以表示旋转矩阵(Rotation),tji可以表示平移向量(Translation),对于关键帧Ki中的所有特征点,特征点的最小深度可以表示为ρimin,特征点的最大深度可以表示为ρimax,可以假设每个特征点的深度值的先验分布为N(ρ0,σ2ρ0),则其深度值范围的均值可以为公式1中所示的值,其中,ρ0可以是预测出的目标特征点p最可能对应的目标深度值。
ρ0=0.5*(ρimin+ρimax) (公式1)
步骤S130.基于深度值范围确定目标特征点在第二关键帧中对应的目标投影点。
在本公开的一些示例性实施方式中,第二关键帧可以是能够检测到与目标特征点p匹配的投影点的关键帧,其中,第二关键帧可以表示为关键帧Kj。第二关键帧可以是用于计算目标特征点的深度值而确定出的关键帧。举例而言,确定一个目标特征点p,可以在多个关键帧中匹配到与目标特征点p匹配的投影点,可以将这些关键帧定义为第二关键帧,其中,第二关键帧的数量可以是一个或多个。
如果不存在包含与目标特征点p匹配的投影点的第二关键帧,则仅基于与目标特征点p对应的第一关键帧不能确定出目标特征点p的深度值,因此,必须存在一个包含与目标特征点p匹配的投影点的第二关键帧时,才能确定出目标特征点p的深度值。
当在第一关键帧中确定出目标特征点p时,可以确定出与目标特征点p相关联的所有第二关键帧,以便基于这些第二关键帧计算目标特征点p的相关信息。
目标投影点可以是在第二关键帧中确定出的与目标特征点对应的投影点。由于在采集关键帧的过程中,相机的位置在不断发生变化,相应地,目标特征点在不同的关键帧中的相对位置也在不断发生变化。如果在第二关键帧中可以检测到目标特征点,则将第二关键帧中对应的点作为目标特征点的投影点。参考图3,关键帧Ki中的目标特征点p,目标特征点p在关键帧Kj中的观测位置可以在图3中的极线Ij中搜索到。
根据本公开的一些示例性实施例,根据深度值范围确定目标特征点在第二关键帧中对应的候选投影点;从候选投影点中筛选满足匹配条件的点作为中间投影点;基于中间投影点的误差函数值确定一中间投影点作为目标投影点。
候选投影点可以为根据确定出的特征点在第一关键帧中对应的深度范围后,初步确定出的特征点p在关键帧Kj中可能对应的投影点。匹配条件可以是为了从候选投影点中筛选中间投影点而预先设定的约束条件。目标投影点可以为匹配到的特征点p在关键帧Kj中对应的投影点,可以采用pj表示目标投影点。
对于目标特征点p,根据关键帧Ki中特征点的深度值的取值情况可以确定出目标特征点p的深度值范围,如目标特征点p的先验分布信息,目标特征点p的深度值取值在关键帧Ki相机光心与目标特征点p形成的射线长度ρimin和ρimax范围内。确定出目标特征点在关键帧Ki中对应的深度值范围,可以缩小下一步在关键帧Kj确定目标投影点时的搜索范围。
参考图3,目标特征点p的深度值分布在ρimin和ρimax范围内,由ρimin和ρimax可以反映目标特征点的深度值范围,基于深度范围确定出目标特征点p在关键帧Kj的投影点分布在图3中极线Ij中线段320的部分,从图3中可以看出,初步确定出的候选投影点有效减少了搜索范围,可以提高匹配效率,减少误匹配。
具体的,匹配条件包括:中间投影点的像素梯度值大于第一预设阈值;中间投影点的像素梯度方向与极线的方向不同;以及中间投影点的像素梯度方向与特征点的梯度方向的差值小于第二预设阈值。下面将对这三个匹配条件逐个进行说明。
(1)中间投影点的像素梯度值大于第一预设阈值。其中,中间投影点pj的像素梯度值可以表示为G(pj),则中间投影点pj的像素梯度值与第一预设阈值λG的关系如公式2所示。
G(pj)>λG (公式2)
(2)中间投影点pj的像素梯度方向与极线的方向不同。其中,极线Ij的方向如图3中所示,确定出的中间投影点pj的像素梯度方向需与极线Ij的方向不同。与极线Ij方向相同的候选投影点不能作为中间投影点。
(3)中间投影点的像素梯度方向与特征点的梯度方向的差值小于第二预设阈值。其中,第二预设阈值可以为预先设定与中间投影点pj的像素梯度方向进行对比的值,第二预设阈值可以表示为θλ,可以在确定过程中根据实际情况设定。中间投影点pj的像素梯度方向与特征点p的梯度方向的关系由公式3示出。
其中,为中间投影点pj的像素梯度方向,Θp为特征点p的像素梯度方向,△θj,i可以为用来补偿关键帧Ki与关键帧Kj的位姿变化。
将满足以上三个条件的候选投影点作为中间投影点,以便基于中间投影点确定目标投影点。
根据本公开的另一示例性实施例,基于中间投影点的像素值的残差值、梯度模的残差值、像素值的分布标准差以及梯度模的分布标准差确定中间投影点的误差函数值;从中间投影点中选取误差函数值最小的中间投影点作为目标投影点。
确定出中间投影点后,可以进一步根据限定条件确定出目标投影点,可以定义关于中间投影点的误差描述函数,其中,误差描述函数可以采用e(pj)表示,误差描述函数对应的值称为误差函数值。另外,采用rI表示像素值的残差,rG表示梯度模的残差,表示像素值的分布标准差以及/>表示梯度模的分布标准差,公式4、公式5、公式6中分别定义了各自的函数表达式。
将误差描述函数e(pj)中误差函数值最小的中间投影点作为目标投影点。
步骤S140.将目标投影点在深度值范围中对应的深度值作为目标特征点的目标深度值。
在本公开的一些示例性实施方式中,目标深度值可以是目标特征点与相机之间的距离,目标深度值是一个具体的数值。可以根据对极几何(Epipolar Geometry)原理,结合第一关键帧和第二关键帧得到目标特征点的目标深度值。
根据本公开的一些示例性实施例,第二关键帧的数量为一个,根据对极几何原理,确定目标投影点在深度值范围中对应的深度值作为目标深度值。
对极几何(Epipolar Geometry)描述的是两幅图像(即关键帧)之间的内在射影关系,与外部场景无关,仅依赖于摄像机内参数和这两幅图像之间的相对姿态。可以根据对极几何原理,并结合第一关键帧与第二关键帧对应的目标特征点及其目标投影点的深度值确定出目标特征点的目标深度值。参考图3,图3中展示了采用对极几何原理确定目标特征点的目标深度值的计算方法。
如果第二关键帧的数量仅有一个,则说明可以观测到目标特征点对应的投影点的第二关键帧只有一个,因此,根据对极几何原理,可以直接将目标投影点在深度值范围中对应的深度值作为目标深度值,该目标深度值可以为所求的目标特征点的深度。
根据本公开的另一示例性实施例,第二关键帧的数量为多个,确定目标特征点与各第二关键帧对应的多个中间深度值;将多个中间深度值进行加权平均处理以得到目标深度值。
中间深度值可以是目标特征点基于多个第二关键帧对应的目标投影点确定出的深度值,中间深度值是一个可以表示目标特征点的深度值的具体数值,然而,中间深度值不是所求的最终结果,需要对中间深度值进行处理后得到目标深度值。当在多个第二关键帧中都匹配到目标特征点p的目标投影点,则将基于这多个目标投影点确定出的目标特征点的深度值称为中间深度值。
如果第二关键帧的数量有多个,则说明可以可以在多个第二关键帧中观测到目标特征点,即可以在多个第二关键帧中匹配到目标特征点对应的目标投影点。第二关键帧可以是相机在多个不同位置获取到的包含特征点的关键帧,对于每个可以观测到目标特征点的第二关键帧,都可以在深度值范围中确定出一个与目标特征点对应的中间深度值。
本领域技术人员容易理解的是,中间深度值可以是计算目标深度值的过程中对应的一个中间结果,仅当第二关键帧的数量为多个时,可以通过计算得到中间深度值。中间深度值的计算方法与上述仅存在一个第二关键帧时,采用对极几何原理确定目标深度值的方法相同。
确定出多个中间深度值后,对多个中间深度值进行加权平均处理可以得到特征点的目标深度值。如果目标特征点p在n个第二关键帧中被匹配到,则需要对这n个第二关键帧中确定出的中间深度值的结果进行处理以得到目标深度值。
举例而言,本方法可以采用公式7中所示的方法,对多个中间深度值进行加权取平均的处理得到目标特征点p的目标深度值。
根据本公开的一些示例性实施例,目标特征点的数量为多个,获取目标特征点的像素坐标以及与目标特征点对应的关键帧的相机位姿;结合像素坐标、目标深度值以及相机位姿构建第一地图。
目标特征点可以是采集到的所有关键帧中像素梯度值大于第一预设阈值的所有特征点。目标深度值可以是这些特征点分别对应的深度信息。
像素坐标可以是特征点在关键帧中的位置,确定特征点的像素坐标,需要先确定关键帧的坐标系。常见的坐标系可以包括但不限于图像坐标系、相机坐标系、世界坐标系等。本方法中,可以获取到特征点的图像坐标系,即特征点在关键帧中的位置坐标,其中,图像坐标系可以为以图像左上角为原点建立以像素为单位的直接坐标系(u-v坐标系),像素的横坐标u与纵坐标v分别表示在其图像数组中所在的列数与所在行数。
相机位姿可以为相机的位置和姿态。确定出特征点之后,获取与特征点对应的关键帧的相机位姿,以便基于相机位姿确定特征点在三维空间中的位置坐标。
第一地图可以包括但不限于从关键帧中提取了多个特征点后,基于这些特征点构建的三维半稠密地图或三维稠密地图;其中,三维半稠密地图又可以成为半稠密三维点云,三维半稠密地图和三维稠密地图相比于稀疏特征点地图具有更多数量的特征点。
基于特征点的SLAM算法所得到的地图信息中可以包括但不限于关键帧、一些稀疏的特征点、关键帧对应的相机位姿以及互相观测关系等。可以将保留在计算机内存中的基于特征点的SLAM算法所得到的地图数据以二进制形式保留在计算机硬盘中,例如,可以将地图数据保存为二进制的.bin文件格式。
获取由基于特征点的SLAM算法得到的各特征点的位置坐标和相机位姿等信息,并结合计算出的目标特征点的深度值,对这些信息进行处理后,可以构建出与场景对应的半稠密地图或稠密地图,这些地图可以有效地反映实时场景中的相关信息。这些(半)稠密地图相比于稀疏特征点地图具有更加丰富的特征点信息,与实际场景较为相近。参考图2和图4,图4可以为图2的稀疏地图对应的三维半稠密点云的效果图,图4可以有效反映场景的三维信息。
根据本公开的另一示例性实施例,将第一地图投影到二维平面上得到第二地图。第二地图可以是对第一地图投影到一个平面上得到的相比于第一地图更加低维度的地图,例如,第二地图可以包括二维栅格地图等。栅格地图可以把环境划分成一系列栅格,其中每一栅格给定一个可能值,表示该栅格被占据的概率。二维栅格地图可以反映机器人所处环境。参考图5,图5中示出了另一个场景下对应的二维栅格地图。
需要说明的是,本公开所使用的术语“第一”、“第二”等,仅是为了区分不同的关键帧、不同的预设阈值、不同的生成地图,并不应对本公开造成任何限制。
综上所述,本公开的深度值确定方法,首先,获取第一关键帧,从第一关键帧中选取像素梯度值大于第一预设阈值的特征点作为目标特征点;其次,确定关键帧中特征点的深度值范围;基于深度值范围确定目标特征点在第二关键帧中对应的目标投影点;再次,将目标投影点在深度值范围中对应的深度值作为目标特征点的目标深度值。通过本公开的深度值确定方法,一方面,从第一关键帧中确定出像素梯度值比较高的特征点作为目标特征点,在采用对极几何原理计算目标深度值时,根据目标特征点的深度值范围情况,可以确定出在第二关键帧中与目标特征点对应的目标投影点的匹配范围,进而提高匹配效率,减少误匹配。另一方面,当存在多个与特征点相关联的第二关键帧时,即当特征点可以在多个第二关键帧中被观测到时,可以确定出特征点在各第二关键帧的中间深度值,并对各中间深度值进行加权平均处理后得到目标深度值,使得目标深度值的计算结果更加准确。又一方面,根据获取到的特征点的位置坐标、深度值和相机位姿等信息可以构建出与场景对应的三维半稠密地图,该地图有效地反映了实际场景的三维信息。再一方面,对构建出的半稠密地图进行投影处理后可以得到栅格地图,使得构建出的地图类型更加丰富,方便机器人进行导航。
此外,在本示例实施例中,还提供了一种深度值确定装置。参考图6,该深度值确定装置600可以包括特征点确定模块610、深度值范围确定模块620、投影点确定模块630以及深度值确定模块640。
具体的,关键帧确定模块610可以用于获取第一关键帧,从所述第一关键帧中选取像素梯度值大于第一预设阈值的特征点作为目标特征点;深度值范围确定模块620可以用于确定关键帧中特征点的深度值范围;投影点确定模块630可以用于基于深度值范围确定目标特征点在第二关键帧中对应的目标投影点;深度值确定模块640可以用于将目标投影点在深度值范围中对应的深度值作为目标特征点的目标深度值。
深度值确定装置600从第一关键帧中选取像素梯度值较大的特征点作为目标特征点,并确定关键帧中像素点的深度值取值范围,根据深度值范围可以缩小在第二关键帧中确定与之对应到的目标投影点的范围,可以有效提高匹配效率,减少误匹配,进而将匹配到的特征点在深度值范围中对应的深度值作为目标深度值,是一种行之有效的深度值确定方法。
根据本公开的一些示例性实施例,参考图7,投影点确定模块630可以包括投影点确定单元710。
具体的,投影点确定单元710可以用于根据深度值范围确定目标特征点在第二关键帧中对应的候选投影点;从候选投影点中筛选满足匹配条件的点作为中间投影点;基于中间投影点的误差函数值确定一中间投影点作为目标投影点。
投影点确定单元710可以根据目标特征点在第一关键帧中的深度范围可以在第二关键帧中确定出可能成为与目标特征点对应的目标投影点作为候选投影点,进而从候选投影点中筛选出一些满足预设匹配条件的点作为中间投影点,并根据中间投影点的误差函数值确定一个中间投影点作为目标投影点,基于深度值范围确定目标投影点,可以有效减少目标投影点的搜索范围,提高匹配效率。
根据本公开的另一示例性实施例,参考图8,投影点确定单元710可以包括投影点确定子单元810。
具体的,投影点确定子单元810可以用于基于中间投影点的像素值的残差值、梯度模的残差值、像素值的分布标准差以及梯度模的分布标准差确定中间投影点的误差函数值;从中间投影点中选取误差函数值最小的中间投影点作为目标投影点。
投影点确定子单元810可以根据像素值与梯度模分别对应的残差值和分布标准差的值确定误差函数,并将误差函数值取得最小值对应的中间投影点作为目标投影点。
根据本公开的又一示例性实施例,参考图9,深度值确定模块640可以包括第一深度值确定单元910。
具体的,第一深度值确定单元910可以用于根据对极几何原理,确定目标投影点在深度值范围中对应的深度值作为目标深度值。
第一深度值确定单元910提供了在第二关键帧的数量仅有一个时,采用对极几何原理确定目标特征点的目标深度值的计算方法,可以将在第二关键帧中确定出的投影点作为目标投影点,并将目标投影点对应的深度值作为所要计算的目标深度值。
根据本公开的再一示例性实施例,参考图10,深度值确定模块1010还可以包括第二深度确定单元1020。
具体的,第二深度确定单元1020可以用于确定目标特征点与各第二关键帧对应的多个中间深度值;将多个中间深度值进行加权平均处理以得到目标深度值。
第二深度确定单元1020提供了在第二关键帧的数量有多个时,基于第一关键帧以及多个第二关键帧确定目标特征点的目标深度值的方法,将目标特征点在各第二关键帧中对应的深度值进行加权平均处理,可以使得到目标深度值更加准确。
在本公开的一些示例性实施方式中,参考图11,深度值确定装置1100还可以包括地图构建模块1110。
具体的,地图构建模块1110可以用于获取目标特征点的像素坐标以及与目标特征点对应的关键帧的相机位姿;结合像素坐标、目标深度值以及相机位姿构建第一地图。
地图构建模块1110可以确定出关键帧中所有像素梯度值较高的特征点作为特征点,计算出这些特征点的深度值,并获取这些特征点的像素坐标和对应的相机位姿,基于以上场景相关的三维信息可以构建与场景对应的稠密地图或半稠密地图。
根据本公开的一些示例性实施例,参考图12,地图构建模块1110可以包括地图构建单元1210。
具体的,地图构建单元1210可以用于将第一地图投影到二维平面上得到第二地图。
地图构建单元1210将构建出的三维半稠密地图投影到一个预定的平面上,投影后可以得到二维地图,使得用户可以得到更多需要的地图类型。
上述中各虚拟深度值确定装置模块的具体细节已经在对应的深度值确定方法中进行了详细的描述,因此此处不再赘述。
应当注意,尽管在上文详细描述中提及了深度值确定装置的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
此外,在本公开的示例性实施例中,还提供了一种能够实现上述方法的电子设备。
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施例、完全的软件实施例(包括固件、微代码等),或硬件和软件方面结合的实施例,这里可以统称为“电路”、“模块”或“系统”。
下面参照图13来描述根据本发明的这种实施例的电子设备1300。图13显示的电子设备1300仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图13所示,电子设备1300以通用计算设备的形式表现。电子设备1300的组件可以包括但不限于:上述至少一个处理单元1310、上述至少一个存储单元1320、连接不同系统组件(包括存储单元1320和处理单元1310)的总线1330、显示单元1340。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元1310执行,使得所述处理单元1310执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施例的步骤。
存储单元1320可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)1321和/或高速缓存存储单元1322,还可以进一步包括只读存储单元(ROM)1323。
存储单元1320还可以包括具有一组(至少一个)程序模块1325的程序/实用工具1324,这样的程序模块1325包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线1330可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备1300也可以与一个或多个外部设备1370(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备1300交互的设备通信,和/或与使得该电子设备1300能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口1350进行。并且,电子设备1300还可以通过网络适配器1360与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器1360通过总线1330与电子设备1300的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备1300使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施例的描述,本领域的技术人员易于理解,这里描述的示例实施例可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施例的方法。
在本公开的示例性实施例中,还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施例中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施例的步骤。
参考图14所示,描述了根据本发明的实施例的用于实现上述方法的程序产品1400,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
此外,上述附图仅是根据本发明示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其他实施例。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限。