CN108205820B - 平面的重建方法、融合方法、装置、设备及存储介质 - Google Patents
平面的重建方法、融合方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN108205820B CN108205820B CN201810107923.5A CN201810107923A CN108205820B CN 108205820 B CN108205820 B CN 108205820B CN 201810107923 A CN201810107923 A CN 201810107923A CN 108205820 B CN108205820 B CN 108205820B
- Authority
- CN
- China
- Prior art keywords
- plane
- points
- equation
- current frame
- clustering
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/10—Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
Landscapes
- Physics & Mathematics (AREA)
- Geometry (AREA)
- Engineering & Computer Science (AREA)
- Computer Graphics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Processing Or Creating Images (AREA)
- Image Analysis (AREA)
- Image Processing (AREA)
Abstract
本发明实施例公开了一种平面的重建方法、融合方法、装置、设备及存储介质,其中,所述方法包括:获取输入的当前帧的三维3D点云,所述3D点云包括多个3D点;以重力方向作为约束条件,对所述当前帧的3D点云中包括的3D点进行聚类,得到至少一个当前帧的平面,其中,所述至少一个当前帧的平面包括水平面和/或竖直面,每个当前帧的平面包括所述多个3D点中的至少两个3D点。
Description
技术领域
本发明涉及三维重建技术,尤其涉及一种平面的重建方法、融合方法、装置、设备及存储介质。
背景技术
三维重建是计算机视觉及增强现实领域的重要问题,在移动平台的增强现实和游戏等应用中发挥着重要的作用。移动平台上要实现虚拟物体和真实场景的遮挡、视线求交、阴影投射、交互碰撞等功能,通常要求简单的平面结构重建以保证低计算开销和高效率,因此多平面重建技术在移动平台的增强现实领域有着广泛的需求。
发明内容
有鉴于此,本发明实施例提供一种平面的重建方法、融合方法、装置、设备及存储介质。
一方面,本发明实施例提供一种平面的重建方法,所述方法包括:
获取输入的当前帧的三维3D点云,所述3D点云包括多个3D点;
以重力方向作为约束条件,对所述当前帧的3D点云中包括的3D点进行聚类,得到至少一个当前帧的平面,其中,所述至少一个当前帧的平面包括水平面和/或竖直面,每个当前帧的平面包括所述多个3D点中的至少两个3D点。
在一些实施例中,所述以重力方向作为约束条件,对所述当前帧的3D点云中包括的3D点进行聚类,得到至少一个当前帧的平面,包括:
以重力方向为约束条件,基于所述当前帧的3D点云,确定平面方程PX1;
基于所述平面方程PX1,对所述3D点云中包括的3D点进行聚类,得到所述平面方程PX1对应的至少一个平面P1,其中,所述至少一个当前帧的平面包括所述至少一个平面P1。
在一些实施例中,所述以重力方向为约束条件,基于所述当前帧的3D点云,确定平面方程PX1,包括:
以所述重力方向作为约束条件,从当前待聚合的多个3D点中确定至少一个3D点集合,每个3D点集合包含当前待聚合的多个3D点中的至少两个3D点;
从至少一个3D点集合中确定3D点数目满足预设条件的候选3D点集合R;
基于所述候选3D点集合R,确定平面方程PX1。
在一些实施例中,所述预设条件包括:
所述候选3D点集合R为所述至少一个3D点集合中包含3D点数目最多的3D点集合;和/或,
所述候选3D点集合R中包含的3D点数目大于或等于预设阈值。
在一些实施例中,所述以所述重力方向作为约束条件,从当前待聚合的多个3D点中确定至少一个3D点集合,包括:
从所述当前待聚合的多个3D点中选取第一采样点,利用选取的第一采样点拟合平面方程PX2;
如果所述平面方程PX2的法向方向满足以所述重力方向作为约束参数的约束条件,从所述当前待聚合的多个3D点中确定对应于所述平面方程PX2的3D点集合。
在一些实施例中,所述从所述当前待聚合的多个3D点中选取第一采样点,包括:
如果采样点的当前已选取次数低于最大选取次数L,从所述当前待聚合的多个3D点中选取第一采样点,其中,所述最大选取次数L是基于前一次选取的采样点得到的3D点集合中包含的3D点数量确定的。
在一些实施例中,所述方法还包括:
根据对应于所述平面方程PX2的3D点集合中包含的3D点数目,更新所述最大选取次数L。
在一些实施例中,所述从所述当前待聚合的多个3D点中选取第一采样点,包括:
获取所述当前待聚合的多个3D点中每一3D点的法向方向;
从所述当前待聚合的多个3D点中选取两两之间的法向方向之间的角度差小于第一角度阈值的多个3D点作为所述第一采样点。
在一些实施例中,所述如果所述平面方程PX2的法向方向满足以所述重力方向作为约束参数的约束条件,从所述当前待聚合的多个3D点中确定对应于所述平面方程PX2的3D点集合,包括:
如果平面P2的法向方向和所述重力方向之间的角度差小于第二角度阈值或者在第三角度阈值区间范围内,从所述当前待聚合的多个3D点中确定对应于所述平面方程PX2的3D点集合。
在一些实施例中,所述如果所述平面方程PX2的法向方向满足以所述重力方向作为约束参数的约束条件,从所述当前待聚合的多个3D点中确定对应于所述平面方程PX2的3D点集合,包括:
如果所述平面方程PX2的法向方向满足以所述重力方向作为约束参数的约束条件,则将所述当前待聚合的多个3D点中与所述平面方程PX2之间的距离小于第一距离阈值并且法向方向与平面方程PX2的法向方向之间的角度差小于第四角度阈值的3D点确定为对应于所述平面方程PX2的3D点。
在一些实施例中,所述基于所述平面方程PX1,对所述3D点云中包括的待聚合的多个3D点进行聚类,得到所述平面方程PX1对应的至少一个平面P1,包括:
基于所述平面方程PX1,确定对应于所述至少一个平面P1的至少一个第一连通子集合;
基于所述至少一个平面P1中每个平面P1对应的第一连通子集合,确定所述每个平面P1的边界顶点。
在一些实施例中,所述基于所述平面方程PX1,确定对应于所述至少一个平面P1的至少一个第一连通子集合,包括:
基于所述平面方程PX1和所述待聚合的多个3D点对应的二维2D图像坐标,确定所述至少一个第一连通子集合。
在一些实施例中,所述基于所述至少一个平面P1中每个平面P1对应的第一连通子集合,确定所述每个平面P1的边界顶点,包括:
将所述平面包含的至少两个3D点垂直投影至所述平面方程PX1对应的二维2D坐标系,得到所述平面P1包含的至少两个3D点中每个3D点对应的2D坐标;
基于所述至少两个3D点中每个3D点对应的2D坐标,确定所述平面P1的边界顶点。
在一些实施例中,所述基于所述至少两个3D点中每个3D点对应的2D坐标,确定所述平面P1的边界顶点,包括:
基于所述至少两个3D顶点对应的2D坐标求解凸包多边形,得到所述平面P1的边界顶点。
在一些实施例中,所述方法还包括:
从所述待聚合的多个3D点中除去与所述平面方程PX1之间的距离小于第二距离阈值的3D点,得到更新后的待聚合的多个3D点。
在一些实施例中,所述方法还包括:
基于所述重力方向,确定所述当前帧的至少一个平面的属性,所述属性包括水平面或竖直面。
在一些实施例中,所述基于所述重力方向确定至少一个平面的属性,包括:
如果所述当前帧的平面的法向方向与所述重力方向之间角度差小于第二角度阈值,则确定所述当前帧的平面的属性为水平面;和/或
如果所述当前帧的平面的法向方向与所述重力方向之间角度差在第三角度阈值区间范围内,则确定所述当前帧的平面的属性为竖直面。
在一些实施例中,所述方法还包括:
对所述至少一个当前帧的平面P与已有平面列表中的平面Pr进行融合,其中,所述已有平面列表包含至少一个除所述当前帧之外的其他帧对应的平面。
在一些实施例中,所述对至少一个平面P与已有平面列表中的平面Pr进行融合包括:
确定所述平面P与所述平面Pr的连通关系;
根据所述连通关系,将所述平面P与所述平面Pr中相互连通的平面融合成新的平面。
在一些实施例中,所述确定所述平面P与所述平面Pr的连通关系,包括:
如果所述平面P的顶点投影与所述平面Pr相交,并且平面P的顶点至平面Pr的距离与平面Pr的顶点至平面P的距离均小于或等于第三距离阈值,确定平面P与平面Pr相连通。
在一些实施例中,所述确定所述平面P与所述平面Pr的连通关系,包括:
利用所述平面P和所述平面Pr所包含的3D点集合,拟合平面Pn;
如果所述平面Pn满足以重力方向作为约束参数的约束条件,确定所述平面P与所述平面Pr相连通。
在一些实施例中,所述确定所述平面P与所述平面Pr的连通关系,还包括:
如果所述平面Pn与所述平面P的属性相同,确定平面P与平面Pr相连通。
在一些实施例中,所述确定所述平面P与所述平面Pr的连通关系,还包括:
如果所述当前帧的平面P的属性与所述平面Pr的属性不相同,或者,述平面P的顶点投影与所述平面Pr不相交,或者,如果所述平面Pn的法向方向与所述重力方向之间的角度差不小于第二角度阈值或者不在第三角度阈值区间范围内,或者,所述第五平面Pn与所述平面P的属性不相同,确定平面P与平面Pr不连通。
在一些实施例中,所述利用平面P和平面Pr所包含的3D点集合,拟合平面Pn,包括:
如果所述平面P与所述平面Pr的法向角度差在第一角度阈值以内,将所述平面P的顶点垂直投影至Pr的坐标系内,获得所述平面P的顶点对应的2D多边形;
如果所述平面P的顶点对应的2D多边形与平面Pr的顶点对应的多边形相交,利用平面P和平面Pr所包含的内点集合,拟合平面Pn。
在一些实施例中,所述根据所述连通关系,将所述平面P与所述平面Pr中相互连通的平面融合成新的平面,包括:
根据所述连通关系,确定所述平面P和所述平面Pr构成的第二连通子集合;
基于所述第二连通子集合中的平面包含的3D点,拟合平面方程PX3;
基于所述平面方程PX3,确定融合的新平面。
在一些实施例中,所述方法还包括:基于对所述平面P与所述平面Pr进行融合的结果,更新所述已有平面列表。
另一方面,本发明实施例提供一种平面的融合方法,所述方法还包括:
获取至少一个当前帧的平面P与已有平面列表中的平面Pr,其中,所述已有平面列表包含至少一个除所述当前帧之外的其他帧对应的平面;
确定所述平面P与所述平面Pr的连通关系;
根据所述连通关系,将所述平面P与所述平面Pr中相互连通的平面融合成新的平面。
在一些实施例中,所述确确定所述平面P与所述平面Pr的连通关系,包括:
如果所述平面P的顶点投影与所述平面Pr相交,并且平面P的顶点至平面Pr的距离与平面Pr的顶点至平面P的距离均小于或等于第三距离阈值,确定平面P与平面Pr相连通。
在一些实施例中,所述确定所述平面P与所述平面Pr的连通关系,包括:
利用所述平面P和所述平面Pr所包含的3D点集合,拟合平面Pn;
如果所述平面Pn满足以重力方向作为约束参数的约束条件,确定所述平面P与所述平面Pr相连通。
在一些实施例中,所述确定所述平面P与所述平面Pr的连通关系,还包括:
如果所述平面Pn与所述平面P的属性相同,确定平面P与平面Pr相连通。
在一些实施例中,所述确定所述平面P与所述平面Pr的连通关系,还包括:
如果所述当前帧的平面P的属性与所述平面Pr的属性不相同,或者,述平面P的顶点投影与所述平面Pr不相交,或者,如果所述平面Pn的法向方向与所述重力方向之间的角度差不小于第二角度阈值或者不在第三角度阈值区间范围内,或者,所述第五平面Pn与所述平面P的属性不相同,确定平面P与平面Pr不连通。
在一些实施例中,所述利用平面P和平面Pr所包含的3D点集合,拟合平面Pn,包括:
如果所述平面P与所述平面Pr的法向角度差在第一角度阈值以内,将所述平面P的顶点垂直投影至Pr的坐标系内,获得所述平面P的顶点对应的2D多边形;
如果所述平面P的顶点对应的2D多边形与平面Pr的顶点对应的多边形相交,利用平面P和平面Pr所包含的内点集合,拟合平面Pn。
在一些实施例中,所述根据所述连通关系,将所述平面P与所述平面Pr中相互连通的平面融合成新的平面,包括:
根据所述连通关系,确定所述平面P和所述平面Pr构成的第二连通子集合;
基于所述第二连通子集合中的平面包含的3D点,拟合平面方程PX3;
基于所述平面方程PX3,确定融合的新平面。
在一些实施例中,所述方法还包括:基于对所述平面P与所述平面Pr进行融合的结果,更新所述已有平面列表。
在一些实施例中,所述方法包括:
获取输入的当前帧的三维3D点云,所述3D点云包括多个3D点;
以重力方向作为约束条件,对所述当前帧的3D点云中包括的3D点进行聚类,得到至少一个当前帧的平面P,其中,所述至少一个当前帧的平面包括水平面和/或竖直面,每个当前帧的平面包括所述多个3D点中的至少两个3D点。
在一些实施例中,所述以重力方向作为约束条件,对所述当前帧的3D点云中包括的3D点进行聚类,得到至少一个当前帧的平面,包括:
以重力方向为约束条件,基于所述当前帧的3D点云,确定平面方程PX1;
基于所述平面方程PX1,对所述3D点云中包括的3D点进行聚类,得到所述平面方程PX1对应的至少一个平面P1,其中,所述至少一个当前帧的平面包括所述至少一个平面P1。
在一些实施例中,所述以重力方向为约束条件,基于所述当前帧的3D点云,确定平面方程PX1,包括:
以所述重力方向作为约束条件,从当前待聚合的多个3D点中确定至少一个3D点集合,每个3D点集合包含当前待聚合的多个3D点中的至少两个3D点;
从至少一个3D点集合中确定3D点数目满足预设条件的候选3D点集合R;
基于所述候选3D点集合R,确定平面方程PX1。
在一些实施例中,所述预设条件包括:
所述候选3D点集合R为所述至少一个3D点集合中包含3D点数目最多的3D点集合;和/或,
所述候选3D点集合R中包含的3D点数目大于或等于预设阈值。
在一些实施例中,所述以所述重力方向作为约束条件,从当前待聚合的多个3D点中确定至少一个3D点集合,包括:
从所述当前待聚合的多个3D点中选取第一采样点,利用选取的第一采样点拟合平面方程PX2;
如果所述平面方程PX2的法向方向满足以所述重力方向作为约束参数的约束条件,从所述当前待聚合的多个3D点中确定对应于所述平面方程PX2的3D点集合。
在一些实施例中,所述从所述当前待聚合的多个3D点中选取第一采样点,包括:
如果采样点的当前已选取次数低于最大选取次数L,从所述当前待聚合的多个3D点中选取第一采样点,其中,所述最大选取次数L是基于前一次选取的采样点得到的3D点集合中包含的3D点数量确定的。
在一些实施例中,所述方法还包括:
根据对应于所述平面方程PX2的3D点集合中包含的3D点数目,更新所述最大选取次数L。
在一些实施例中,所述从所述当前待聚合的多个3D点中选取第一采样点,包括:
获取所述当前待聚合的多个3D点中每一3D点的法向方向;
从所述当前待聚合的多个3D点中选取两两之间的法向方向之间的角度差小于第一角度阈值的多个3D点作为所述第一采样点。
在一些实施例中,所述如果所述平面方程PX2的法向方向满足以所述重力方向作为约束参数的约束条件,从所述当前待聚合的多个3D点中确定对应于所述平面方程PX2的3D点集合,包括:
如果平面P2的法向方向和所述重力方向之间的角度差小于第二角度阈值或者在第三角度阈值区间范围内,从所述当前待聚合的多个3D点中确定对应于所述平面方程PX2的3D点集合。
在一些实施例中,所述如果所述平面方程PX2的法向方向满足以所述重力方向作为约束参数的约束条件,从所述当前待聚合的多个3D点中确定对应于所述平面方程PX2的3D点集合,包括:
如果所述平面方程PX2的法向方向满足以所述重力方向作为约束参数的约束条件,则将所述当前待聚合的多个3D点中与所述平面方程PX2之间的距离小于第一距离阈值并且法向方向与平面方程PX2的法向方向之间的角度差小于第四角度阈值的3D点确定为对应于所述平面方程PX2的3D点。
在一些实施例中,所述基于所述平面方程PX1,对所述3D点云中包括的待聚合的多个3D点进行聚类,得到所述平面方程PX1对应的至少一个平面P1,包括:
基于所述平面方程PX1,确定对应于所述至少一个平面P1的至少一个第一连通子集合;
基于所述至少一个平面P1中每个平面P1对应的第一连通子集合,确定所述每个平面P1的边界顶点。
在一些实施例中,所述基于所述平面方程PX1,确定对应于所述至少一个平面P1的至少一个第一连通子集合,包括:
基于所述平面方程PX1和所述待聚合的多个3D点对应的二维2D图像坐标,确定所述至少一个第一连通子集合。
在一些实施例中,所述基于所述至少一个平面P1中每个平面P1对应的第一连通子集合,确定所述每个平面P1的边界顶点,包括:
将所述平面包含的至少两个3D点垂直投影至所述平面方程PX1对应的二维2D坐标系,得到所述平面P1包含的至少两个3D点中每个3D点对应的2D坐标;
基于所述至少两个3D点中每个3D点对应的2D坐标,确定所述平面P1的边界顶点。
在一些实施例中,所述基于所述至少两个3D点中每个3D点对应的2D坐标,确定所述平面P1的边界顶点,包括:
基于所述至少两个3D顶点对应的2D坐标求解凸包多边形,得到所述平面P1的边界顶点。
在一些实施例中,所述方法还包括:
从所述待聚合的多个3D点中除去与所述平面方程PX1之间的距离小于第二距离阈值的3D点,得到更新后的待聚合的多个3D点。
在一些实施例中,所述方法还包括:
基于所述重力方向,确定所述当前帧的至少一个平面的属性,所述属性包括水平面或竖直面。
在一些实施例中,所述基于所述重力方向确定至少一个平面的属性,包括:
如果所述当前帧的平面的法向方向与所述重力方向之间角度差小于第二角度阈值,则确定所述当前帧的平面的属性为水平面;和/或
如果所述当前帧的平面的法向方向与所述重力方向之间角度差在第三角度阈值区间范围内,则确定所述当前帧的平面的属性为竖直面。
还一方面,本发明实施例一种平面的重建装置,所述装置包括:
第一获取部分,用于获取输入的当前帧的三维3D点云,所述3D点云包括多个3D点;
聚类部分,用于以重力方向作为约束条件,对所述当前帧的3D点云中包括的3D点进行聚类,得到至少一个当前帧的平面,其中,所述至少一个当前帧的平面包括水平面和/或竖直面,每个当前帧的平面包括所述多个3D点中的至少两个3D点。
在一些实施例中,所述聚类部分,用于:
以重力方向为约束条件,基于所述当前帧的3D点云,确定平面方程PX1;
基于所述平面方程PX1,对所述3D点云中包括的3D点进行聚类,得到所述平面方程PX1对应的至少一个平面P1,其中,所述至少一个当前帧的平面包括所述至少一个平面P1。
在一些实施例中,所述聚类部分以重力方向为约束条件,基于所述当前帧的3D点云,确定平面方程PX1,包括:
所述聚类部分以所述重力方向作为约束条件,从当前待聚合的多个3D点中确定至少一个3D点集合,每个3D点集合包含当前待聚合的多个3D点中的至少两个3D点;
所述聚类部分从至少一个3D点集合中确定3D点数目满足预设条件的候选3D点集合R;
所述聚类部分基于所述候选3D点集合R,确定平面方程PX1。
在一些实施例中,所述预设条件包括:
所述候选3D点集合R为所述至少一个3D点集合中包含3D点数目最多的3D点集合;和/或,
所述候选3D点集合R中包含的3D点数目大于或等于预设阈值。
在一些实施例中,所述聚类部分以所述重力方向作为约束条件,从当前待聚合的多个3D点中确定至少一个3D点集合,包括:
所述聚类部分从所述当前待聚合的多个3D点中选取第一采样点,利用选取的第一采样点拟合平面方程PX2;
如果所述平面方程PX2的法向方向满足以所述重力方向作为约束参数的约束条件,所述聚类部分从所述当前待聚合的多个3D点中确定对应于所述平面方程PX2的3D点集合。
在一些实施例中,所述聚类部分从所述当前待聚合的多个3D点中选取第一采样点,包括:
如果采样点的当前已选取次数低于最大选取次数L,所述聚类部分从所述当前待聚合的多个3D点中选取第一采样点,其中,所述最大选取次数L是基于前一次选取的采样点得到的3D点集合中包含的3D点数量确定的。
在一些实施例中,所述聚类部分还用于根据对应于所述平面方程PX2的3D点集合中包含的3D点数目,更新所述最大选取次数L。
在一些实施例中,所述聚类部分从所述当前待聚合的多个3D点中选取第一采样点,包括:
所述聚类部分获取所述当前待聚合的多个3D点中每一3D点的法向方向;
所述聚类部分从所述当前待聚合的多个3D点中选取两两之间的法向方向之间的角度差小于第一角度阈值的多个3D点作为所述第一采样点。
在一些实施例中,如果所述平面方程PX2的法向方向满足以所述重力方向作为约束参数的约束条件,所述聚类部分从所述当前待聚合的多个3D点中确定对应于所述平面方程PX2的3D点集合,包括:
如果平面P2的法向方向和所述重力方向之间的角度差小于第二角度阈值或者在第三角度阈值区间范围内,所述聚类部分从所述当前待聚合的多个3D点中确定对应于所述平面方程PX2的3D点集合。
在一些实施例中,如果所述平面方程PX2的法向方向满足以所述重力方向作为约束参数的约束条件,所述聚类部分从所述当前待聚合的多个3D点中确定对应于所述平面方程PX2的3D点集合,包括:
如果所述平面方程PX2的法向方向满足以所述重力方向作为约束参数的约束条件,所述聚类部分将所述当前待聚合的多个3D点中与所述平面方程PX2之间的距离小于第一距离阈值并且法向方向与平面方程PX2的法向方向之间的角度差小于第四角度阈值的3D点确定为对应于所述平面方程PX2的3D点。
在一些实施例中,所述聚类部分基于所述平面方程PX1,对所述3D点云中包括的待聚合的多个3D点进行聚类,得到所述平面方程PX1对应的至少一个平面P1,包括:
所述聚类部分基于所述平面方程PX1,确定对应于所述至少一个平面P1的至少一个第一连通子集合;
所述聚类部分基于所述至少一个平面P1中每个平面P1对应的第一连通子集合,确定所述每个平面P1的边界顶点。
在一些实施例中,所述聚类部分基于所述平面方程PX1,确定对应于所述至少一个平面P1的至少一个第一连通子集合,包括:
所述聚类部分基于所述平面方程PX1和所述待聚合的多个3D点对应的二维2D图像坐标,确定所述至少一个第一连通子集合。
在一些实施例中,所述聚类部分基于所述至少一个平面P1中每个平面P1对应的第一连通子集合,确定所述每个平面P1的边界顶点,包括:
所述聚类部分将所述平面包含的至少两个3D点垂直投影至所述平面方程PX1对应的二维2D坐标系,得到所述平面P1包含的至少两个3D点中每个3D点对应的2D坐标;
所述聚类部分基于所述至少两个3D点中每个3D点对应的2D坐标,确定所述平面P1的边界顶点。
在一些实施例中,所述聚类部分基于所述至少两个3D点中每个3D点对应的2D坐标,确定所述平面P1的边界顶点,包括:
所述聚类部分基于所述至少两个3D顶点对应的2D坐标求解凸包多边形,得到所述平面P1的边界顶点。
在一些实施例中,所述聚类部分还用于从所述待聚合的多个3D点中除去与所述平面方程PX1之间的距离小于第二距离阈值的3D点,得到更新后的待聚合的多个3D点。
在一些实施例中,所述聚类部分还用于基于所述重力方向,确定所述当前帧的至少一个平面的属性,所述属性包括水平面或竖直面。
在一些实施例中,所述聚类部分基于所述重力方向确定至少一个平面的属性,包括:
如果所述当前帧的平面的法向方向与所述重力方向之间角度差小于第二角度阈值,则所述聚类部分确定所述当前帧的平面的属性为水平面;和/或
如果所述当前帧的平面的法向方向与所述重力方向之间角度差在第三角度阈值区间范围内,则所述聚类部分确定所述当前帧的平面的属性为竖直面。
在一些实施例中,所述装置还包括融合部分,用于对所述至少一个当前帧的平面P与已有平面列表中的平面Pr进行融合,其中,所述已有平面列表包含至少一个除所述当前帧之外的其他帧对应的平面。
在一些实施例中,所述聚类部分对至少一个平面P与已有平面列表中的平面Pr进行融合包括:
所述聚类部分确定所述平面P与所述平面Pr的连通关系;
所述聚类部分根据所述连通关系,将所述平面P与所述平面Pr中相互连通的平面融合成新的平面。
在一些实施例中,所述聚类部分确定所述平面P与所述平面Pr的连通关系,包括:
如果所述平面P的顶点投影与所述平面Pr相交,并且平面P的顶点至平面Pr的距离与平面Pr的顶点至平面P的距离均小于或等于第三距离阈值,所述聚类部分确定平面P与平面Pr相连通。
在一些实施例中,所述聚类部分确定所述平面P与所述平面Pr的连通关系,包括:
所述聚类部分利用所述平面P和所述平面Pr所包含的3D点集合,拟合平面Pn;
如果所述平面Pn满足以重力方向作为约束参数的约束条件,所述聚类部分确定所述平面P与所述平面Pr相连通。
在一些实施例中,所述聚类部分确定所述平面P与所述平面Pr的连通关系,还包括:
如果所述平面Pn与所述平面P的属性相同,所述聚类部分确定平面P与平面Pr相连通。
在一些实施例中,所述聚类部分确定所述平面P与所述平面Pr的连通关系,还包括:
如果所述当前帧的平面P的属性与所述平面Pr的属性不相同,或者,述平面P的顶点投影与所述平面Pr不相交,或者,如果所述平面Pn的法向方向与所述重力方向之间的角度差不小于第二角度阈值或者不在第三角度阈值区间范围内,或者,所述第五平面Pn与所述平面P的属性不相同,所述聚类部分确定平面P与平面Pr不连通。
在一些实施例中,所述聚类部分利用平面P和平面Pr所包含的3D点集合,拟合平面Pn,包括:
如果所述平面P与所述平面Pr的法向角度差在第一角度阈值以内,所述聚类部分将所述平面P的顶点垂直投影至Pr的坐标系内,获得所述平面P的顶点对应的2D多边形;
如果所述平面P的顶点对应的2D多边形与平面Pr的顶点对应的多边形相交,所述聚类部分利用平面P和平面Pr所包含的内点集合,拟合平面Pn。
在一些实施例中,所述聚类部分根据所述连通关系,将所述平面P与所述平面Pr中相互连通的平面融合成新的平面,包括:
所述聚类部分根据所述连通关系,确定所述平面P和所述平面Pr构成的第二连通子集合;
所述聚类部分基于所述第二连通子集合中的平面包含的3D点,拟合平面方程PX3;
所述聚类部分基于所述平面方程PX3,确定融合的新平面。
在一些实施例中,所述聚类部分还用于基于对所述平面P与所述平面Pr进行融合的结果,更新所述已有平面列表。
还一方面,本发明实施例一种平面的融合装置,所述装置还包括:
第二获取部分,用于获取至少一个当前帧的平面P与已有平面列表中的平面Pr,其中,所述已有平面列表包含至少一个除所述当前帧之外的其他帧对应的平面;
确定部分,用于确定所述平面P与所述平面Pr的连通关系;
融合部分,用于根据所述连通关系,将所述平面P与所述平面Pr中相互连通的平面融合成新的平面。
在一些实施例中,所述确定部分确定所述平面P与所述平面Pr的连通关系,包括:
如果所述平面P的顶点投影与所述平面Pr相交,并且平面P的顶点至平面Pr的距离与平面Pr的顶点至平面P的距离均小于或等于第三距离阈值,所述确定部分确定平面P与平面Pr相连通。
在一些实施例中,所述确定部分确定所述平面P与所述平面Pr的连通关系,包括:
所述确定部分利用所述平面P和所述平面Pr所包含的3D点集合,拟合平面Pn;
如果所述平面Pn满足以重力方向作为约束参数的约束条件,所述确定部分确定所述平面P与所述平面Pr相连通。
在一些实施例中,所述确定部分确定所述平面P与所述平面Pr的连通关系,还包括:
如果所述平面Pn与所述平面P的属性相同,所述确定部分确定平面P与平面Pr相连通。
在一些实施例中,所述确定部分确定所述平面P与所述平面Pr的连通关系,还包括:
如果所述当前帧的平面P的属性与所述平面Pr的属性不相同,或者,述平面P的顶点投影与所述平面Pr不相交,或者,如果所述平面Pn的法向方向与所述重力方向之间的角度差不小于第二角度阈值或者不在第三角度阈值区间范围内,或者,所述第五平面Pn与所述平面P的属性不相同,所述确定部分确定平面P与平面Pr不连通。
在一些实施例中,所述确定部分利用平面P和平面Pr所包含的3D点集合,拟合平面Pn,包括:
如果所述平面P与所述平面Pr的法向角度差在第一角度阈值以内,所述确定部分将所述平面P的顶点垂直投影至Pr的坐标系内,获得所述平面P的顶点对应的2D多边形;
如果所述平面P的顶点对应的2D多边形与平面Pr的顶点对应的多边形相交,所述确定部分利用平面P和平面Pr所包含的内点集合,拟合平面Pn。
在一些实施例中,所述融合部分,用于:
根据所述连通关系,确定所述平面P和所述平面Pr构成的第二连通子集合;
基于所述第二连通子集合中的平面包含的3D点,拟合平面方程PX3;
基于所述平面方程PX3,确定融合的新平面。
在一些实施例中,所述融合部分,用于基于对所述平面P与所述平面Pr进行融合的结果,更新所述已有平面列表。
在一些实施例中,所述装置包括:
第一获取部分,用于获取输入的当前帧的三维3D点云,所述3D点云包括多个3D点;
聚类部分,用于以重力方向作为约束条件,对所述当前帧的3D点云中包括的3D点进行聚类,得到至少一个当前帧的平面P,其中,所述至少一个当前帧的平面包括水平面和/或竖直面,每个当前帧的平面包括所述多个3D点中的至少两个3D点。
在一些实施例中,所述聚类部分,用于以重力方向为约束条件,基于所述当前帧的3D点云,确定平面方程PX1;
基于所述平面方程PX1,对所述3D点云中包括的3D点进行聚类,得到所述平面方程PX1对应的至少一个平面P1,其中,所述至少一个当前帧的平面包括所述至少一个平面P1。
在一些实施例中,所述聚类部分以重力方向为约束条件,基于所述当前帧的3D点云,确定平面方程PX1,包括:
所述聚类部分以所述重力方向作为约束条件,从当前待聚合的多个3D点中确定至少一个3D点集合,每个3D点集合包含当前待聚合的多个3D点中的至少两个3D点;
从至少一个3D点集合中确定3D点数目满足预设条件的候选3D点集合R;
基于所述候选3D点集合R,确定平面方程PX1。
在一些实施例中,所述预设条件包括:
所述候选3D点集合R为所述至少一个3D点集合中包含3D点数目最多的3D点集合;和/或,
所述候选3D点集合R中包含的3D点数目大于或等于预设阈值。
在一些实施例中,所述聚类部分以所述重力方向作为约束条件,从当前待聚合的多个3D点中确定至少一个3D点集合,包括:
所述聚类部分从所述当前待聚合的多个3D点中选取第一采样点,利用选取的第一采样点拟合平面方程PX2;
如果所述平面方程PX2的法向方向满足以所述重力方向作为约束参数的约束条件,所述聚类部分从所述当前待聚合的多个3D点中确定对应于所述平面方程PX2的3D点集合。
在一些实施例中,所述聚类部分从所述当前待聚合的多个3D点中选取第一采样点,包括:
如果采样点的当前已选取次数低于最大选取次数L,所述聚类部分从所述当前待聚合的多个3D点中选取第一采样点,其中,所述最大选取次数L是基于前一次选取的采样点得到的3D点集合中包含的3D点数量确定的。
在一些实施例中,所述聚类部分,还用于根据对应于所述平面方程PX2的3D点集合中包含的3D点数目,更新所述最大选取次数L。
在一些实施例中,所述聚类部分从所述当前待聚合的多个3D点中选取第一采样点,包括:
所述聚类部分获取所述当前待聚合的多个3D点中每一3D点的法向方向;
所述聚类部分从所述当前待聚合的多个3D点中选取两两之间的法向方向之间的角度差小于第一角度阈值的多个3D点作为所述第一采样点。
在一些实施例中,所述聚类部分如果所述平面方程PX2的法向方向满足以所述重力方向作为约束参数的约束条件,从所述当前待聚合的多个3D点中确定对应于所述平面方程PX2的3D点集合,包括:
如果平面P2的法向方向和所述重力方向之间的角度差小于第二角度阈值或者在第三角度阈值区间范围内,从所述当前待聚合的多个3D点中确定对应于所述平面方程PX2的3D点集合。
在一些实施例中,所述聚类部分如果所述平面方程PX2的法向方向满足以所述重力方向作为约束参数的约束条件,从所述当前待聚合的多个3D点中确定对应于所述平面方程PX2的3D点集合,包括:
如果所述平面方程PX2的法向方向满足以所述重力方向作为约束参数的约束条件,则所述聚类部分将所述当前待聚合的多个3D点中与所述平面方程PX2之间的距离小于第一距离阈值并且法向方向与平面方程PX2的法向方向之间的角度差小于第四角度阈值的3D点确定为对应于所述平面方程PX2的3D点。
在一些实施例中,所述聚类部分基于所述平面方程PX1,对所述3D点云中包括的待聚合的多个3D点进行聚类,得到所述平面方程PX1对应的至少一个平面P1,包括:
基于所述平面方程PX1,所述聚类部分确定对应于所述至少一个平面P1的至少一个第一连通子集合;
基于所述至少一个平面P1中每个平面P1对应的第一连通子集合,所述聚类部分确定所述每个平面P1的边界顶点。
在一些实施例中,所述聚类部分基于所述平面方程PX1,确定对应于所述至少一个平面P1的至少一个第一连通子集合,包括:
所述聚类部分基于所述平面方程PX1和所述待聚合的多个3D点对应的二维2D图像坐标,确定所述至少一个第一连通子集合。
在一些实施例中,所述聚类部分基于所述至少一个平面P1中每个平面P1对应的第一连通子集合,确定所述每个平面P1的边界顶点,包括:
所述聚类部分将所述平面包含的至少两个3D点垂直投影至所述平面方程PX1对应的二维2D坐标系,得到所述平面P1包含的至少两个3D点中每个3D点对应的2D坐标;
所述聚类部分基于所述至少两个3D点中每个3D点对应的2D坐标,确定所述平面P1的边界顶点。
在一些实施例中,所述聚类部分基于所述至少两个3D点中每个3D点对应的2D坐标,确定所述平面P1的边界顶点,包括:
所述聚类部分基于所述至少两个3D顶点对应的2D坐标求解凸包多边形,得到所述平面P1的边界顶点。
在一些实施例中,所述聚类部分,用于从所述待聚合的多个3D点中除去与所述平面方程PX1之间的距离小于第二距离阈值的3D点,得到更新后的待聚合的多个3D点。
在一些实施例中,所述聚类部分,还用于基于所述重力方向,确定所述当前帧的至少一个平面的属性,所述属性包括水平面或竖直面。
在一些实施例中,所述聚类部分,还用于:
如果所述当前帧的平面的法向方向与所述重力方向之间角度差小于第二角度阈值,则确定所述当前帧的平面的属性为水平面;和/或
如果所述当前帧的平面的法向方向与所述重力方向之间角度差在第三角度阈值区间范围内,则确定所述当前帧的平面的属性为竖直面。
再一方面,本发明实施例提供一种电子设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现前述平面的重建方法中的步骤,或者,所述处理器执行所述程序时实现前述平面的融合方法中的步骤。
再一方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现前述平面的重建方法中的步骤,或者,该计算机程序被处理器执行时实现前述平面的融合方法中的步骤。
本发明实施例提供的一种平面的重建方法、融合方法、装置、设备及存储介质,其中,以重力方向作为约束条件,对所述当前帧的3D点云中包括的3D点进行聚类,得到至少一个当前帧的平面,其中,所述至少一个当前帧的平面包括水平面和/或竖直面,每个当前帧的平面包括所述多个3D点中的至少两个3D点;能够实现对竖直平面的重建。
附图说明
图1A为本发明实施例适用于平面的重建方法的架构的组成结构示意图;
图1B为本发明又一实施例适用于平面的重建方法的架构的组成结构示意图;
图2A为本发明实施例平面的重建方法的实现流程示意图;
图2B为本发明实施例平面的重建装置的组成结构示意图;
图2C为本发明实施例平面的融合装置的组成结构示意图;
图3为本发明实施例平面的重建方法的实现流程示意图;
图4A为本发明实施例平面的融合方法的实现流程示意图;
图4B为本发明又一实施例平面的融合方法的实现流程示意图;
图5A为本发明实施例多平面结构融合中第一子阶段的实现流程示意图;
图5B为本发明再一实施例平面的重建方法的实现流程示意图;
图6A为本发明又一实施例平面的重建装置的组成结构示意图;
图6B为本发明又一实施例平面的融合装置的组成结构示意图;
图7为本发明实施例中电子设备的一种硬件实体示意图。
具体实施方式
下面结合附图和实施例对本发明的技术方案进一步详细阐述。
本实施例先提供一种适用于平面的重建方法的架构,该架构包括摄像头和电子设备,摄像头与电子设备之间通过有线或无线方式连接。图1A为本发明实施例适用于平面的重建方法的架构的组成结构示意图,图1A的A图中包括摄像头11和电子设备21,摄像头11与电子设备21之间通过网络连接,摄像头11一般为固定在某处,例如固定在电线杆上或安装在大楼的某个角落。
其中,摄像头11可以为普通摄像头(不具有深度捕获功能的摄像头),由于普通摄像头采集的图像中不具有深度信息,那么电子设备21可以通过3D重建算法计算得到该采集的图像的3D点云(即计算出深度信息),然后电子设备21通过执行本实施例提供的方法实现平面的3D重建。当然该摄像头11还可以为深度摄像头(带有深度捕获功能的摄像头),那么电子设备21的输入即为带有3D点云的图像,然后电子设备21通过执行本发明实施例提供的方法实现平面的3D重建。
其中,电子设备21可以被拆分为一个或两个以上计算单元组成,每一个计算单元可以是一个计算模块(例如服务器集群中的几个核)或一个独立的电子设备,例如,电子设备21被拆分为第一电子设备和第二电子设备,其中第一电子设备用于通过3D重建算法计算得到该采集的图像的3D点云,第二电子设备用于执行本实施例提供的方法。再如,电子设备21是一个服务器集群,该服务器集群的一部分内核用于用于通过3D重建算法计算得到该采集的图像的3D点云,该服务器集群的一部分内核用于执行本实施例提供的方法。
图1A的B图中也包括摄像头12和电子设备22,摄像头12与电子设备22之间通过网络连接,与图1A中A图不同的是,摄像头12为无人机拍摄设备,因此,摄像头12具有较好的移动性;该无人机上安装的摄像头12可以如图1A中的A图中的普通摄像头也可以是深度摄像头,电子设备22的作用与电子设备21相同。
一般来说,电子设备在实施的过程中可以为各种类型的具有信息处理能力的设备,例如所述电子设备可以包括手机、平板电脑、台式机、个人数字助理、电视机、服务器集群等。
在一些实施例中,该适用平面的重建方法的架构的组成结构还可以如图1B所示,该架构为一台电子设备,与图1A不同的是,该电子设备200自身包括处理器201、摄像头202和存储器203,摄像头202采集的图像交由处理器201进行处理。如果该摄像头202为普通摄像头,那么处理器201可以通过3D重建算法计算得到该采集的图像的3D点云,然后通过执行本发明实施例提供的方法实现平面的3D重建。当然该摄像头202还可以为深度摄像头,那么计处理器201的输入即为带有3D点云的图像,然后通过执行本发明实施例提供的方法实现平面的3D重建。
存储器202配置为存储由处理器201可执行的指令和应用,还可以缓存待处理器201待处理或已经处理的数据(例如,图像数据、),该存储器可以通过闪存(FLASH)或随机访问存储器(Random Access Memory,RAM)实现。
本实施例提出一种平面的重建方法,能够解决现有方法中仅局限于重建水平面,无法重建竖直平面的问题。该方法应用于电子设备,该方法所实现的功能可以通过电子设备中的处理器调用程序代码来实现,当然程序代码可以保存在计算机存储介质中,可见,该电子设备至少包括处理器和存储介质。
图2A为本发明实施例平面的重建方法的实现流程示意图,用于重建3D结构中的平面,如图2A所示,该方法包括:
步骤S201,获取输入的当前帧的三维3D点云,所述3D点云包括多个3D点;
步骤S202,以重力方向作为约束条件,对所述当前帧的3D点云中包括的3D点进行聚类,得到至少一个当前帧的平面,其中,所述至少一个当前帧的平面包括水平面和/或竖直面,每个当前帧的平面包括所述多个3D点中的至少两个3D点。
其中,所述重力方向与所述3D点云描述同一场景。在一些实施例中,所述方法还包括:获取所述3D点云对应场景的重力方向。
其中,当前帧的平面是具有边界的平面,该具有边界的平面可以满足某种平面方程,该平面方程可以具体指无边界的平面,这里的平面和平面方程也可以采用其他名称表述,该名称不应理解为对本发明实施例的限定。
在本发明实施例中,可以以重力方向作为约束条件进行平面重建,以使得重建的平面约束为水平面或竖直面,例如,在一些实施例中,可以约束平面的法向与重力方向之间的夹角位于0到某一阈值之间,以将平面约束在水平面,或者,也可以约束平面的法向与重力方向之间的夹角位于包含90度在内的角度范围,以将平面约束在竖直面,但本发明实施例不限于此。
在一些实施例中,所述以重力方向作为约束条件,对所述当前帧的3D点云中包括的3D点进行聚类,得到至少一个当前帧的平面,包括:
步骤11,以重力方向为约束条件,基于所述当前帧的3D点云,确定平面方程PX1;
步骤12,基于所述平面方程PX1,对所述3D点云中包括的3D点进行聚类,得到所述平面方程PX1对应的至少一个平面P1,其中,所述至少一个当前帧的平面包括所述至少一个平面P1。
其中,平面P1可以为一个多边形,本发明实施例对该多边形的具体实现不作限定。
在一些实施例中,所述以重力方向为约束条件,基于所述当前帧的3D点云,确定平面方程PX1,包括:
步骤111,以所述重力方向作为约束条件,从当前待聚合的多个3D点中确定至少一个3D点集合,每个3D点集合包含当前待聚合的多个3D点中的至少两个3D点;
步骤112,从至少一个3D点集合中确定3D点数目满足预设条件的候选3D点集合R;
步骤113,基于所述候选3D点集合R,确定平面方程PX1。
在一些实施例中,所述预设条件包括:所述候选3D点集合R为所述至少一个3D点集合中包含3D点数目最多的3D点集合;和/或,所述候选3D点集合R中包含的3D点数目大于或等于预设阈值。该预设阈值可以基于需求设置,例如,该预设阈值可以为2400或其他数值,但本发明实施例对此不作限定。
在一些实施例中,所述以所述重力方向作为约束条件,从当前待聚合的多个3D点中确定至少一个3D点集合,包括:
步骤21,从所述当前待聚合的多个3D点中选取第一采样点,利用选取的第一采样点拟合平面方程PX2;
步骤22,如果所述平面方程PX2的法向方向满足以所述重力方向作为约束参数的约束条件,从所述当前待聚合的多个3D点中确定对应于所述平面方程PX2的3D点集合。
在一些实施例中,所述从所述当前待聚合的多个3D点中选取第一采样点,包括:如果采样点的当前已选取次数低于最大选取次数L,从所述当前待聚合的多个3D点中选取第一采样点,其中,所述最大选取次数L是基于前一次选取的采样点得到的3D点集合中包含的3D点数量确定的。
在一些实施例中,所述方法还包括:根据对应于所述平面方程PX2的3D点集合中包含的3D点数目,更新所述最大选取次数L。
在一些实施例中,所述从所述当前待聚合的多个3D点中选取第一采样点,包括:
步骤31,获取所述当前待聚合的多个3D点中每一3D点的法向方向;
步骤32,从所述当前待聚合的多个3D点中选取两两之间的法向方向之间的角度差小于第一角度阈值的多个3D点作为所述第一采样点。
在一些实施例中,所述如果所述平面方程PX2的法向方向满足以所述重力方向作为约束参数的约束条件,从所述当前待聚合的多个3D点中确定对应于所述平面方程PX2的3D点集合,包括:如果平面P2的法向方向和所述重力方向之间的角度差小于第二角度阈值或者在第三角度阈值区间范围内,从所述当前待聚合的多个3D点中确定对应于所述平面方程PX2的3D点集合。
在一些实施例中,所述如果所述平面方程PX2的法向方向满足以所述重力方向作为约束参数的约束条件,从所述当前待聚合的多个3D点中确定对应于所述平面方程PX2的3D点集合,包括:
如果所述平面方程PX2的法向方向满足以所述重力方向作为约束参数的约束条件,则将所述当前待聚合的多个3D点中与所述平面方程PX2之间的距离小于第一距离阈值并且法向方向与平面方程PX2的法向方向之间的角度差小于第四角度阈值的3D点确定为对应于所述平面方程PX2的3D点。
在一些实施例中,所述基于所述平面方程PX1,对所述3D点云中包括的待聚合的多个3D点进行聚类,得到所述平面方程PX1对应的至少一个平面P1,包括:
步骤41,基于所述平面方程PX1,确定对应于所述至少一个平面P1的至少一个第一连通子集合;
步骤42,基于所述至少一个平面P1中每个平面P1对应的第一连通子集合,确定所述每个平面P1的边界顶点。
在一些实施例中,所述基于所述平面方程PX1,确定对应于所述至少一个平面P1的至少一个第一连通子集合,包括:基于所述平面方程PX1和所述待聚合的多个3D点对应的二维2D图像坐标,确定所述至少一个第一连通子集合。
在一些实施例中,所述基于所述至少一个平面P1中每个平面P1对应的第一连通子集合,确定所述每个平面P1的边界顶点,包括:
步骤51,将所述平面包含的至少两个3D点垂直投影至所述平面方程PX1对应的二维2D坐标系,得到所述平面P1包含的至少两个3D点中每个3D点对应的2D坐标;
步骤52,基于所述至少两个3D点中每个3D点对应的2D坐标,确定所述平面P1的边界顶点。
在一些实施例中,所述基于所述至少两个3D点中每个3D点对应的2D坐标,确定所述平面P1的边界顶点,包括:基于所述至少两个3D顶点对应的2D坐标求解凸包多边形,得到所述平面P1的边界顶点。
在一些实施例中,所述方法还包括:从所述待聚合的多个3D点中除去与所述平面方程PX1之间的距离小于第二距离阈值的3D点,得到更新后的待聚合的多个3D点。
在一些实施例中,所述方法还包括:基于所述重力方向,确定所述当前帧的至少一个平面的属性,所述属性包括水平面或竖直面。
在一些实施例中,所述基于所述重力方向确定至少一个平面的属性,包括:
如果所述当前帧的平面的法向方向与所述重力方向之间角度差小于第二角度阈值,则确定所述当前帧的平面的属性为水平面;和/或
如果所述当前帧的平面的法向方向与所述重力方向之间角度差在第三角度阈值区间范围内,则确定所述当前帧的平面的属性为竖直面。
在一些实施例中,所述方法还包括:
对所述至少一个当前帧的平面P与已有平面列表中的平面Pr进行融合,其中,所述已有平面列表包含至少一个除所述当前帧之外的其他帧对应的平面。
在一些实施例中,所述对至少一个平面P与已有平面列表中的平面Pr进行融合包括:
步骤61,确定所述平面P与所述平面Pr的连通关系;
步骤62,根据所述连通关系,将所述平面P与所述平面Pr中相互连通的平面融合成新的平面。
在一些实施例中,所述确定所述平面P与所述平面Pr的连通关系,包括:
如果所述平面P的顶点投影与所述平面Pr相交,并且平面P的顶点至平面Pr的距离与平面Pr的顶点至平面P的距离均小于或等于第三距离阈值,确定平面P与平面Pr相连通。
在一些实施例中,所述确定所述平面P与所述平面Pr的连通关系,包括:
步骤71,利用所述平面P和所述平面Pr所包含的3D点集合,拟合平面Pn;
步骤72,如果所述平面Pn满足以重力方向作为约束参数的约束条件,确定所述平面P与所述平面Pr相连通。
在一些实施例中,所述确定所述平面P与所述平面Pr的连通关系,还包括:
如果所述平面Pn与所述平面P的属性相同,确定平面P与平面Pr相连通。
在一些实施例中,所述确定所述平面P与所述平面Pr的连通关系,还包括:
如果所述当前帧的平面P的属性与所述平面Pr的属性不相同,或者,述平面P的顶点投影与所述平面Pr不相交,或者,如果所述平面Pn的法向方向与所述重力方向之间的角度差不小于第二角度阈值或者不在第三角度阈值区间范围内,或者,所述第五平面Pn与所述平面P的属性不相同,确定平面P与平面Pr不连通。
在一些实施例中,所述利用平面P和平面Pr所包含的3D点集合,拟合平面Pn,包括:
步骤81,如果所述平面P与所述平面Pr的法向角度差在第一角度阈值以内,将所述平面P的顶点垂直投影至Pr的坐标系内,获得所述平面P的顶点对应的2D多边形;
步骤82,如果所述平面P的顶点对应的2D多边形与平面Pr的顶点对应的多边形相交,利用平面P和平面Pr所包含的内点集合,拟合平面Pn。
在一些实施例中,所述根据所述连通关系,将所述平面P与所述平面Pr中相互连通的平面融合成新的平面,包括:
步骤91,根据所述连通关系,确定所述平面P和所述平面Pr构成的第二连通子集合;
步骤92,基于所述第二连通子集合中的平面包含的3D点,拟合平面方程PX3;
步骤93,基于所述平面方程PX3,确定融合的新平面。
在一些实施例中,所述方法还包括:基于对所述平面P与所述平面Pr进行融合的结果,更新所述已有平面列表。
基于前述的方法,本实施例提出一种平面的融合方法,能够解决现有方法中仅局限于重建水平面,无法重建竖直平面的问题。该方法应用于电子设备,该方法所实现的功能可以通过电子设备中的处理器调用程序代码来实现,当然程序代码可以保存在计算机存储介质中,可见,该电子设备至少包括处理器和存储介质。
该方法还包括:
步骤S211,获取至少一个当前帧的平面P与已有平面列表中的平面P_r,其中,所述已有平面列表包含至少一个除所述当前帧之外的其他帧对应的平面;
步骤S213,确定所述平面P与所述平面P_r的连通关系;
步骤S212,根据所述连通关系,将所述平面P与所述平面P_r中相互连通的平面融合成新的平面。
基于前述的实施例,本发明实施例提供一种平面的重建装置,该装置包括所包括的各单元、以及各单元所包括的各模块,可以通过电子设备中的处理器来实现;当然也可通过具体的逻辑电路实现;在实施的过程中,处理器可以为中央处理器(CPU,CentralProcessing Unit)、微处理器(MPU,Micro Processor Uint)、数字信号处理器(DSP,Digital Signal Processing)或现场可编程门阵列(FPGA,Field Programmable GateArray)等。
图2B为本发明实施例平面的重建装置的组成结构示意图,如图2B所示,所述装置200包括第一获取部分201和聚类部分202,其中:
第一获取部分201,用于获取输入的当前帧的三维3D点云,所述3D点云包括多个3D点;
聚类部分202,用于以重力方向作为约束条件,对所述当前帧的3D点云中包括的3D点进行聚类,得到至少一个当前帧的平面,其中,所述至少一个当前帧的平面包括水平面和/或竖直面,每个当前帧的平面包括所述多个3D点中的至少两个3D点。
在一些实施例中,所述聚类部分,用于以重力方向为约束条件,基于所述当前帧的3D点云,确定平面方程PX1;
基于所述平面方程PX1,对所述3D点云中包括的3D点进行聚类,得到所述平面方程PX1对应的至少一个平面P1,其中,所述至少一个当前帧的平面包括所述至少一个平面P1。
在一些实施例中,所述聚类部分以重力方向为约束条件,基于所述当前帧的3D点云,确定平面方程PX1,包括:
以所述重力方向作为约束条件,所述聚类部分从当前待聚合的多个3D点中确定至少一个3D点集合,每个3D点集合包含当前待聚合的多个3D点中的至少两个3D点;
从至少一个3D点集合中确定3D点数目满足预设条件的候选3D点集合R;
基于所述候选3D点集合R,确定平面方程PX1。
在一些实施例中,所述预设条件包括:
所述候选3D点集合R为所述至少一个3D点集合中包含3D点数目最多的3D点集合;和/或,
所述候选3D点集合R中包含的3D点数目大于或等于预设阈值。
在一些实施例中,所述聚类部分以所述重力方向作为约束条件,从当前待聚合的多个3D点中确定至少一个3D点集合,包括:
所述聚类部分从所述当前待聚合的多个3D点中选取第一采样点,利用选取的第一采样点拟合平面方程PX2;
如果所述平面方程PX2的法向方向满足以所述重力方向作为约束参数的约束条件,所述聚类部分从所述当前待聚合的多个3D点中确定对应于所述平面方程PX2的3D点集合。
在一些实施例中,所述聚类部分从所述当前待聚合的多个3D点中选取第一采样点,包括:
如果采样点的当前已选取次数低于最大选取次数L,所述聚类部分从所述当前待聚合的多个3D点中选取第一采样点,其中,所述最大选取次数L是基于前一次选取的采样点得到的3D点集合中包含的3D点数量确定的。
在一些实施例中,所述聚类部分,还用于根据对应于所述平面方程PX2的3D点集合中包含的3D点数目,更新所述最大选取次数L。
在一些实施例中,所述聚类部分从所述当前待聚合的多个3D点中选取第一采样点,包括:
所述聚类部分获取所述当前待聚合的多个3D点中每一3D点的法向方向;
所述聚类部分从所述当前待聚合的多个3D点中选取两两之间的法向方向之间的角度差小于第一角度阈值的多个3D点作为所述第一采样点。
在一些实施例中,所述聚类部分如果所述平面方程PX2的法向方向满足以所述重力方向作为约束参数的约束条件,从所述当前待聚合的多个3D点中确定对应于所述平面方程PX2的3D点集合,包括:
所述聚类部分如果平面P2的法向方向和所述重力方向之间的角度差小于第二角度阈值或者在第三角度阈值区间范围内,从所述当前待聚合的多个3D点中确定对应于所述平面方程PX2的3D点集合。
在一些实施例中,所述聚类部分如果所述平面方程PX2的法向方向满足以所述重力方向作为约束参数的约束条件,从所述当前待聚合的多个3D点中确定对应于所述平面方程PX2的3D点集合,包括:
如果所述平面方程PX2的法向方向满足以所述重力方向作为约束参数的约束条件,则所述聚类部分将所述当前待聚合的多个3D点中与所述平面方程PX2之间的距离小于第一距离阈值并且法向方向与平面方程PX2的法向方向之间的角度差小于第四角度阈值的3D点确定为对应于所述平面方程PX2的3D点。
在一些实施例中,所述聚类部分基于所述平面方程PX1,对所述3D点云中包括的待聚合的多个3D点进行聚类,得到所述平面方程PX1对应的至少一个平面P1,包括:
所述聚类部分基于所述平面方程PX1,确定对应于所述至少一个平面P1的至少一个第一连通子集合;
所述聚类部分基于所述至少一个平面P1中每个平面P1对应的第一连通子集合,确定所述每个平面P1的边界顶点。
在一些实施例中,所述聚类部分基于所述平面方程PX1,确定对应于所述至少一个平面P1的至少一个第一连通子集合,包括:
所述聚类部分基于所述平面方程PX1和所述待聚合的多个3D点对应的二维2D图像坐标,确定所述至少一个第一连通子集合。
在一些实施例中,所述聚类部分基于所述至少一个平面P1中每个平面P1对应的第一连通子集合,确定所述每个平面P1的边界顶点,包括:
所述聚类部分将所述平面包含的至少两个3D点垂直投影至所述平面方程PX1对应的二维2D坐标系,得到所述平面P1包含的至少两个3D点中每个3D点对应的2D坐标;
所述聚类部分基于所述至少两个3D点中每个3D点对应的2D坐标,确定所述平面P1的边界顶点。
在一些实施例中,所述聚类部分基于所述至少两个3D点中每个3D点对应的2D坐标,确定所述平面P1的边界顶点,包括:
所述聚类部分基于所述至少两个3D顶点对应的2D坐标求解凸包多边形,得到所述平面P1的边界顶点。
在一些实施例中,所述聚类部分用于从所述待聚合的多个3D点中除去与所述平面方程PX1之间的距离小于第二距离阈值的3D点,得到更新后的待聚合的多个3D点。
在一些实施例中,所述聚类部分,还用于基于所述重力方向,确定所述当前帧的至少一个平面的属性,所述属性包括水平面或竖直面。
在一些实施例中,所述聚类部分基于所述重力方向确定至少一个平面的属性,包括:
如果所述当前帧的平面的法向方向与所述重力方向之间角度差小于第二角度阈值,则所述聚类部分确定所述当前帧的平面的属性为水平面;和/或
如果所述当前帧的平面的法向方向与所述重力方向之间角度差在第三角度阈值区间范围内,则所述聚类部分确定所述当前帧的平面的属性为竖直面。
在一些实施例中,所述装置还包括融合部分,用于对所述至少一个当前帧的平面P与已有平面列表中的平面Pr进行融合,其中,所述已有平面列表包含至少一个除所述当前帧之外的其他帧对应的平面。
在一些实施例中,所述融合部分对至少一个平面P与已有平面列表中的平面Pr进行融合包括:
所述聚类部分确定所述平面P与所述平面Pr的连通关系;
所述聚类部分根据所述连通关系,将所述平面P与所述平面Pr中相互连通的平面融合成新的平面。
在一些实施例中,所述融合部分确定所述平面P与所述平面Pr的连通关系,包括:
如果所述平面P的顶点投影与所述平面Pr相交,并且平面P的顶点至平面Pr的距离与平面Pr的顶点至平面P的距离均小于或等于第三距离阈值,所述聚类部分确定平面P与平面Pr相连通。
在一些实施例中,所述融合部分确定所述平面P与所述平面Pr的连通关系,包括:
所述聚类部分利用所述平面P和所述平面Pr所包含的3D点集合,拟合平面Pn;
如果所述平面Pn满足以重力方向作为约束参数的约束条件,所述聚类部分确定所述平面P与所述平面Pr相连通。
在一些实施例中,所述融合部分确定所述平面P与所述平面Pr的连通关系,还包括:
所述融合部分如果所述平面Pn与所述平面P的属性相同,确定平面P与平面Pr相连通。
在一些实施例中,所述融合部分确定所述平面P与所述平面Pr的连通关系,还包括:
如果所述当前帧的平面P的属性与所述平面Pr的属性不相同,或者,述平面P的顶点投影与所述平面Pr不相交,或者,如果所述平面Pn的法向方向与所述重力方向之间的角度差不小于第二角度阈值或者不在第三角度阈值区间范围内,或者,所述第五平面Pn与所述平面P的属性不相同,确定平面P与平面Pr不连通。
在一些实施例中,所述融合部分利用平面P和平面Pr所包含的3D点集合,拟合平面Pn,包括:
如果所述平面P与所述平面Pr的法向角度差在第一角度阈值以内,所述融合部分将所述平面P的顶点垂直投影至Pr的坐标系内,获得所述平面P的顶点对应的2D多边形;
如果所述平面P的顶点对应的2D多边形与平面Pr的顶点对应的多边形相交,利用平面P和平面Pr所包含的内点集合,拟合平面Pn。
在一些实施例中,所述融合部分根据所述连通关系,将所述平面P与所述平面Pr中相互连通的平面融合成新的平面,包括:
所述融合部分根据所述连通关系,确定所述平面P和所述平面Pr构成的第二连通子集合;
所述融合部分基于所述第二连通子集合中的平面包含的3D点,拟合平面方程PX3;
所述融合部分基于所述平面方程PX3,确定融合的新平面。
在一些实施例中,所述融合部分,用于基于对所述平面P与所述平面Pr进行融合的结果,更新所述已有平面列表。
在一些实施例中,装置200可以用于执行上述实施例中所描述的平面的重建方法,当然可以包括用于执行上述实施例所描述的平面的重建方法中的任意流程和/或步骤的部分或子部分,为了简洁,不再赘述。
基于前述的实施例,本发明实施例提供一种平面的融合装置,该装置包括所包括的各部分,可以通过电子设备中的处理器来实现;当然也可通过具体的逻辑电路实现。图2C为本发明实施例平面的融合装置的组成结构示意图,如图2B所示,所述装置210包括第二获取部分211、确定部分212和第一获取部分213,其中:
第二获取部分211,用于获取至少一个当前帧的平面P与已有平面列表中的平面Pr,其中,所述已有平面列表包含至少一个除所述当前帧之外的其他帧对应的平面;
确定部分212,用于确定所述平面P与所述平面Pr的连通关系;
融合部分213,用于根据所述连通关系,将所述平面P与所述平面Pr中相互连通的平面融合成新的平面。
在一些实施例中,所述确定部分确定所述平面P与所述平面Pr的连通关系,包括:
如果所述平面P的顶点投影与所述平面Pr相交,并且平面P的顶点至平面Pr的距离与平面Pr的顶点至平面P的距离均小于或等于第三距离阈值,所述确定部分确定平面P与平面Pr相连通。
在一些实施例中,所述确定部分确定所述平面P与所述平面Pr的连通关系,包括:
所述确定部分利用所述平面P和所述平面Pr所包含的3D点集合,拟合平面Pn;
如果所述平面Pn满足以重力方向作为约束参数的约束条件,所述确定部分确定所述平面P与所述平面Pr相连通。
在一些实施例中,所述确定部分确定所述平面P与所述平面Pr的连通关系,还包括:
如果所述平面Pn与所述平面P的属性相同,所述确定部分确定平面P与平面Pr相连通。
在一些实施例中,所述确定部分确定所述平面P与所述平面Pr的连通关系,还包括:
如果所述当前帧的平面P的属性与所述平面Pr的属性不相同,或者,述平面P的顶点投影与所述平面Pr不相交,或者,如果所述平面Pn的法向方向与所述重力方向之间的角度差不小于第二角度阈值或者不在第三角度阈值区间范围内,或者,所述第五平面Pn与所述平面P的属性不相同,所述确定部分确定平面P与平面Pr不连通。
在一些实施例中,所述确定部分利用平面P和平面Pr所包含的3D点集合,拟合平面Pn,包括:
如果所述平面P与所述平面Pr的法向角度差在第一角度阈值以内,所述确定部分将所述平面P的顶点垂直投影至Pr的坐标系内,获得所述平面P的顶点对应的2D多边形;
如果所述平面P的顶点对应的2D多边形与平面Pr的顶点对应的多边形相交,所述确定部分利用平面P和平面Pr所包含的内点集合,拟合平面Pn。
在一些实施例中,所述融合部分,用于:
根据所述连通关系,确定所述平面P和所述平面Pr构成的第二连通子集合;
基于所述第二连通子集合中的平面包含的3D点,拟合平面方程PX3;
基于所述平面方程PX3,确定融合的新平面。
在一些实施例中,所述融合部分,用于基于对所述平面P与所述平面Pr进行融合的结果,更新所述已有平面列表。
在一些实施例中,所述装置包括:
第一获取部分,用于获取输入的当前帧的三维3D点云,所述3D点云包括多个3D点;
聚类部分,用于以重力方向作为约束条件,对所述当前帧的3D点云中包括的3D点进行聚类,得到至少一个当前帧的平面P,其中,所述至少一个当前帧的平面包括水平面和/或竖直面,每个当前帧的平面包括所述多个3D点中的至少两个3D点。
在一些实施例中,所述聚类部分,用于以重力方向为约束条件,基于所述当前帧的3D点云,确定平面方程PX1;
基于所述平面方程PX1,对所述3D点云中包括的3D点进行聚类,得到所述平面方程PX1对应的至少一个平面P1,其中,所述至少一个当前帧的平面包括所述至少一个平面P1。
在一些实施例中,所述聚类部分以重力方向为约束条件,基于所述当前帧的3D点云,确定平面方程PX1,包括:
所述聚类部分以所述重力方向作为约束条件,从当前待聚合的多个3D点中确定至少一个3D点集合,每个3D点集合包含当前待聚合的多个3D点中的至少两个3D点;
所述聚类部分从至少一个3D点集合中确定3D点数目满足预设条件的候选3D点集合R;
所述聚类部分基于所述候选3D点集合R,确定平面方程PX1。
在一些实施例中,所述预设条件包括:
所述候选3D点集合R为所述至少一个3D点集合中包含3D点数目最多的3D点集合;和/或,
所述候选3D点集合R中包含的3D点数目大于或等于预设阈值。
在一些实施例中,所述聚类部分以所述重力方向作为约束条件,从当前待聚合的多个3D点中确定至少一个3D点集合,包括:
所述聚类部分从所述当前待聚合的多个3D点中选取第一采样点,利用选取的第一采样点拟合平面方程PX2;
如果所述平面方程PX2的法向方向满足以所述重力方向作为约束参数的约束条件,所述聚类部分从所述当前待聚合的多个3D点中确定对应于所述平面方程PX2的3D点集合。
在一些实施例中,所述聚类部分从所述当前待聚合的多个3D点中选取第一采样点,包括:
如果采样点的当前已选取次数低于最大选取次数L,所述聚类部分从所述当前待聚合的多个3D点中选取第一采样点,其中,所述最大选取次数L是基于前一次选取的采样点得到的3D点集合中包含的3D点数量确定的。
在一些实施例中,所述聚类部分,还用于根据对应于所述平面方程PX2的3D点集合中包含的3D点数目,更新所述最大选取次数L。
在一些实施例中,所述聚类部分从所述当前待聚合的多个3D点中选取第一采样点,包括:
所述聚类部分获取所述当前待聚合的多个3D点中每一3D点的法向方向;
所述聚类部分从所述当前待聚合的多个3D点中选取两两之间的法向方向之间的角度差小于第一角度阈值的多个3D点作为所述第一采样点。
在一些实施例中,所述聚类部分如果所述平面方程PX2的法向方向满足以所述重力方向作为约束参数的约束条件,从所述当前待聚合的多个3D点中确定对应于所述平面方程PX2的3D点集合,包括:
所述聚类部分如果平面P2的法向方向和所述重力方向之间的角度差小于第二角度阈值或者在第三角度阈值区间范围内,从所述当前待聚合的多个3D点中确定对应于所述平面方程PX2的3D点集合。
在一些实施例中,所述聚类部分如果所述平面方程PX2的法向方向满足以所述重力方向作为约束参数的约束条件,从所述当前待聚合的多个3D点中确定对应于所述平面方程PX2的3D点集合,包括:
如果所述平面方程PX2的法向方向满足以所述重力方向作为约束参数的约束条件,则所述聚类部分将所述当前待聚合的多个3D点中与所述平面方程PX2之间的距离小于第一距离阈值并且法向方向与平面方程PX2的法向方向之间的角度差小于第四角度阈值的3D点确定为对应于所述平面方程PX2的3D点。
在一些实施例中,所述聚类部分基于所述平面方程PX1,对所述3D点云中包括的待聚合的多个3D点进行聚类,得到所述平面方程PX1对应的至少一个平面P1,包括:
基于所述平面方程PX1,所述聚类部分确定对应于所述至少一个平面P1的至少一个第一连通子集合;
所述聚类部分基于所述至少一个平面P1中每个平面P1对应的第一连通子集合,确定所述每个平面P1的边界顶点。
在一些实施例中,所述聚类部分基于所述平面方程PX1,确定对应于所述至少一个平面P1的至少一个第一连通子集合,包括:
所述聚类部分基于所述平面方程PX1和所述待聚合的多个3D点对应的二维2D图像坐标,确定所述至少一个第一连通子集合。
在一些实施例中,所述聚类部分基于所述至少一个平面P1中每个平面P1对应的第一连通子集合,确定所述每个平面P1的边界顶点,包括:
所述聚类部分将所述平面包含的至少两个3D点垂直投影至所述平面方程PX1对应的二维2D坐标系,得到所述平面P1包含的至少两个3D点中每个3D点对应的2D坐标;
所述聚类部分基于所述至少两个3D点中每个3D点对应的2D坐标,确定所述平面P1的边界顶点。
在一些实施例中,所述聚类部分基于所述至少两个3D点中每个3D点对应的2D坐标,确定所述平面P1的边界顶点,包括:
所述聚类部分基于所述至少两个3D顶点对应的2D坐标求解凸包多边形,得到所述平面P1的边界顶点。
在一些实施例中,所述聚类部分,用于从所述待聚合的多个3D点中除去与所述平面方程PX1之间的距离小于第二距离阈值的3D点,得到更新后的待聚合的多个3D点。
在一些实施例中,所述聚类部分,还用于基于所述重力方向,确定所述当前帧的至少一个平面的属性,所述属性包括水平面或竖直面。
在一些实施例中,所述聚类部分,还用于:
如果所述当前帧的平面的法向方向与所述重力方向之间角度差小于第二角度阈值,则确定所述当前帧的平面的属性为水平面;和/或
如果所述当前帧的平面的法向方向与所述重力方向之间角度差在第三角度阈值区间范围内,则确定所述当前帧的平面的属性为竖直面。
在一些实施例中,装置210可以用于执行上述实施例中所描述的平面的融合方法,当然可以包括用于执行上述实施例所描述的平面的融合方法中的任意流程和/或步骤的部分或子部分,为了简洁,不再赘述。
本实施例提出一种平面的重建方法,能够解决现有方法中仅局限于重建水平面,无法重建竖直平面的问题。该方法应用于电子设备,该方法所实现的功能可以通过电子设备中的处理器调用程序代码来实现,当然程序代码可以保存在计算机存储介质中,可见,该电子设备至少包括处理器和存储介质。
图3为本发明实施例平面的重建方法的实现流程示意图,如图3所示,该方法包括:
步骤S301,获取输入的当前帧的3D点云;
本实施例的方法可以应用于具有信息处理能力的电子设备。当前帧是指当前的图像帧,即该方法的输入是图像帧的3D点云,3D点云可以有多种表达形式,例如常用的可以是采用在XYZ坐标系下表示的水平坐标点、垂直坐标点和深度坐标点来表示。一般的普通摄像头可以采集2D的图像,经过3D重建算法的处理可以得到深度信息,即形成该2D图像对应的3D点云。如果采用深度摄像头,例如kinect摄像头,则采集的图像即有3D点云,则不需要再进行3D重建算法的处理。
步骤S302,对所述当前帧的3D点云进行聚类时,以获取的重力方向作为约束条件,以使聚类的点云约束在水平面或竖直面内;其中,所述重力方向与所述当前帧的3D点云描述同一场景。
即重力方向是与当前的图像是在同一场景下采集的,因此所述重力方向与所述当前帧的图像或所述当前帧的3D点云描述同一场景。例如在图1A或图1B所示的架构中,当前帧的图像利用摄像头来采集,而重力方向利用重力传感器来采集,则当前的图像与重力方向是在同一场景下采集的;如果摄像头为深度摄像头,则重力方向与所述当前帧的3D点云描述同一场景;如果摄像头为普通摄像头,则重力方向与当前的2D图像描述同一场景,对当前的2D图像进行3D重建,则重建之后得到的3D点云与重力方向也是描述同一场景。
在一些实施例中,步骤S302,所述对所述当前帧的3D点云进行聚类时,以获取的重力方向作为约束条件,以使聚类的点云约束在水平面或竖直面内,包括:
步骤S11,从所述当前帧的3D点云中选取采样点,利用选取的采样点拟合第一平面;
在一些实施例中,从所述当前帧的3D点云中选取采样点,利用选取的采样点拟合第一平面,包括:获取所述当前帧上每一3D点的法向方向;从所述当前帧的3D点云中选取两两之间的法向方向之间的角度差小于第一角度阈值的多个采样点,利用选取的多个采样点拟合第一平面。其中,对选取的多个采样点拟合,会得到平面方程PX2,平面方程PX2对应的数学平面即为上述的第一平面。
其中,多个采样点至少包括3个采样点,当然在某些情况下也可以为4个采样点。为了保证计算的效率,在实施的过程中,采用3个采样点来拟合平面方程,即从当前帧的3D点云中随机选取两两之间的法向方向之间的角度差小于第一角度阈值(例如20°)的3个采样点,利用选取的3个采样点拟合平面方程,得到第一平面。
步骤S12,如果所述第一平面的法向方向满足以所述重力方向作为约束参数的约束条件,确定所述第一平面的内点集合;
在一些实施例中,所述如果所述第一平面的法向方向满足以所述重力方向作为约束参数的约束条件,确定所述第一平面的内点集合,包括:如果第一平面的法向方向和所述重力方向之间的角度差小于第二角度阈值或者在第三角度阈值区间范围内,则找出与所述第一平面距离小于距离阈值并且法向方向与平面法向方向之间的角度差小于第四角度阈值的内点集合。
其中,第二角度阈值可以为10度,第三角度阈值区间范围可以为80°~100°区间,距离阈值可以为(dmax-dmin)*0.2,第四角度阈值可以为30°,则如果拟合的第一平面法向方向和重力方向之间的角度差小于10°(水平面情况)或者在80°~100°区间范围内(竖直面情况),则找出所有与第一平面(或第一平面对应的平面方程)距离小于距离阈值(dmax-dmin)*0.2并且法向方向与平面法向方向之间的角度差小于30°的3D点(即内点)集合。
步骤S13,按照确定的最大循环次数L,从每次循环得到的内点集合中确定点数目满足条件的候选3D点集合R(即候选的内点集合R);
在一些实施例中,该方法还包括:根据所述当前帧的3D点云数目确定最大循环次数L。在实施的过程中,如果是对当前帧首次执行本方法,即还没有平面从当前帧的3D点云中被提取出,那么则初始化L,即将当前帧的3D点云的总数目N确定为当前帧的3D点云数目,然后根据当前帧的3D点云的总数目N确定初始的最大循环次数L;如果已经对当前帧执行过一次本方法,即已经从当前帧中提取过一个或多个平面,那么当前帧的3D点云数目即为当前帧中的剩余3D点云数目M,根据当前帧中的剩余点云数目M确定最大循环次数L。需要说明的是,上面提供的是一种更新最大循环次数L的方法,在有些实施例中,可以确定一个L之后,并不更新L,始终用一个确定的L值来执行循环,也是可行的,但是从计算效率上讲,却不是最优的。本实施例中,会根据计算情况实时地调整L,例如初始的L是根据当前帧的3D点云的总数目N,而提取过平面之后,根据当前帧中的剩余点云数目更新L;实时调整L能够在保证计算准确性的前提下提高计算效率。
步骤S14,如果R为非空集合,利用R包含的3D点重新拟合第二平面;
步骤S15,利用所述第二平面对所述R包含的3D点进行聚类时,以所述重力方向作为约束条件,以使聚类的点云约束在水平面或竖直面内。
在一些实施例中,步骤S15,所述利用所述第二平面对所述R包含的3D点进行聚类时,以所述重力方向作为约束条件,以使聚类的点云约束在水平面或竖直面内,包括:
步骤S151,以每个R包含的3D点云对应的2D坐标点与预设的连通窗口内的坐标点为连通关系查找第一连通子集合;
其中,确定R包含的所有3D点对应的2D坐标点,然后以每个2D坐标点与连通窗口例如27×27窗口内的坐标点为连通关系查找第一连通子集合。在实施的过程中,输入的当前帧包括3D点云和对应的2D坐标点,即对于当前帧,3D点云与2D坐标点之间具有对应关系。当确定出R包含的所有3D点,则根据输入的当前帧中3D点云与2D坐标点之间的对应关系,则可以对应地确定出3D点云对应的2D坐标点。
步骤S152,提取每个第一连通子集合所对应的3D点云集合,将对应的3D点云集合垂直投影至第二平面所在的2D坐标系内获得对应的第一平面坐标集合,利用第一平面坐标集合求解凸包多边形,利用凸包多边形的2D顶点所对应的3D顶点作为当前帧的平面之一加入所述当前帧的平面列表中。
在一些实施例中,步骤S15还包括:步骤S153,如果所述当前帧的平面的法向方向与所述重力方向之间角度差小于第二角度阈值,则记录所述当前帧的平面的属性为水平面,如果所述当前帧的平面的法向方向与所述重力方向之间角度差在第三角度阈值区间范围内,则记录所述当前帧的平面的属性为竖直面。
在一些实施例中,所述方法还包括:根据所述候选3D点集合R的点数目更新最大循环次数L;从当前帧的3D点云中除去与所述当前帧的平面距离小于距离阈值的3D点,得到当前帧的剩余3D点云;根据所述当前帧的剩余3D点的数目更新最大循环次数L,然后对于当前帧的剩余3D点云重复执行上述的过程,直到获得的候选3D点集合R为空则终止。这样,就可以提取出当前帧的所有平面。
在一些实施例中,所述方法还包括:
步骤S21,从当前帧的3D点云中除去与所述当前帧的平面距离小于距离阈值的3D点,得到当前帧的剩余3D点云,将所述当前帧的剩余3D点云的数目记为M;
步骤S22,根据所述当前帧的剩余3D点云的数目M更新最大循环次数L;
步骤S23,从所述当前帧的剩余3D点云中选取采样点,利用选取的采样点拟合第三平面;
步骤S24,如果所述第三平面的法向方向满足以所述重力方向作为约束参数的约束条件,确定所述第三平面的内点集合;
步骤S25,按照更新的最大循环次数L,从每次循环得到的内点集合中确定点数目满足条件的候选3D点集合R(该过程是一个更新候选3D点集合R的过程),直到循环次数超过L则终止循环;
其中,从每次循环得到的内点集合中确定点数目满足条件的候选3D点集合R,包括:将每次循环得到的内点集合内的点数目记为M,将点数目最多且大于预设阈值的内点集合确定为候选3D点集合R。
步骤S26,如果R为非空集合,利用R包含的3D点重新拟合第四平面;
其中,获取所述R包含的3D点每一3D点的法向方向;从所述R包含的3D点中选取两两之间的法向方向之间的角度差小于第一角度阈值(例如20°)的多个采样点,利用选取的多个采样点拟合第四平面方程,得到拟合的第四平面。
步骤S27,利用所述第四平面对所述R包含的3D点进行聚类时,以所述重力方向作为约束条件,以使聚类的点云约束在水平面或竖直面内。
从以上的实施例可以看出,本发明实施例提出的平面的重建方法,是一种基于随机抽样一致性(RANSAC,Random Sample Consensus)的3D点云聚类方法,RANSAC采样点选择利用了重力方向作为约束,保证每次聚类的点云严格在水平面或竖直面内;因此,本实施例提供的方法能够实时重建单目视频中场景的多平面结构,包括水平面和竖直面。而现有的方法主要利用高度投票的方法聚类点云,因此只适用于水平面的提取,无法提取竖直面。
在实施的过程中,本申请的发明人还发现:移动平台上的实时多平面重建要求多平面重建方法具有建增式的重建模式,即随着视频视野范围的扩大,已有平面的边界会实时扩展,进入视野的新平面会被添加;移动平台的计算单元限制对实时性、低功耗的要求也会增加多平面重建的难度。为此,本发明实施例再提供一种平面的重建方法,能够实现渐增式的平面重建,平面的边界随着视频视野范围的扩大而实时扩展。
图4A为本发明实施例平面的融合方法的实现流程示意图,如图4A所示,该方法包括:
步骤S401,获取当前帧的平面和已有的平面;
步骤S402,确定所述当前帧的平面与所述已有的平面的连通关系;
其中,所述确定所述当前帧的平面与已有的平面的连通关系,包括:根据平面的属性和所述重力方向确定所述当前帧的平面与已有的平面的连通关系。
步骤S403,根据所述连通关系将相互连通的平面融合成新的平面。
图4B为本发明又一实施例平面的融合方法的实现流程示意图,如图4B所示,该方法包括:
步骤S411,获取输入的当前帧的3D点云;
步骤S412,对所述当前帧的3D点云进行聚类时,以获取的重力方向作为约束条件,以使聚类的点云约束在水平面或竖直面内;
其中,所述重力方向与所述3D点云描述同一场景,经过步骤S412之后,即可提取出当前帧的平面。
其中,该方法还包括:如果聚类的当前帧的平面的法向方向与所述重力方向之间角度差小于第二角度阈值,则记录所述当前帧的平面的属性为水平面,如果所述当前帧的平面的法向方向与所述重力方向之间角度差在第三角度阈值区间范围内,则记录所述当前帧的平面的属性为竖直面;
步骤S43,确定所述当前帧的平面与已有的平面的连通关系;
在一些实施例中,根据平面的属性和所述重力方向确定所述当前帧的平面与已有的平面的连通关系。
在融合的时候,可以将当前帧的平面列表中的每一个平面都与已有的平面进行融合。通过本实施例提供的方法不会出现同一帧之内的平面进行融合(因为融合条件与提取平面的条件是相同的),所以,融合往往是当前帧的平面与已经提取的其他帧的平面进行融合,其中已有的平面可以其自身就是一个融合平面,或者可以是之前没有被融合过的平面,例如,假设第一帧提取出三个平面,由于第一帧的这三个平面自身不需要融合,因此将第一帧的三个平面加入到已有的平面列表中;然后对第二帧进行提取,从第二针提取出两个平面,即第二帧的两个平面作为当前帧的平面与已有的平面(即第一帧的三个平面)进行融合。
步骤S414,根据连通关系将相互连通的平面融合成新的平面。
在一些实施例中,所述根据平面的属性和所述重力方向确定所述当前帧的平面与已有的平面的连通关系,包括:
步骤S31,如果所述当前帧的平面P的属性与所述已有的平面Pr的属性相同,且所述平面P的顶点投影与所述平面Pr相交,利用平面P和平面Pr所包含的内点集合重新拟合第五平面Pn;
步骤S32,如果所述第五平面Pn的法向方向与所述重力方向之间的角度差小于第二角度阈值或者在第三角度阈值区间范围内,且所述第五平面Pn与所述平面P的属性相同,确定平面P与平面Pr相连通。
其中,拟合的第五平面Pn的法向方向与重力方向之间的角度差是否小于第二角度阈值(例如10度)或者在第三角度阈值区间范围内(例如大于80度且小于100度),如果是,则判断平面Pn与所述平面P的属性相同,如果相同,则确定平面P与平面Pr相连通。
步骤S33,如果所述当前帧的平面P的属性与所述已有的平面Pr的属性不相同,或者,述平面P的顶点投影与所述平面Pr不相交,或者,如果所述第五平面Pn的法向方向与所述重力方向之间的角度差不小于第二角度阈值或者不在第三角度阈值区间范围内,或者,所述第五平面Pn与所述平面P的属性不相同,确定平面P与平面Pr不连通。
在一些实施例中,所述根据平面的属性和所述重力方向确定所述当前帧的平面与已有的平面的连通关系,还包括:
如果所述第五平面Pn与所述平面P的属性相同,判断平面P的顶点至平面Pr的距离以及平面Pr的顶点至P的距离是否都小于距离阈值,如果是,确定平面P与平面Pr相连通。
在一些实施例中,所述根据平面的属性和所述重力方向确定所述当前帧的平面与已有的平面的连通关系,还包括:
如果所述平面P的属性与所述平面Pr的属性相同,则比较两者的法向,如果法向角度差在第一角度阈值以内,则将所述平面P的顶点垂直投影至Pr的坐标系内获得对应的平面坐标组成的多边形,如果组成的多边形与平面Pr的顶点坐标组成的多边形相交,利用平面P和平面Pr所包含的内点集合重新拟合第五平面Pn。
在一些实施例中,所述根据连通关系将相互连通的平面融合成新的平面,包括:
步骤S41,根据连通关系确定所述平面P与所述平面Pr的第二连通子集合;
步骤S42,对于每个第二连通子集合中的平面,利用每个第二连通子集合中的平面所包含的所有3D内点重新拟合作为第五平面,并去除与所述第五平面距离超过距离阈值的内点,剩余的内点垂直投影至所述第五平面所在的2D坐标系内获得对应的平面坐标;
其中,对每个第二连通子集合中的平面所包含的所有3D内点重新拟合,得到平面方程PX3,平面方程PX3对应的数学意义上的平面即为第五平面。
步骤S43,利用平面坐标求解凸包多边形,利用多边形2D顶点所对应的3D顶点作为当前帧的新的平面加入已有的平面列表中。
本发明实施例中,通过当前帧的多平面与已有的平面列表中已有的平面融合的方法实现多平面边界的实时扩展。现有的方法主要解决单帧点云的多平面提取问题,多帧的平面重建是通过对多帧点云数据的合并处理来实现,随着视频视野范围的不断扩大,时间开销会上涨,不利于保证实时性。
本发明实施例提供一种平面的重建方法,该方法中,1)对视频中场景的平面结构进行实时重建,以重力方向为依据从3D点云中提取出水平面和竖直面的3D结构,其中3D结构包括位置和边界。其中,输入的视频中每帧图像包含像素对应的3D点云,其中,3D点云的获取可以通过带深度捕获功能的摄像头,也可以通过3D重建算法计算得到的。2)通过1)中的方法能够实现渐增式的平面重建,平面的边界随着视频视野范围的扩大而实时扩展。即,迭代使用1)中的步骤对视频的当前帧提取3D平面,并将当前帧的3D平面和已重建出的3D平面进行融合,这样就能实现渐增式的3D平面边界扩展,同时避免出现重复的平面。
需要说明的是,平面方程和边界组成了平面的3D结构的主要组成部分,平面方程可以用于确定位置,边界代表平面的顶点。每个平面的3D结构除了平面方程和边界之外,还包括平面属性和内点集合,其中,平面属性和内点集合用于后续融合使用,而内点集合是不需要输出给用户的,只是便于计算而维护的中间过程数据。
该方法包括两个技术阶段,第一阶段为单帧多平面结构提取,第二阶段为多平面结构融合,其中
第一阶段,单帧多平面结构提取,该过程是利用RANSAC算法,对当前帧的3D点云进行聚类,以重力方向作为约束,从而保证每次聚类的点云严格在水平面或竖直面内。下面以输入的图像的大小为640*360为例进行说明。
该第一阶段包括以下步骤:
步骤S501,初始化最大循环次数L;
其中,最大循环次数L实际上为一个循环次数的阈值,一般根据公式(1)确定初始的最大循环次数L;
在实施的过程中,如果当前帧为深度摄像机所采集的图像,并且没有对该采集的图像进行像素数目上的编辑,那么N为所采集的图像的像素数目S;如果对采集的图像进行了像素数目上的编辑,例如采集的图像的像素数目为S1,删除了一部分像素点,得到删除后的图像的像素数目为S2,则计算最大循环次数L的公式中N=S2。如果3D点云是通过计算得到的,那么计算得到点云数目与计算3D点云时输入的图像的像素数目S3、所选择的算法有关,等等,本发明实施例对N的具体实现不作限定。
应当理解,公式(1-1)仅为一个示例,在实施的过程中,本领域普通技术人员可以根据实际需要对公式(1-1)进行各种变形或替换。在一些实施例中,A的取值可以为2400。在另一些实施例中,A的取值可以变更大一些或者小一些,例如,可以将A的取值设置为3000,也可以设置为2000。A的取值决定了场景中所显示的细节程度,具体地,如果A变大,则该方法输出的平面的数量将会变小,而如果A变小,则该方法输出的平面的数量将会变多。例如,一个场景为一个房间中有墙面、地面,地上有桌子和书架,桌子上有纸巾盒,纸巾盒上有平面镜子。如果取值为3000时,那么提取的平面中可能只有“房间中的墙面、地面,地上的桌子和书架”;如果取值为2400时,那么提取的平面中可能只有“房间中的墙面、地面,地上的桌子和书架,桌子上的纸巾盒”;如果取值为2000时,那么提取的平面中可能只有“房间中的墙面、地面,地上的桌子和书架,桌子上的纸巾盒、纸巾盒上的平面镜子”。在实际应用中,A的取值可以根据实际需要设置,本发明实施例对此不做限定。
此外,A的取值依赖于输入的图像大小,例如,如果输入的图像大小为Wt*Ht,则公式(1-1)可以具体为公式(1-2),
公式(1-2)中,Wt表示输入图像的宽度,Ht表示输入图像的高度,Wt和Ht的单位可以用像素来表示。
步骤S502,从3D点云中随机选取两两之间的法向方向之间的角度差小于第一角度阈值(例如20°)的3个采样点,并利用这3个采样点拟合平面方程,得到第一平面;
其中,第一角度阈值与所应用的场景有关,在某种程度上,与提取多平面允许的误差大小有关。在一些实施例中,可以将其设置为20°。在有些场景下,可以允许的误差范围比较大,那么也可以设置为30度(30°);而且有些场景下,能够允许的误差范围比较小,那么也可以将第一阈值设置为15度(15°)。本领域的技术人员应当理解,第一角度阈值可以根据具体的应用场景而进行相应设置,本发明实施例对其取值不作限定。
其中,步骤S502中的“两两之间的法向方向之间的角度差”是指多个3D点中的两两之间的法向方向之间的角度差。本实施例的输入的图像包括以下内容:3D点云、法向方向和2D图像,即对于输入图像的一个像素点来说,该像素点包括3D坐标、2D坐标和法向方向,换句话说,一个像素点的“3D坐标、2D坐标和法向方向”是对应的。本领域的技术人员应当理解,3D空间中的三个点可以确定一个平面,本实施例中首先根据法向方向差小于第一角度阈值为条件选择出3个采样点。假设这三个采样点分别为A、B和C,则两两之间的法向方向差小于第一角度阈值即表示为:A点的法向方向与B点的法向方向所构成的角度之差小于第一角度阈值,A点的法向方向与C点的法向方向所构成的角度之差也小于第一角度阈值,B点的法向方向与C点的法向方向所构成的角度之差也小于第一角度阈值。
步骤S503,如果拟合的第一平面的法向方向和重力方向之间的角度差小于第二角度阈值,例如10°(水平面情况)或者在第三角度阈值(例如80°~100°)区间范围内(竖直面情况),则找出所有与第一平面对应的平面方程距离小于距离阈值(dmax-dmin)*0.2并且法向方向与所述第一平面的法向方向之间的角度差小于第四角度阈值(例如30°)的3D点(即内点)集合;
其中,“拟合的第一平面的法向方向和重力方向之间的角度差小于第二角度阈值或者在第三角度阈值区间范围内”是为了根据第一平面的法向方向与重力方向判断第一平面与重力方向是平行还是垂直的,如果是平行的,则第一平面为垂直面,如果是垂直的,则第一平面为水平面。
其中,dmax和dmin分别为场景的最远深度和最近深度。如果当前帧的3D点云是通过深度摄像头采集的,那么dmax和dmin表征的是深度摄像头的有效范围,dmax和dmin在一定程度上还与深度摄像头的精度有关,如果精度太差,那么有效范围就越小。如果当前帧的3D点云是通过3D重建算法计算得出的,那么那么dmax和dmin与普通摄像头采集的图像的清晰度和3D重建算法的精度有关。如果想要简单的进行处理,dmax和dmin的设定可以取决于场景的大小。在一些实施例中,如果是室内场景的话,可以为dmax=5米,dmin=0.4米;如果是室外场景的话,可以设置的范围更宽,例如dmax=10米或20米,dmin=0.4米。dmax和dmin的具体取值可以根据实际需要设定,本发明实施例对其不作限定。
其中,距离阈值(dmax-dmin)*0.2中“*”表示乘号(×),距离阈值中的常数“0.2”与点云的精确度有关。点云精度越高这个常数可以设置的越小,点云精度越低这个常数可以设置的越大,一般情况下,该常数在设定完后就不需要调整。其中,点云的精确度体现的是本在同一平面上的点云波动的范围的大小,如果波动范围大,则点云的精确度就低,这个常数可以设置的大一些;如果波动范围小,则点云的精确度就高,这个常数可以设置的小一些。本发明实施例对该常数的具体取值不作限定。
其中,“拟合的第一平面的法向方向”是指利用步骤S502中的3个采样点所拟合出来的平面方程所对应的平面的法向方向,步骤S503中“重力方向”与所输入图像描述同一场景,例如某一设备例如手机具有深度摄像头和重力传感器,该设备运行本实施例提供的方法,那么本实施例提供的方法的输入可以为深度摄像头所采集的图像,而步骤S503中的重力方向可以为重力传感器所采集的重力方向。
其中,步骤S503中“法向方向与第一平面的法向方向之间的角度差小于第四角度例如30°的3D点”中的第一个“法向方向”是指3D点对应的法向方向,即3D点对应的方向法向与第一平面的法向方向之间的角度差小于30°的3D点。
步骤S505,如果R为非空集合,则利用R包含的所有3D点重新拟合平面方程(即平面方程PX1,通过该平面方程可以得到第二平面),将R包含的所有3D点根据其2D坐标点,以每个2D坐标点与连通窗口例如27×27窗口内的坐标点为连通关系查找连通子集合(即第一连通子集合);
其中,如前所述,对于输入图像的一个像素点来说,该像素点包括3D坐标、2D坐标和法向方向,一个像素点的“3D坐标、2D坐标和法向方向”是对应的。
其中,以每个2D坐标点与连通窗口内的坐标点为连通关系查找,得到的连通子集合可以是一个连通子集合,也可以是两个或多个连通子集合,多个是指3个以上的。举例来说,如果当前帧所记录的场景是:在地面上放两个同样的即大小形状相同的正方体,且这两个正方体放置的位置比较远(足以分辨是两个正方体,而不会把这两个正方体看成是一个物体),那么,本步骤得到的连通子集合就有两个,每一个连通子集合分别代表一个正方体的上表面(如果忽略地面和正方体的其他侧面)。
步骤S505中的“根据其2D坐标点”是指“所有3D点的2D坐标点”。
其中,本实施例中的连通窗口的尺寸为27*27,窗口尺寸与图像斜对角线长度成正比,27是相对于640*480大小图像而定的。对于本领域的技术人员来说,连通窗口可以表示为St×St,其中Wt表示输入图像的宽度,Ht表示输入图像的高度,Wt和Ht的单位可以用像素来表示。
步骤S506,提取每个第一连通子集合所对应的3D点云集合,将其(对应的3D点云集合)垂直投影至平面方程所在的2D坐标系内获得对应的平面坐标,利用平面坐标求解凸包多边形,利用多边形2D顶点所对应的3D顶点作为当前帧场景的平面(当前帧的平面)之一加入当前帧的平面列表中;
其中当前帧的平面是指一个多边形,即求解凸包所得到的多边形。
在一些实施例中,该方法还包括:如果当前帧的平面的法向方向与重力方向之间角度差小于第二角度阈值例如10°,则记录该当前帧的平面的属性为水平面,如果法向方向与重力方向之间角度差在第三角度阈值区间范围(如80°~100°)内,则记录该当前帧的平面的属性为竖直面。
步骤S507,从当前帧的3D点云中除去所有与当前帧的平面的平面方程距离小于距离阈值(dmax-dmin)*0.2的3D点,对于剩余的3D点云重复执行步骤S501至步骤S506过程,直到步骤S505中获得的候选3D点集合R为空则终止。
从以上的实施例可以看出,本发明实施例提出的平面的重建方法,是一种基于随机抽样一致性(RANSAC)的3D点云聚类方法,RANSAC采样点选择利用了重力方向作为约束,保证每次聚类的点云严格在水平面或竖直面内;因此,本实施例提供的方法能够实时重建单目视频中场景的多平面结构,包括水平面和竖直面。而其他方式主要利用高度投票的方法聚类点云,因此只适用于水平面的提取,无法提取竖直面。
第二阶段:多平面结构融合,包括第一子阶段和第二子阶段,其中第一子阶段包括:寻找所有当前帧的平面与已有的平面列表中已提取的平面的连通关系;第二子阶段包括:将所有相互连通的平面融合成新的平面,并删除被融合的原有平面。
第一子阶段包括:寻找所有当前帧的平面与已有的平面列表中已提取的平面的连通关系,图5A为本发明实施例多平面结构融合中第一子阶段的实现流程示意图,如图5A所示,包括以下步骤:
步骤S511,判断平面P的属性与平面Pr的属性是否相同,如果相同,进入步骤S512,如果不相同,进入步骤S517;
其中,平面P是当前帧的平面,平面的属性是指平面是水平面还是竖直面;
其中,对于当前帧中的每个平面P,比较其与已有的平面列表中已提取的每个平面Pr的属性,如果相同,进入步骤S512,如果不相同,进入步骤S517。
步骤S512,判断平面P的顶点投影与平面Pr是否相交,如果相交,进入步骤S513,如果不相交,进入步骤S517;
其中,将平面P的顶点垂直投影至平面Pr的坐标系内,获得对应的平面坐标组成的多边形,判断其与Pr的顶点坐标组成的多边形是否相交,如果相交,进入步骤S513,如果不相交,进入步骤S517;
在一些实施例中,该方法还包括:如果平面P与平面Pr同为水平面或竖直面,则比较两者的法向,如果法向角度差在第一角度阈值例如20°以内,则将P的顶点垂直投影至Pr的坐标系内获得对应的平面坐标组成的多边形,判断其与Pr的顶点坐标组成的多边形是否相交,如果相交,进入步骤S513,如果不相交,进入步骤S517。其中,“组成的多边形”可以是三角形、矩形等,一般来说,多边形的顶点数目不定,但至少有3个顶点,因此能够确定一个平面。其中,“将P的顶点垂直投影至Pr的坐标系内”是将P的顶点投影到平面Pr上,因为平面Pr上有一个2D坐标系(每个平面都有各自的2D坐标系),需要获得以此为参考的2D坐标。
步骤S513,利用平面P和平面Pr所包含的内点集合重新拟合平面方程Pn(即第五平面Pn),拟合的平面Pn的法向方向与重力方向之间的角度差是否小于第二角度阈值(例如10度)或者在第三角度阈值区间范围内(例如大于80度且小于100度)?如果是,进入步骤S514,如果否,进入步骤S517;
即,如果平面Pn的法向方向与重力方向之间的角度差小于10度,则进入步骤S514;如果平面Pn的法向方向与重力方向之间的角度差大于80度且小于100度,则进入步骤S514;如果平面Pn的法向方向与重力方向之间的角度差既不大于80度且小于100度,也不小于10度,则进入步骤S517。
其中,利用平面P和平面Pr所包含的内点集合(至少包括平面P和平面Pr的顶点集合)重新拟合平面方程Pn;如果平面Pn的法向方向与重力方向之间的角度差小于10°,则记录Pn属性为水平面;如果平面Pn的法向方向与重力方向的角度差在80°~100°区间范围内,则记录Pn属性为竖直面;如果平面Pn的法向方向与重力方向的角度差属于其他角度范围,则进入步骤S517。
本实施例中的第一角度阈值、第二角度阈值和第三角度阈值区间范围、第四角度阈值、距离阈值等的设置与设置的精度有关,精度的设置一般与本实施例的方法应用的场景有关;当然同一种场景,也可以有不同的精度要求。角度阈值和距离阈值可以适当调整,以第二角度阈值和第三角度阈值区间为例进行说。对于精度要求高的场景,可以将第二角度阈值设置的小一些,例如5度,将第三角度阈值区间范围设置的小一些,例如大于85度且小于95度;对于精度要求低的场景,可以将第二角度阈值设置的大一些,例如20度,将第三角度阈值区间范围设置的大一些,例如大于70度且小于110度.本领域的技术人员应当理解,可以随之本实施例方法的应用场景以及要求的精度而设置角度阈值或距离阈值。
步骤S514,判断拟合的平面Pn与平面P的属性是否相同?如果相同,进入步骤S515;如果否,进入步骤S517;
其中,判断拟合的平面Pn与平面P的属性是否相同?如果Pn和P的属性相同,进入步骤S515;如果否,进入步骤S517;
步骤S515,判断平面P的顶点与平面Pr的距离与平面Pr的顶点至平面P的距离是否足够接近?如果是,则进入步骤S516,如果否,则进入步骤S517;
其中,检查平面P的所有顶点至平面Pr的距离以及平面Pr的所有顶点至P的距离是否都小于距离阈值(dmax-dmin)*0.2,如果是,则认为足够接近,则进入步骤S516;如果否,则进入步骤S517;
步骤S516,确定平面P与平面Pr相连通;
步骤S517,确定平面P与平面Pr不相连通;
根据上述步骤S511至步骤S517的过程寻找到当前帧的平面P与已有的平面列表中已提取的平面Pr之间所有的连通关系。
从以上步骤可以看出,对于当前帧中的每个平面P,比较平面P与已有的平面列表中已提取的每个平面Pr的属性;如果同为水平面或竖直面,则比较两者的法向,如果法向角度差在第一角度阈值20°以内,则将P的顶点垂直投影至Pr的坐标系内获得对应的平面坐标组成的多边形;判断组成的多边形与Pr的顶点坐标组成的多边形是否相交,如果相交,则利用P和Pr所包含的内点集合重新拟合平面方程Pn,如果Pn法向方向与重力方向之间角度差小于10°,则记录Pn属性为水平面,如果法向方向与重力方向之间的角度差在80°~100°区间范围内,则记录Pn属性为竖直面,如果Pn和P的属性相同,则检查平面P的所有顶点至平面Pr的距离以及平面Pr的所有顶点至平面P的距离是否都小于距离阈值(dmax-dmin)*0.2,如果是则认为平面P与平面Pr相连通。根据上述评判标准寻找到当前帧的平面P与已有的平面列表中已提取的平面Pr之间所有的连通关系。
第二子阶段包括:将所有相互连通的平面融合成新的平面,并删除被融合的原有平面,包括以下步骤。
步骤S51,根据连通关系寻找所有当前帧的平面与已有的平面列表中已提取的平面的连通子集合(即第二连通子集合);
步骤S52,对于每个第二连通子集合中的所有平面,利用其所包含的所有3D内点重新拟合平面方程(即得到第五平面),并去除与新平面距离超过距离阈值(dmax-dmin)*0.2的内点,剩余的内点垂直投影至平面方程所在的2D坐标系内获得对应的平面坐标;
步骤S53,利用平面坐标求解凸包多边形,利用多边形2D顶点所对应的3D顶点作为当前帧的新平面加入已有的平面列表中,并删除第二连通子集合中原有的平面。
从以上实施例可以,对视频每帧的3D点云重复第一阶段和第二阶段,以实现渐增式的平面重建,保证已有平面的边界随着视频视野范围的扩大而实时扩展,并且新出现的平面会被重建。
本发明实施例中,通过当前帧的多平面与已有的平面列表中已有的平面融合的方法实现多平面边界的实时扩展。现有的方法主要解决单帧点云的多平面提取问题,多帧的平面重建是通过对多帧点云数据的合并处理来实现,随着视频视野范围的不断扩大,时间开销会上涨,不利于保证实时性。
本发明实施例提供的技术方案具有以下有益效果:1)平面结构提取采用了基于RANSAC的3D点云聚类方法,RANSAC采样点选择利用了重力方向作为约束,可以保证每次聚类的点云严格在水平面或竖直面内,从而支持水平面和竖直面的提取,而以往的方法仅支持水平面的提取。2)多平面边界的实时扩展通过当前帧的多平面与已有的平面列表中已有的平面融合的方法来实现,每帧的多平面提取计算仅针对当前帧的3D点云,计算量不会随着视频视野范围扩大而明显增长,保证了平面的渐增式扩展的重建的实时性。
本发明实施例再提供一种平面的重建方法,图5B为本发明再一实施例平面的重建方法的实现流程示意图,如图5B所示,该方法包括:
步骤S521,根据点云数目确定最大循环次数L,当前循环次数i清零;
其中,根据所述当前帧的3D点云数目确定最大循环次数L。在实施的过程中,如果是对当前帧首次执行本方法,即还没有平面从当前帧的3D点云中被提取出,那么则初始化L,即将当前帧的3D点云的总数目N确定为当前帧的3D点云数目,然后根据当前帧的3D点云的总数目N确定初始的最大循环次数L;关于初始化L的过程可以参见步骤S501;如果已经对当前帧执行过一次本方法,即已经从当前帧中提取过一个或多个平面,那么当前帧的3D点云数目即为当前帧中的剩余3D点云数目M,根据当前帧中的剩余点云数目M确定最大循环次数L,参见步骤S21和步骤S22。
当前循环次数i清零,即将i设置为0。
步骤S522,判断当前循环次数i是否小于L?如果是,进入步骤S523;如果否,进入步骤S528;
步骤S523,从3D点云中随机选取3个采样点,拟合第一平面;
其中,关于拟合第一平面的过程可以参见步骤S502。
步骤S524,判断第一平面的法向方向与重力方向平行或垂直?
步骤S525,找出第一平面的内点;
其中,关于步骤S524和步骤S525的实现过程可以参见步骤S503。
步骤S526,记录每次循环得到的内点数目M,记录最多的内点集合为R,并根据R更新L;
其中,关于步骤S526的实现过程可以参见步骤S504。
步骤S527,当前循环次数i加1;
步骤S528,判断R是否为空?如果是,则流程终止,输入下一帧图像的3D点云,执行步骤S521。如果否,进入步骤S29;
步骤S529,利用R拟合第二平面,查找连通子集合;
其中,关于步骤S529的实现过程可以参见步骤S505。
步骤S530,对N个连通子集合投影2D,求凸包3D顶点提取平面;
其中,关于步骤S530的实现过程可以参见步骤S506。
步骤S531,从当前3D点云中删除与平面接近的点;
其中,关于步骤S531的实现过程可以参见步骤S507。
需要说明的是,本实施例中的拟合的第一平面至第五平面,都对应着一个平面方程,即第一平面至第五平面是数学意义上的平面方程的对应的平面。而实际当前帧中的多平面是指多边形,更像是一个数学意义上的“截面”,因为平面方程对应的平面是一个无线延展的没有边界的面,而多边形或截面都是有边界的。举例来说,如果当前帧所记录的场景是:在地面上放两个同样的即大小形状相同的正方体,那么这两个正方体的上表面可以构成一个无线延展没有边界的平面,即可以通过平面方程来表示。然而,当前帧的平面却是正方体的上表面,即,在最终的提取结果中,会有两个矩形这样的多边形,然而这两个多边形对应同一个平面方程。
本实施例的技术方案提供的一种平面的重建方法,应用于三维重建的过程中,因此,本实施例提供的技术方案可以应用在增强现实、图像处理、拍照、游戏、动画、影视、电子商务、教育、房产、家居装修等涉及三维重建的产品中。
下面举例说明本发明实施例的应用场景:
1,用户用移动设备如手机的摄像头拍摄某个场景时,可以利用本实施例提供的方法(即本方法)实时重建视频场景中平面的3D结构,并将重建的3D结构和视频当前帧同位置角度叠加渲染,从而向用户展现场景的主要3D结构。其中,“将重建的3D结构和视频当前帧同位置角度叠加渲染”是指从当前帧的相机视角下去渲染已重建的平面,平面结构准确的情况下应当与画面内容是对齐的。换句话说,本方法为增强现实的应用提供了核心基础,因为只有平面结构和真实场景在相机视角下对齐,才能保证用户摆放的虚拟物体的位置和真实环境一致。
2,用户点击视频当前帧画面中的某个位置时,可以利用本方法实时重建的多平面3D结构进行点击位置的视线求交,从而找到锚点摆放虚拟物体,进而实现虚拟物体和真实场景几何一致性融合的增强现实效果。其中,视线求交的过程是指,从当前帧的相机视点(即相机所在的位置)朝着用户点击的二维位置投射出一根直线,该投射的直线与重建的多平面结构求交,得到的交点即为锚点,在锚点上摆放的虚拟物体能够保证位置紧贴着真实场景,从而保证虚实几何一致性。
3,用户可以对本方法实时重建的多平面3D结构和虚拟物体之间计算遮挡关系,从而实现虚拟物体和真实场景遮挡一致性融合的增强现实效果。遮挡关系在一定程度上是确定求解出来的多平面与虚拟物体的各平面之间的位置关系,例如求解出来的平面在虚拟物体之前,可以虚拟物体就被遮挡了。一般来说,遮挡关系还与视角有关,如果动画中采用上帝视角,那么位置在上面的平面与遮挡下面的平面。例如,如果用户以俯视视角观看,当虚拟物体在桌面的平面下方被遮挡住时则应该被隐藏,在桌面上方时才显示并且遮挡住桌面。一般来说,有多平面结构才能有遮挡关系,有遮挡关系才能保证虚实之间的遮挡真实性;所以,利用本实施例提供的技术方案能够让用户体会的更加真实。
4,用户还可以利用本方法实时重建的多平面3D结构进行虚拟物体的阴影投射计算,获得具有真实感的阴影效果,从而实现虚拟物体和真实场景光照一致性融合的增强现实效果。其中,阴影投射的意义在于当虚拟物体摆放在真实场景中,如果没有阴影会显得虚假,有了多平面结构,可以计算出虚拟物体在多平面上的阴影并且将阴影渲染至真实场景画面中,有阴影的虚拟物体与真实场景融为一体时会让用户感觉到更为真实。
5,用户还可以实现本方法实时重建的多平面3D结构与虚拟动画角色之间的物理碰撞,从而实现虚拟动画角色和真实场景物理一致性融合的真实感动画效果。其中,物理碰撞也是确定提取的平面与虚拟动画角色之间的位置关系,比如有个虚拟动画角色在真实场景中奔跑,当角色跑到多平面结构所在的位置,发现碰壁了跑不过去了,则要调转方向往别的地方跑。这就是碰撞检测的一个应用,虚实物体的碰撞检测能够得以实现的基础是我们需要知道真实场景的三维结构,有了多平面结构就可以实现碰撞检测。碰撞检测(物理碰撞)在游戏场景中有很重要的作用,动画比较常见的场景是,动画中角色如果扔出去一个武器,那么在哪儿产生效果,就需要碰撞检测来实现,例如该武器是个炸弹,那么炸弹在哪***,就需要碰撞检测来实现。
以上5点就是增强现实技术在实际应用中需要解决的5个有挑战的问题,而这5个问题得以解决的基础是必须获得真实场景的几何结构,而本实施例提供的平面的重建方法就是获得真实场景几何结构的一种途径。
基于前述的实施例,本发明实施例提供一种平面的重建装置,该装置包括所包括的各单元、以及各单元所包括的各模块,可以通过电子设备中的处理器来实现;当然也可通过具体的逻辑电路实现。
图6A为本发明又一实施例平面的重建装置的组成结构示意图,如图6A所示,所述装置600包括第一获取单元601和聚类单元602,其中:
第一获取单元601,用于获取输入的当前帧的三维3D点云;
聚类单元602,用于对所述当前帧的3D点云进行聚类时,以获取的重力方向作为约束条件,以使聚类的点云约束在水平面或竖直面内;
其中,所述重力方向与所述3D点云描述同一场景。
在一些实施例中,所述聚类单元,包括:
第一拟合模块,用于从所述当前帧的3D点云中选取采样点,利用选取的采样点拟合第一平面;
第一确定模块,用于如果所述第一平面满足以所述重力方向作为的约束条件,确定所述第一平面的内点集合;
第二确定模块,用于按照确定的最大循环次数L,从每次循环得到的内点集合中确定点数目满足条件的候选3D点集合R;
第二拟合模块,用于如果R为非空集合,利用R包含的3D点重新拟合第二平面;
聚类模块,用于利用所述第二平面对所述R包含的3D点进行聚类时,以所述重力方向作为约束条件,以使聚类的点云约束在水平面或竖直面内。
在一些实施例中,所述聚类模块,包括:
查找子模块,用于以每个R包含的3D点云对应的2D坐标点与预设的连通窗口内的坐标点为连通关系查找连通子集合;
提取子模块,用于提取每个连通子集合所对应的3D点云集合;
投影子模块,用于将对应的3D点云集合垂直投影至第二平面所在的2D坐标系内获得对应的第一平面坐标集合;
求解子模块,用于利用第一平面坐标集合求解凸包多边形;
输出子模块,用于利用凸包多边形的2D顶点所对应的3D顶点作为当前帧的平面之一加入所述当前帧的平面列表中。
在一些实施例中,所述聚类单元,包括:
除去模块,用于从当前帧的3D点云中除去与所述当前帧的平面距离小于距离阈值的3D点,得到当前帧的剩余3D点云;
第三确定模块,用于根据所述当前帧的剩余3D点云数目更新最大循环次数L;
第四确定模块,用于按照更新的最大循环次数L,从每次循环得到的内点集合中确定点数目满足条件的候选3D点集合R;从所述当前帧的剩余3D点云中选取采样点,利用选取的采样点拟合第三平面;如果所述第三平面的法向方向满足以所述重力方向作为约束参数的约束条件,确定所述第三平面的内点集合;
第三拟合模块,用于如果R为非空集合,利用R包含的3D点重新拟合第四平面;
第二聚类模块,用于利用所述第四平面对所述R包含的3D点进行聚类时,以所述重力方向作为约束条件,以使聚类的点云约束在水平面或竖直面内。
在一些实施例中,所述第一拟合模块,用于:获取所述当前帧上每一3D点的法向方向;从所述当前帧的3D点云中选取两两之间的法向方向之间的角度差小于第一角度阈值的多个采样点,利用选取的多个采样点拟合平面方程。
在一些实施例中,所述第一确定模块,用于如果第一平面的法向方向和所述重力方向之间的角度差小于第二角度阈值或者在第三角度阈值区间范围内,则找出与所述第一平面距离小于距离阈值并且法向方向与平面法向方向之间的角度差小于第四角度阈值的内点集合。
在一些实施例中,所述聚类单元,包括第五确定模块,用于根据所述当前帧的3D点云数目确定最大循环次数L。
在一些实施例中,所述从第四确定模块,用于将每次循环得到的内点集合内的点数目记为M,将点数目最多且大于预设阈值的内点集合确定为候选3D点集合R。
在一些实施例中,所述聚类模块,还包括:
记录模块,用于如果所述当前帧的平面的法向方向与所述重力方向之间角度差小于第二角度阈值,则记录所述当前帧的平面的属性为水平面,如果所述当前帧的平面的法向方向与所述重力方向之间角度差在第三角度阈值区间范围内,则记录所述当前帧的平面的属性为竖直面。
在一些实施例中,装置600可以用于执行上述实施例中所描述的平面的重建方法,当然可以包括用于执行上述实施例所描述的平面的重建方法中的任意流程和/或步骤的单元或模块,为了简洁,不再赘述。
以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本发明装置实施例中未披露的技术细节,请参照本发明方法实施例的描述而理解。
本发明实施例再提供一种平面的重建装置,图6B为本发明又一实施例平面的融合装置的组成结构示意图,如图6B所示,该装置包括:
第二获取单元611,用于获取当前帧的平面和已有的平面;
确定单元612,用于确定所述当前帧的平面与已有的平面的连通关系;
融合单元612,用于根据所述连通关系将相互连通的平面融合成新的平面。
在一些实施例中,确定单元,用于根据平面的属性和所述重力方向确定所述当前帧的平面与已有的平面的连通关系。
在一些实施例中,所述确定单元包括:第四拟合模块,用于如果所述当前帧的平面P的属性与已有的平面Pr的属性相同,且所述平面P的顶点投影与所述平面Pr相交,利用平面P和平面Pr所包含的内点集合重新拟合第五平面Pn;
第六确定模块,用于如果所述第五平面Pn的法向方向与所述重力方向之间的角度差小于第二角度阈值或者在第三角度阈值区间范围内,且所述第五平面Pn与所述平面P的属性相同,确定平面P与平面Pr相连通。
在一些实施例中,所述第六确定模块,还用于如果所述当前帧的平面P的属性与已有的平面Pr的属性不相同,或者,述平面P的顶点投影与所述平面Pr不相交,或者,如果所述第五平面Pn的法向方向与所述重力方向之间的角度差不小于第二角度阈值或者不在第三角度阈值区间范围内,或者,所述第五平面Pn与所述平面P的属性不相同,确定平面P与平面Pr不连通。
在一些实施例中,述第六确定模块,还用于:如果所述第五平面Pn与所述平面P的属性相同,判断平面P的顶点至平面Pr的距离以及平面Pr的顶点至P的距离是否都小于距离阈值,如果是,确定平面P与平面Pr相连通。
在一些实施例中,述第六确定模块,还用于:如果所述平面P的属性与所述平面Pr的属性相同,则比较两者的法向,如果法向角度差在第一角度阈值以内,则将所述平面P的顶点垂直投影至Pr的坐标系内获得对应的平面坐标组成的多边形,如果组成的多边形与平面Pr的顶点坐标组成的多边形相交,利用平面P和平面Pr所包含的内点集合重新拟合第五平面Pn。
在一些实施例中,所述融合单元,包括:
第七确定模块,用于根据连通关系确定所述平面P与所述平面Pr的第二连通子集合;
处理模块,用于对于每个第二连通子集合中的平面,利用每个第二连通子集合中的平面所包含的所有3D内点重新拟合作为第五平面,并去除与所述第五平面距离超过距离阈值的内点,剩余的内点垂直投影至所述第五平面所在的2D坐标系内获得对应的平面坐标;
求解模块,用于利用平面坐标求解凸包多边形;
第八确定模块,用于利用多边形2D顶点所对应的3D顶点作为当前帧的新的平面加入已有的平面列表中。
在一些实施例中,装置610可以用于执行上述实施例中所描述的平面的融合方法,当然可以包括用于执行上述实施例所描述的平面的融合方法中的任意流程和/或步骤的单元或模块,为了简洁,不再赘述。
以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本发明装置实施例中未披露的技术细节,请参照本发明方法实施例的描述而理解。
需要说明的是,本发明实施例中,如果以软件功能模块的形式实现上述的平面的重建方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台电子设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read OnlyMemory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本发明实施例不限制于任何特定的硬件和软件结合。
对应地,本发明实施例提供一种电子设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现前述平面的重建方法中的步骤,或者,所述处理器执行所述程序时实现前述平面的融合方法中的步骤。
本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现前述平面的重建方法中的步骤,或者,该计算机程序被处理器执行时实现前述平面的融合方法中的步骤。
这里需要指出的是:以上存储介质和设备实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本发明存储介质和设备实施例中未披露的技术细节,请参照本发明方法实施例的描述而理解。
需要说明的是,图7为本发明实施例中电子设备的一种硬件实体示意图,如图7所示,该电子设备700的硬件实体包括:处理器701、通信接口702和存储器703,其中
处理器701通常控制电子设备700的总体操作。
通信接口702可以使电子设备通过网络与其他设备或服务器通信。
存储器703配置为存储由处理器701可执行的指令和应用,还可以缓存待处理器701以及电子设备700中各模块待处理或已经处理的数据(例如,图像数据、音频数据、语音通信数据和视频通信数据),可以通过闪存(FLASH)或随机访问存储器(Random AccessMemory,RAM)实现。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个***,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本发明各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台电子设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (104)
1.一种平面的重建方法,其特征在于,所述方法包括:
获取输入的当前帧的三维3D点云,所述3D点云包括多个3D点;
以重力方向作为约束条件,对所述当前帧的3D点云中包括的3D点进行聚类,得到至少一个当前帧的平面,其中,所述至少一个当前帧的平面的法向方向与所述重力方向之间角度差小于第二角度阈值,和/或所述至少一个当前帧的平面的法向方向与所述重力方向之间角度差在第三角度阈值区间范围内,所述至少一个当前帧的平面包括水平面和/或竖直面,每个所述当前帧的平面包括所述多个3D点中的至少两个3D点。
2.根据权利要求1所述的方法,其特征在于,所述以重力方向作为约束条件,对所述当前帧的3D点云中包括的3D点进行聚类,得到至少一个当前帧的平面,包括:
以重力方向为约束条件,基于所述当前帧的3D点云,确定平面方程PX1;
基于所述平面方程PX1,对所述3D点云中包括的3D点进行聚类,得到所述平面方程PX1对应的至少一个平面P1,其中,所述至少一个当前帧的平面包括所述至少一个平面P1。
3.根据权利要求2所述的方法,其特征在于,所述以重力方向为约束条件,基于所述当前帧的3D点云,确定平面方程PX1,包括:
以所述重力方向作为约束条件,从当前待聚合的多个3D点中确定至少一个3D点集合,每个3D点集合包含当前待聚合的多个3D点中的至少两个3D点;
从至少一个3D点集合中确定3D点数目满足预设条件的候选3D点集合R;
基于所述候选3D点集合R,确定平面方程PX1。
4.根据权利要求3所述的方法,其特征在于,所述预设条件包括:
所述候选3D点集合R为所述至少一个3D点集合中包含3D点数目最多的3D点集合;和/或,
所述候选3D点集合R中包含的3D点数目大于或等于预设阈值。
5.根据权利要求3所述的方法,其特征在于,所述以所述重力方向作为约束条件,从当前待聚合的多个3D点中确定至少一个3D点集合,包括:
从所述当前待聚合的多个3D点中选取第一采样点,利用选取的第一采样点拟合平面方程PX2;
如果所述平面方程PX2的法向方向满足以所述重力方向作为约束参数的约束条件,从所述当前待聚合的多个3D点中确定对应于所述平面方程PX2的3D点集合。
6.根据权利要求5所述的方法,其特征在于,所述从所述当前待聚合的多个3D点中选取第一采样点,包括:
如果采样点的当前已选取次数低于最大选取次数L,从所述当前待聚合的多个3D点中选取第一采样点,其中,所述最大选取次数L是基于前一次选取的采样点得到的3D点集合中包含的3D点数量确定的。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
根据对应于所述平面方程PX2的3D点集合中包含的3D点数目,更新所述最大选取次数L。
8.根据权利要求5所述的方法,其特征在于,所述从所述当前待聚合的多个3D点中选取第一采样点,包括:
获取所述当前待聚合的多个3D点中每一3D点的法向方向;
从所述当前待聚合的多个3D点中选取两两之间的法向方向之间的角度差小于第一角度阈值的多个3D点作为所述第一采样点。
9.根据权利要求5所述的方法,其特征在于,所述如果所述平面方程PX2的法向方向满足以所述重力方向作为约束参数的约束条件,从所述当前待聚合的多个3D点中确定对应于所述平面方程PX2的3D点集合,包括:
如果平面P2的法向方向和所述重力方向之间的角度差小于第二角度阈值或者在第三角度阈值区间范围内,从所述当前待聚合的多个3D点中确定对应于所述平面方程PX2的3D点集合。
10.根据权利要求5所述的方法,其特征在于,所述如果所述平面方程PX2的法向方向满足以所述重力方向作为约束参数的约束条件,从所述当前待聚合的多个3D点中确定对应于所述平面方程PX2的3D点集合,包括:
如果所述平面方程PX2的法向方向满足以所述重力方向作为约束参数的约束条件,则将所述当前待聚合的多个3D点中与所述平面方程PX2之间的距离小于第一距离阈值并且法向方向与平面方程PX2的法向方向之间的角度差小于第四角度阈值的3D点确定为对应于所述平面方程PX2的3D点。
11.根据权利要求2至10中任一项所述的方法,其特征在于,所述基于所述平面方程PX1,对所述3D点云中包括的待聚合的多个3D点进行聚类,得到所述平面方程PX1对应的至少一个平面P1,包括:
基于所述平面方程PX1,确定对应于所述至少一个平面P1的至少一个第一连通子集合;
基于所述至少一个平面P1中每个平面P1对应的第一连通子集合,确定所述每个平面P1的边界顶点。
12.根据权利要求11所述的方法,其特征在于,所述基于所述平面方程PX1,确定对应于所述至少一个平面P1的至少一个第一连通子集合,包括:
基于所述平面方程PX1和所述待聚合的多个3D点对应的二维2D图像坐标,确定所述至少一个第一连通子集合。
13.根据权利要求11所述的方法,其特征在于,所述基于所述至少一个平面P1中每个平面P1对应的第一连通子集合,确定所述每个平面P1的边界顶点,包括:
将所述平面包含的至少两个3D点垂直投影至所述平面方程PX1对应的二维2D坐标系,得到所述平面P1包含的至少两个3D点中每个3D点对应的2D坐标;
基于所述至少两个3D点中每个3D点对应的2D坐标,确定所述平面P1的边界顶点。
14.根据权利要求13所述的方法,其特征在于,所述基于所述至少两个3D点中每个3D点对应的2D坐标,确定所述平面P1的边界顶点,包括:
基于所述至少两个3D顶点对应的2D坐标求解凸包多边形,得到所述平面P1的边界顶点。
15.根据权利要求3至10中任一项所述的方法,其特征在于,所述方法还包括:
从所述待聚合的多个3D点中除去与所述平面方程PX1之间的距离小于第二距离阈值的3D点,得到更新后的待聚合的多个3D点。
16.根据权利要求1至10中任一项所述的方法,其特征在于,所述方法还包括:
基于所述重力方向,确定所述当前帧的至少一个平面的属性,所述属性包括水平面或竖直面。
17.根据权利要求16所述的方法,其特征在于,所述基于所述重力方向确定至少一个平面的属性,包括:
如果所述当前帧的平面的法向方向与所述重力方向之间角度差小于第二角度阈值,则确定所述当前帧的平面的属性为水平面;和/或
如果所述当前帧的平面的法向方向与所述重力方向之间角度差在第三角度阈值区间范围内,则确定所述当前帧的平面的属性为竖直面。
18.根据权利要求16所述的方法,其特征在于,所述方法还包括:
对所述至少一个当前帧的平面P与已有平面列表中的平面Pr进行融合,其中,所述已有平面列表包含至少一个除所述当前帧之外的其他帧对应的平面。
19.根据权利要求18所述的方法,其特征在于,所述对所述至少一个当前帧的平面P与已有平面列表中的平面Pr进行融合,包括:
确定所述平面P与所述平面Pr的连通关系;
根据所述连通关系,将所述平面P与所述平面Pr中相互连通的平面融合成新的平面。
20.根据权利要求19所述的方法,其特征在于,所述确定所述平面P与所述平面Pr的连通关系,包括:
如果所述平面P的顶点投影与所述平面Pr相交,并且平面P的顶点至平面Pr的距离与平面Pr的顶点至平面P的距离均小于或等于第三距离阈值,确定平面P与平面Pr相连通。
21.根据权利要求20所述的方法,其特征在于,所述确定所述平面P与所述平面Pr的连通关系,包括:
利用所述平面P和所述平面Pr所包含的3D点集合,拟合平面Pn;
如果所述平面Pn满足以重力方向作为约束参数的约束条件,确定所述平面P与所述平面Pr相连通。
22.根据权利要求20所述的方法,其特征在于,所述确定所述平面P与所述平面Pr的连通关系,还包括:
如果所述平面Pn与所述平面P的属性相同,确定平面P与平面Pr相连通。
23.根据权利要求22所述的方法,其特征在于,所述确定所述平面P与所述平面Pr的连通关系,还包括:
如果所述当前帧的平面P的属性与所述平面Pr的属性不相同,或者,所述平面P的顶点投影与所述平面Pr不相交,或者,如果所述平面Pn的法向方向与所述重力方向之间的角度差不小于第二角度阈值或者不在第三角度阈值区间范围内,或者,所述平面Pn与所述平面P的属性不相同,确定平面P与平面Pr不连通。
24.根据权利要求21所述的方法,其特征在于,所述利用所述平面P和所述平面Pr所包含的3D点集合,拟合平面Pn,包括:
如果所述平面P与所述平面Pr的法向角度差在第一角度阈值以内,将所述平面P的顶点垂直投影至Pr的坐标系内,获得所述平面P的顶点对应的2D多边形;
如果所述平面P的顶点对应的2D多边形与平面Pr的顶点对应的多边形相交,利用平面P和平面Pr所包含的内点集合,拟合平面Pn。
25.根据权利要求19所述的方法,其特征在于,所述根据所述连通关系,将所述平面P与所述平面Pr中相互连通的平面融合成新的平面,包括:
根据所述连通关系,确定所述平面P和所述平面Pr构成的第二连通子集合;
基于所述第二连通子集合中的平面包含的3D点,拟合平面方程PX3;
基于所述平面方程PX3,确定融合的新平面。
26.根据权利要求19所述的方法,其特征在于,所述方法还包括:基于对所述平面P与所述平面Pr进行融合的结果,更新所述已有平面列表。
27.一种平面的融合方法,其特征在于,所述方法包括:
获取至少一个当前帧的平面P与已有平面列表中的平面Pr,其中,所述已有平面列表包含至少一个除所述当前帧之外的其他帧对应的平面;所述当前帧的平面P通过以重力方向作为约束条件,对所述当前帧的3D点云中包括的3D点进行聚类得到;所述当前帧的平面P的法向方向与所述重力方向之间角度差小于第二角度阈值,和/或所述当前帧的平面P的法向方向与所述重力方向之间角度差在第三角度阈值区间范围内;
确定所述平面P与所述平面Pr的连通关系;
根据所述连通关系,将所述平面P与所述平面Pr中相互连通的平面融合成新的平面。
28.根据权利要求27所述的方法,其特征在于,所述确定所述平面P与所述平面Pr的连通关系,包括:
如果所述平面P的顶点投影与所述平面Pr相交,并且平面P的顶点至平面Pr的距离与平面Pr的顶点至平面P的距离均小于或等于第三距离阈值,确定平面P与平面Pr相连通。
29.根据权利要求28所述的方法,其特征在于,所述确定所述平面P与所述平面Pr的连通关系,包括:
利用所述平面P和所述平面Pr所包含的3D点集合,拟合平面Pn;
如果所述平面Pn满足以重力方向作为约束参数的约束条件,确定所述平面P与所述平面Pr相连通。
30.根据权利要求28所述的方法,其特征在于,所述确定所述平面P与所述平面Pr的连通关系,还包括:
如果所述平面Pn与所述平面P的属性相同,确定平面P与平面Pr相连通。
31.根据权利要求27所述的方法,其特征在于,所述确定所述平面P与所述平面Pr的连通关系,还包括:
如果所述当前帧的平面P的属性与所述平面Pr的属性不相同,或者,所述平面P的顶点投影与所述平面Pr不相交,或者,如果所述平面Pn的法向方向与所述重力方向之间的角度差不小于第二角度阈值或者不在第三角度阈值区间范围内,或者,所述平面Pn与所述平面P的属性不相同,确定平面P与平面Pr不连通。
32.根据权利要求29所述的方法,其特征在于,所述利用平面P和平面Pr所包含的3D点集合,拟合平面Pn,包括:
如果所述平面P与所述平面Pr的法向角度差在第一角度阈值以内,将所述平面P的顶点垂直投影至Pr的坐标系内,获得所述平面P的顶点对应的2D多边形;
如果所述平面P的顶点对应的2D多边形与平面Pr的顶点对应的多边形相交,利用平面P和平面Pr所包含的内点集合,拟合平面Pn。
33.根据权利要求27所述的方法,其特征在于,所述根据所述连通关系,将所述平面P与所述平面Pr中相互连通的平面融合成新的平面,包括:
根据所述连通关系,确定所述平面P和所述平面Pr构成的第二连通子集合;
基于所述第二连通子集合中的平面包含的3D点,拟合平面方程PX3;
基于所述平面方程PX3,确定融合的新平面。
34.根据权利要求27所述的方法,其特征在于,所述方法还包括:基于对所述平面P与所述平面Pr进行融合的结果,更新所述已有平面列表。
35.根据权利要求27所述的方法,其特征在于,所述方法包括:
获取输入的当前帧的三维3D点云,所述3D点云包括多个3D点;
以重力方向作为约束条件,对所述当前帧的3D点云中包括的3D点进行聚类,得到至少一个当前帧的平面P,其中,所述至少一个当前帧的平面包括水平面和/或竖直面,每个当前帧的平面包括所述多个3D点中的至少两个3D点。
36.根据权利要求35所述的方法,其特征在于,所述以重力方向作为约束条件,对所述当前帧的3D点云中包括的3D点进行聚类,得到至少一个当前帧的平面,包括:
以重力方向为约束条件,基于所述当前帧的3D点云,确定平面方程PX1;
基于所述平面方程PX1,对所述3D点云中包括的3D点进行聚类,得到所述平面方程PX1对应的至少一个平面P1,其中,所述至少一个当前帧的平面包括所述至少一个平面P1。
37.根据权利要求36所述的方法,其特征在于,所述以重力方向为约束条件,基于所述当前帧的3D点云,确定平面方程PX1,包括:
以所述重力方向作为约束条件,从当前待聚合的多个3D点中确定至少一个3D点集合,每个3D点集合包含当前待聚合的多个3D点中的至少两个3D点;
从至少一个3D点集合中确定3D点数目满足预设条件的候选3D点集合R;
基于所述候选3D点集合R,确定平面方程PX1。
38.根据权利要求37所述的方法,其特征在于,所述预设条件包括:
所述候选3D点集合R为所述至少一个3D点集合中包含3D点数目最多的3D点集合;和/或,
所述候选3D点集合R中包含的3D点数目大于或等于预设阈值。
39.根据权利要求37所述的方法,其特征在于,所述以所述重力方向作为约束条件,从当前待聚合的多个3D点中确定至少一个3D点集合,包括:
从所述当前待聚合的多个3D点中选取第一采样点,利用选取的第一采样点拟合平面方程PX2;
如果所述平面方程PX2的法向方向满足以所述重力方向作为约束参数的约束条件,从所述当前待聚合的多个3D点中确定对应于所述平面方程PX2的3D点集合。
40.根据权利要求39所述的方法,其特征在于,所述从所述当前待聚合的多个3D点中选取第一采样点,包括:
如果采样点的当前已选取次数低于最大选取次数L,从所述当前待聚合的多个3D点中选取第一采样点,其中,所述最大选取次数L是基于前一次选取的采样点得到的3D点集合中包含的3D点数量确定的。
41.根据权利要求40所述的方法,其特征在于,所述方法还包括:
根据对应于所述平面方程PX2的3D点集合中包含的3D点数目,更新所述最大选取次数L。
42.根据权利要求39所述的方法,其特征在于,所述从所述当前待聚合的多个3D点中选取第一采样点,包括:
获取所述当前待聚合的多个3D点中每一3D点的法向方向;
从所述当前待聚合的多个3D点中选取两两之间的法向方向之间的角度差小于第一角度阈值的多个3D点作为所述第一采样点。
43.根据权利要求39所述的方法,其特征在于,所述如果所述平面方程PX2的法向方向满足以所述重力方向作为约束参数的约束条件,从所述当前待聚合的多个3D点中确定对应于所述平面方程PX2的3D点集合,包括:
如果平面P2的法向方向和所述重力方向之间的角度差小于第二角度阈值或者在第三角度阈值区间范围内,从所述当前待聚合的多个3D点中确定对应于所述平面方程PX2的3D点集合。
44.根据权利要求39所述的方法,其特征在于,所述如果所述平面方程PX2的法向方向满足以所述重力方向作为约束参数的约束条件,从所述当前待聚合的多个3D点中确定对应于所述平面方程PX2的3D点集合,包括:
如果所述平面方程PX2的法向方向满足以所述重力方向作为约束参数的约束条件,则将所述当前待聚合的多个3D点中与所述平面方程PX2之间的距离小于第一距离阈值并且法向方向与平面方程PX2的法向方向之间的角度差小于第四角度阈值的3D点确定为对应于所述平面方程PX2的3D点。
45.根据权利要求36所述的方法,其特征在于,所述基于所述平面方程PX1,对所述3D点云中包括的待聚合的多个3D点进行聚类,得到所述平面方程PX1对应的至少一个平面P1,包括:
基于所述平面方程PX1,确定对应于所述至少一个平面P1的至少一个第一连通子集合;
基于所述至少一个平面P1中每个平面P1对应的第一连通子集合,确定所述每个平面P1的边界顶点。
46.根据权利要求45所述的方法,其特征在于,所述基于所述平面方程PX1,确定对应于所述至少一个平面P1的至少一个第一连通子集合,包括:
基于所述平面方程PX1和所述待聚合的多个3D点对应的二维2D图像坐标,确定所述至少一个第一连通子集合。
47.根据权利要求45所述的方法,其特征在于,所述基于所述至少一个平面P1中每个平面P1对应的第一连通子集合,确定所述每个平面P1的边界顶点,包括:
将所述平面包含的至少两个3D点垂直投影至所述平面方程PX1对应的二维2D坐标系,得到所述平面P1包含的至少两个3D点中每个3D点对应的2D坐标;
基于所述至少两个3D点中每个3D点对应的2D坐标,确定所述平面P1的边界顶点。
48.根据权利要求36至47任一项所述的方法,其特征在于,所述基于所述至少两个3D点中每个3D点对应的2D坐标,确定所述平面P1的边界顶点,包括:
基于所述至少两个3D顶点对应的2D坐标求解凸包多边形,得到所述平面P1的边界顶点。
49.根据权利要求37至47中任一项所述的方法,其特征在于,所述方法还包括:
从所述待聚合的多个3D点中除去与所述平面方程PX1之间的距离小于第二距离阈值的3D点,得到更新后的待聚合的多个3D点。
50.根据权利要求35至47中任一项所述的方法,其特征在于,所述方法还包括:
基于所述重力方向,确定所述当前帧的至少一个平面的属性,所述属性包括水平面或竖直面。
51.根据权利要求49所述的方法,其特征在于,所述基于所述重力方向确定至少一个平面的属性,包括:
如果所述当前帧的平面的法向方向与所述重力方向之间角度差小于第二角度阈值,则确定所述当前帧的平面的属性为水平面;和/或
如果所述当前帧的平面的法向方向与所述重力方向之间角度差在第三角度阈值区间范围内,则确定所述当前帧的平面的属性为竖直面。
52.一种电子设备,包括存储器和处理器,所述存储器存储有在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至26任一项所述平面的重建方法中的步骤,或者,所述处理器执行所述程序时实现权利要求27至51任一项所述的平面的融合方法。
53.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至26任一项所述平面的重建方法中的步骤,或者,该计算机程序被处理器执行时实现权利要求27至51任一项所述的平面的融合方法。
54.一种平面的重建装置,其特征在于,所述装置包括:
第一获取部分,用于获取输入的当前帧的三维3D点云,所述3D点云包括多个3D点;
聚类部分,用于以重力方向作为约束条件,对所述当前帧的3D点云中包括的3D点进行聚类,得到至少一个当前帧的平面,其中,所述至少一个当前帧的平面的法向方向与所述重力方向之间角度差小于第二角度阈值,和/或所述至少一个当前帧的平面的法向方向与所述重力方向之间角度差在第三角度阈值区间范围内,所述至少一个当前帧的平面包括水平面和/或竖直面,每个所述当前帧的平面包括所述多个3D点中的至少两个3D点。
55.根据权利要求54所述的装置,其特征在于,所述聚类部分,用于:
以重力方向为约束条件,基于所述当前帧的3D点云,确定平面方程PX1;
基于所述平面方程PX1,对所述3D点云中包括的3D点进行聚类,得到所述平面方程PX1对应的至少一个平面P1,其中,所述至少一个当前帧的平面包括所述至少一个平面P1。
56.根据权利要求55所述的装置,其特征在于,所述聚类部分以重力方向为约束条件,基于所述当前帧的3D点云,确定平面方程PX1,包括:
所述聚类部分以所述重力方向作为约束条件,从当前待聚合的多个3D点中确定至少一个3D点集合,每个3D点集合包含当前待聚合的多个3D点中的至少两个3D点;
所述聚类部分从至少一个3D点集合中确定3D点数目满足预设条件的候选3D点集合R;
所述聚类部分基于所述候选3D点集合R,确定平面方程PX1。
57.根据权利要求56所述的装置,其特征在于,所述预设条件包括:
所述候选3D点集合R为所述至少一个3D点集合中包含3D点数目最多的3D点集合;和/或,
所述候选3D点集合R中包含的3D点数目大于或等于预设阈值。
58.根据权利要求56所述的装置,其特征在于,所述聚类部分以所述重力方向作为约束条件,从当前待聚合的多个3D点中确定至少一个3D点集合,包括:
所述聚类部分从所述当前待聚合的多个3D点中选取第一采样点,利用选取的第一采样点拟合平面方程PX2;
如果所述平面方程PX2的法向方向满足以所述重力方向作为约束参数的约束条件,所述聚类部分从所述当前待聚合的多个3D点中确定对应于所述平面方程PX2的3D点集合。
59.根据权利要求58所述的装置,其特征在于,所述聚类部分从所述当前待聚合的多个3D点中选取第一采样点,包括:
如果采样点的当前已选取次数低于最大选取次数L,所述聚类部分从所述当前待聚合的多个3D点中选取第一采样点,其中,所述最大选取次数L是基于前一次选取的采样点得到的3D点集合中包含的3D点数量确定的。
60.根据权利要求59所述的装置,其特征在于,所述聚类部分还用于根据对应于所述平面方程PX2的3D点集合中包含的3D点数目,更新所述最大选取次数L。
61.根据权利要求58所述的装置,其特征在于,所述聚类部分从所述当前待聚合的多个3D点中选取第一采样点,包括:
所述聚类部分获取所述当前待聚合的多个3D点中每一3D点的法向方向;
所述聚类部分从所述当前待聚合的多个3D点中选取两两之间的法向方向之间的角度差小于第一角度阈值的多个3D点作为所述第一采样点。
62.根据权利要求58所述的装置,其特征在于,如果所述平面方程PX2的法向方向满足以所述重力方向作为约束参数的约束条件,所述聚类部分从所述当前待聚合的多个3D点中确定对应于所述平面方程PX2的3D点集合,包括:
如果平面P2的法向方向和所述重力方向之间的角度差小于第二角度阈值或者在第三角度阈值区间范围内,所述聚类部分从所述当前待聚合的多个3D点中确定对应于所述平面方程PX2的3D点集合。
63.根据权利要求58所述的装置,其特征在于,如果所述平面方程PX2的法向方向满足以所述重力方向作为约束参数的约束条件,所述聚类部分从所述当前待聚合的多个3D点中确定对应于所述平面方程PX2的3D点集合,包括:
如果所述平面方程PX2的法向方向满足以所述重力方向作为约束参数的约束条件,所述聚类部分将所述当前待聚合的多个3D点中与所述平面方程PX2之间的距离小于第一距离阈值并且法向方向与平面方程PX2的法向方向之间的角度差小于第四角度阈值的3D点确定为对应于所述平面方程PX2的3D点。
64.根据权利要求55至63中任一项所述的装置,其特征在于,所述聚类部分基于所述平面方程PX1,对所述3D点云中包括的待聚合的多个3D点进行聚类,得到所述平面方程PX1对应的至少一个平面P1,包括:
所述聚类部分基于所述平面方程PX1,确定对应于所述至少一个平面P1的至少一个第一连通子集合;
所述聚类部分基于所述至少一个平面P1中每个平面P1对应的第一连通子集合,确定所述每个平面P1的边界顶点。
65.根据权利要求64所述的装置,其特征在于,所述聚类部分基于所述平面方程PX1,确定对应于所述至少一个平面P1的至少一个第一连通子集合,包括:
所述聚类部分基于所述平面方程PX1和所述待聚合的多个3D点对应的二维2D图像坐标,确定所述至少一个第一连通子集合。
66.根据权利要求64所述的装置,其特征在于,所述聚类部分基于所述至少一个平面P1中每个平面P1对应的第一连通子集合,确定所述每个平面P1的边界顶点,包括:
所述聚类部分将所述平面包含的至少两个3D点垂直投影至所述平面方程PX1对应的二维2D坐标系,得到所述平面P1包含的至少两个3D点中每个3D点对应的2D坐标;
所述聚类部分基于所述至少两个3D点中每个3D点对应的2D坐标,确定所述平面P1的边界顶点。
67.根据权利要求66所述的装置,其特征在于,所述聚类部分基于所述至少两个3D点中每个3D点对应的2D坐标,确定所述平面P1的边界顶点,包括:
所述聚类部分基于所述至少两个3D顶点对应的2D坐标求解凸包多边形,得到所述平面P1的边界顶点。
68.根据权利要求65所述的装置,其特征在于,所述聚类部分还用于从所述待聚合的多个3D点中除去与所述平面方程PX1之间的距离小于第二距离阈值的3D点,得到更新后的待聚合的多个3D点。
69.根据权利要求54至63中任一项所述的装置,其特征在于,所述聚类部分还用于基于所述重力方向,确定所述当前帧的至少一个平面的属性,所述属性包括水平面或竖直面。
70.根据权利要求69所述的装置,其特征在于,所述聚类部分基于所述重力方向确定至少一个平面的属性,包括:
如果所述当前帧的平面的法向方向与所述重力方向之间角度差小于第二角度阈值,则所述聚类部分确定所述当前帧的平面的属性为水平面;和/或
如果所述当前帧的平面的法向方向与所述重力方向之间角度差在第三角度阈值区间范围内,则所述聚类部分确定所述当前帧的平面的属性为竖直面。
71.根据权利要求69所述的装置,其特征在于,所述装置还包括融合部分,用于对所述至少一个当前帧的平面P与已有平面列表中的平面Pr进行融合,其中,所述已有平面列表包含至少一个除所述当前帧之外的其他帧对应的平面。
72.根据权利要求71所述的装置,其特征在于,所述聚类部分对所述至少一个当前帧的平面P与已有平面列表中的平面Pr进行融合,包括:
所述聚类部分确定所述平面P与所述平面Pr的连通关系;
所述聚类部分根据所述连通关系,将所述平面P与所述平面Pr中相互连通的平面融合成新的平面。
73.根据权利要求72所述的装置,其特征在于,所述聚类部分确定所述平面P与所述平面Pr的连通关系,包括:
如果所述平面P的顶点投影与所述平面Pr相交,并且平面P的顶点至平面Pr的距离与平面Pr的顶点至平面P的距离均小于或等于第三距离阈值,所述聚类部分确定平面P与平面Pr相连通。
74.根据权利要求73所述的装置,其特征在于,所述聚类部分确定所述平面P与所述平面Pr的连通关系,包括:
所述聚类部分利用所述平面P和所述平面Pr所包含的3D点集合,拟合平面Pn;
如果所述平面Pn满足以重力方向作为约束参数的约束条件,所述聚类部分确定所述平面P与所述平面Pr相连通。
75.根据权利要求73所述的装置,其特征在于,所述聚类部分确定所述平面P与所述平面Pr的连通关系,还包括:
如果所述平面Pn与所述平面P的属性相同,所述聚类部分确定平面P与平面Pr相连通。
76.根据权利要求75所述的装置,其特征在于,所述聚类部分确定所述平面P与所述平面Pr的连通关系,还包括:
如果所述当前帧的平面P的属性与所述平面Pr的属性不相同,或者,所述平面P的顶点投影与所述平面Pr不相交,或者,如果所述平面Pn的法向方向与所述重力方向之间的角度差不小于第二角度阈值或者不在第三角度阈值区间范围内,或者,所述平面Pn与所述平面P的属性不相同,所述聚类部分确定平面P与平面Pr不连通。
77.根据权利要求74所述的装置,其特征在于,所述聚类部分利用所述平面P和所述平面Pr所包含的3D点集合,拟合平面Pn,包括:
如果所述平面P与所述平面Pr的法向角度差在第一角度阈值以内,所述聚类部分将所述平面P的顶点垂直投影至Pr的坐标系内,获得所述平面P的顶点对应的2D多边形;
如果所述平面P的顶点对应的2D多边形与平面Pr的顶点对应的多边形相交,所述聚类部分利用平面P和平面Pr所包含的内点集合,拟合平面Pn。
78.根据权利要求72所述的装置,其特征在于,所述聚类部分根据所述连通关系,将所述平面P与所述平面Pr中相互连通的平面融合成新的平面,包括:
所述聚类部分根据所述连通关系,确定所述平面P和所述平面Pr构成的第二连通子集合;
所述聚类部分基于所述第二连通子集合中的平面包含的3D点,拟合平面方程PX3;
所述聚类部分基于所述平面方程PX3,确定融合的新平面。
79.根据权利要求72所述的装置,其特征在于,所述聚类部分还用于基于对所述平面P与所述平面Pr进行融合的结果,更新所述已有平面列表。
80.一种平面的融合装置,其特征在于,所述装置包括:
第二获取部分,用于获取至少一个当前帧的平面P与已有平面列表中的平面Pr,其中,所述已有平面列表包含至少一个除所述当前帧之外的其他帧对应的平面;所述当前帧的平面P通过以重力方向作为约束条件,对所述当前帧的3D点云中包括的3D点进行聚类得到;所述当前帧的平面P的法向方向与所述重力方向之间角度差小于第二角度阈值,和/或所述当前帧的平面P的法向方向与所述重力方向之间角度差在第三角度阈值区间范围内;
确定部分,用于确定所述平面P与所述平面Pr的连通关系;
融合部分,用于根据所述连通关系,将所述平面P与所述平面Pr中相互连通的平面融合成新的平面。
81.根据权利要求80所述的装置,其特征在于,所述确定部分确定所述平面P与所述平面Pr的连通关系,包括:
如果所述平面P的顶点投影与所述平面Pr相交,并且平面P的顶点至平面Pr的距离与平面Pr的顶点至平面P的距离均小于或等于第三距离阈值,所述确定部分确定平面P与平面Pr相连通。
82.根据权利要求81所述的装置,其特征在于,所述确定部分确定所述平面P与所述平面Pr的连通关系,包括:
所述确定部分利用所述平面P和所述平面Pr所包含的3D点集合,拟合平面Pn;
如果所述平面Pn满足以重力方向作为约束参数的约束条件,所述确定部分确定所述平面P与所述平面Pr相连通。
83.根据权利要求81所述的装置,其特征在于,所述确定部分确定所述平面P与所述平面Pr的连通关系,还包括:
如果所述平面Pn与所述平面P的属性相同,所述确定部分确定平面P与平面Pr相连通。
84.根据权利要求80所述的装置,其特征在于,所述确定部分确定所述平面P与所述平面Pr的连通关系,还包括:
如果所述当前帧的平面P的属性与所述平面Pr的属性不相同,或者,所述平面P的顶点投影与所述平面Pr不相交,或者,如果所述平面Pn的法向方向与所述重力方向之间的角度差不小于第二角度阈值或者不在第三角度阈值区间范围内,或者,所述平面Pn与所述平面P的属性不相同,所述确定部分确定平面P与平面Pr不连通。
85.根据权利要求82所述的装置,其特征在于,所述确定部分利用平面P和平面Pr所包含的3D点集合,拟合平面Pn,包括:
如果所述平面P与所述平面Pr的法向角度差在第一角度阈值以内,所述确定部分将所述平面P的顶点垂直投影至Pr的坐标系内,获得所述平面P的顶点对应的2D多边形;
如果所述平面P的顶点对应的2D多边形与平面Pr的顶点对应的多边形相交,所述确定部分利用平面P和平面Pr所包含的内点集合,拟合平面Pn。
86.根据权利要求80所述的装置,所述融合部分,用于:
根据所述连通关系,确定所述平面P和所述平面Pr构成的第二连通子集合;
基于所述第二连通子集合中的平面包含的3D点,拟合平面方程PX3;
基于所述平面方程PX3,确定融合的新平面。
87.根据权利要求80所述的装置,其特征在于,所述融合部分,用于基于对所述平面P与所述平面Pr进行融合的结果,更新所述已有平面列表。
88.根据权利要求80所述的装置,所述装置包括:
第一获取部分,用于获取输入的当前帧的三维3D点云,所述3D点云包括多个3D点;
聚类部分,用于以重力方向作为约束条件,对所述当前帧的3D点云中包括的3D点进行聚类,得到至少一个当前帧的平面P,其中,所述至少一个当前帧的平面包括水平面和/或竖直面,每个当前帧的平面包括所述多个3D点中的至少两个3D点。
89.根据权利要求88所述的装置,其特征在于,所述聚类部分,用于以重力方向为约束条件,基于所述当前帧的3D点云,确定平面方程PX1;
基于所述平面方程PX1,对所述3D点云中包括的3D点进行聚类,得到所述平面方程PX1对应的至少一个平面P1,其中,所述至少一个当前帧的平面包括所述至少一个平面P1。
90.根据权利要求89所述的装置,其特征在于,所述聚类部分以重力方向为约束条件,基于所述当前帧的3D点云,确定平面方程PX1,包括:
所述聚类部分以所述重力方向作为约束条件,从当前待聚合的多个3D点中确定至少一个3D点集合,每个3D点集合包含当前待聚合的多个3D点中的至少两个3D点;
从至少一个3D点集合中确定3D点数目满足预设条件的候选3D点集合R;
基于所述候选3D点集合R,确定平面方程PX1。
91.根据权利要求90所述的装置,其特征在于,所述预设条件包括:
所述候选3D点集合R为所述至少一个3D点集合中包含3D点数目最多的3D点集合;和/或,
所述候选3D点集合R中包含的3D点数目大于或等于预设阈值。
92.根据权利要求90所述的装置,其特征在于,所述聚类部分以所述重力方向作为约束条件,从当前待聚合的多个3D点中确定至少一个3D点集合,包括:
所述聚类部分从所述当前待聚合的多个3D点中选取第一采样点,利用选取的第一采样点拟合平面方程PX2;
如果所述平面方程PX2的法向方向满足以所述重力方向作为约束参数的约束条件,所述聚类部分从所述当前待聚合的多个3D点中确定对应于所述平面方程PX2的3D点集合。
93.根据权利要求92所述的装置,其特征在于,所述聚类部分从所述当前待聚合的多个3D点中选取第一采样点,包括:
如果采样点的当前已选取次数低于最大选取次数L,所述聚类部分从所述当前待聚合的多个3D点中选取第一采样点,其中,所述最大选取次数L是基于前一次选取的采样点得到的3D点集合中包含的3D点数量确定的。
94.根据权利要求93所述的装置,其特征在于,所述聚类部分,还用于根据对应于所述平面方程PX2的3D点集合中包含的3D点数目,更新所述最大选取次数L。
95.根据权利要求92所述的装置,其特征在于,所述聚类部分从所述当前待聚合的多个3D点中选取第一采样点,包括:
所述聚类部分获取所述当前待聚合的多个3D点中每一3D点的法向方向;
所述聚类部分从所述当前待聚合的多个3D点中选取两两之间的法向方向之间的角度差小于第一角度阈值的多个3D点作为所述第一采样点。
96.根据权利要求92所述的装置,其特征在于,所述聚类部分如果所述平面方程PX2的法向方向满足以所述重力方向作为约束参数的约束条件,从所述当前待聚合的多个3D点中确定对应于所述平面方程PX2的3D点集合,包括:
如果平面P2的法向方向和所述重力方向之间的角度差小于第二角度阈值或者在第三角度阈值区间范围内,从所述当前待聚合的多个3D点中确定对应于所述平面方程PX2的3D点集合。
97.根据权利要求92所述的装置,所述聚类部分如果所述平面方程PX2的法向方向满足以所述重力方向作为约束参数的约束条件,从所述当前待聚合的多个3D点中确定对应于所述平面方程PX2的3D点集合,包括:
如果所述平面方程PX2的法向方向满足以所述重力方向作为约束参数的约束条件,则所述聚类部分将所述当前待聚合的多个3D点中与所述平面方程PX2之间的距离小于第一距离阈值并且法向方向与平面方程PX2的法向方向之间的角度差小于第四角度阈值的3D点确定为对应于所述平面方程PX2的3D点。
98.根据权利要求89所述的装置,所述聚类部分基于所述平面方程PX1,对所述3D点云中包括的待聚合的多个3D点进行聚类,得到所述平面方程PX1对应的至少一个平面P1,包括:
基于所述平面方程PX1,所述聚类部分确定对应于所述至少一个平面P1的至少一个第一连通子集合;
基于所述至少一个平面P1中每个平面P1对应的第一连通子集合,所述聚类部分确定所述每个平面P1的边界顶点。
99.根据权利要求98所述的装置,其特征在于,所述聚类部分基于所述平面方程PX1,确定对应于所述至少一个平面P1的至少一个第一连通子集合,包括:
所述聚类部分基于所述平面方程PX1和所述待聚合的多个3D点对应的二维2D图像坐标,确定所述至少一个第一连通子集合。
100.根据权利要求98所述的装置,其特征在于,所述聚类部分基于所述至少一个平面P1中每个平面P1对应的第一连通子集合,确定所述每个平面P1的边界顶点,包括:
所述聚类部分将所述平面包含的至少两个3D点垂直投影至所述平面方程PX1对应的二维2D坐标系,得到所述平面P1包含的至少两个3D点中每个3D点对应的2D坐标;
所述聚类部分基于所述至少两个3D点中每个3D点对应的2D坐标,确定所述平面P1的边界顶点。
101.根据权利要求89至100任一项所述的装置,其特征在于,所述聚类部分基于所述至少两个3D点中每个3D点对应的2D坐标,确定所述平面P1的边界顶点,包括:所述聚类部分基于所述至少两个3D顶点对应的2D坐标求解凸包多边形,得到所述平面P1的边界顶点。
102.根据权利要求90至100中任一项所述的装置,其特征在于,所述聚类部分,用于从所述待聚合的多个3D点中除去与所述平面方程PX1之间的距离小于第二距离阈值的3D点,得到更新后的待聚合的多个3D点。
103.根据权利要求89至100中任一项所述的装置,其特征在于,所述聚类部分,还用于基于所述重力方向,确定所述当前帧的至少一个平面的属性,所述属性包括水平面或竖直面。
104.根据权利要求103所述的装置,其特征在于,所述聚类部分,还用于:
如果所述当前帧的平面的法向方向与所述重力方向之间角度差小于第二角度阈值,则确定所述当前帧的平面的属性为水平面;和/或
如果所述当前帧的平面的法向方向与所述重力方向之间角度差在第三角度阈值区间范围内,则确定所述当前帧的平面的属性为竖直面。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810107923.5A CN108205820B (zh) | 2018-02-02 | 2018-02-02 | 平面的重建方法、融合方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810107923.5A CN108205820B (zh) | 2018-02-02 | 2018-02-02 | 平面的重建方法、融合方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108205820A CN108205820A (zh) | 2018-06-26 |
CN108205820B true CN108205820B (zh) | 2022-04-01 |
Family
ID=62606547
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810107923.5A Active CN108205820B (zh) | 2018-02-02 | 2018-02-02 | 平面的重建方法、融合方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108205820B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021073562A1 (zh) * | 2019-10-17 | 2021-04-22 | 贝壳找房(北京)科技有限公司 | 多点云平面融合方法及装置 |
CN112731863A (zh) * | 2020-12-30 | 2021-04-30 | 武汉中观自动化科技有限公司 | 一种鞋模表面打磨轨迹生成方法、存储介质及*** |
CN113538694A (zh) * | 2021-07-06 | 2021-10-22 | 海信视像科技股份有限公司 | 一种平面重建方法及显示设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1369807A1 (en) * | 2002-06-06 | 2003-12-10 | Centre National De La Recherche Scientifique (Cnrs) | Process for identifying similar 3d substructures onto 3d atomic structures |
CN102034104A (zh) * | 2010-12-10 | 2011-04-27 | 中国人民解放军国防科学技术大学 | 三维点云中基于随机采样一致性的特征线检测方法 |
CN103514598A (zh) * | 2013-07-20 | 2014-01-15 | 北京航空航天大学 | 一种建筑sfm点云的自动分割方法 |
CN103645480A (zh) * | 2013-12-04 | 2014-03-19 | 北京理工大学 | 基于激光雷达和图像数据融合的地形地貌特征构建方法 |
US9311756B2 (en) * | 2013-02-01 | 2016-04-12 | Apple Inc. | Image group processing and visualization |
-
2018
- 2018-02-02 CN CN201810107923.5A patent/CN108205820B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1369807A1 (en) * | 2002-06-06 | 2003-12-10 | Centre National De La Recherche Scientifique (Cnrs) | Process for identifying similar 3d substructures onto 3d atomic structures |
CN102034104A (zh) * | 2010-12-10 | 2011-04-27 | 中国人民解放军国防科学技术大学 | 三维点云中基于随机采样一致性的特征线检测方法 |
US9311756B2 (en) * | 2013-02-01 | 2016-04-12 | Apple Inc. | Image group processing and visualization |
CN103514598A (zh) * | 2013-07-20 | 2014-01-15 | 北京航空航天大学 | 一种建筑sfm点云的自动分割方法 |
CN103645480A (zh) * | 2013-12-04 | 2014-03-19 | 北京理工大学 | 基于激光雷达和图像数据融合的地形地貌特征构建方法 |
Non-Patent Citations (2)
Title |
---|
An efficient large deformation method using domain decomposition;Jin Huang等;《Computers & Graphics 》;20060831;第927-935页 * |
基于图像序列的交互式快速建模***;姜翰青等;《计算机辅助设计与图形学学报》;20080930;第20卷(第9期);第1196-1203页 * |
Also Published As
Publication number | Publication date |
---|---|
CN108205820A (zh) | 2018-06-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108961395B (zh) | 一种基于拍照重建三维空间场景的方法 | |
CN110889890B (zh) | 图像处理方法及装置、处理器、电子设备及存储介质 | |
CN109242961B (zh) | 一种脸部建模方法、装置、电子设备和计算机可读介质 | |
CN106875431B (zh) | 具有移动预测的图像追踪方法及扩增实境实现方法 | |
WO2018077071A1 (zh) | 一种全景图像的生成方法及装置 | |
WO2018014601A1 (zh) | 方位跟踪方法、实现增强现实的方法及相关装置、设备 | |
CN108205820B (zh) | 平面的重建方法、融合方法、装置、设备及存储介质 | |
US20140192055A1 (en) | Method and apparatus for displaying video on 3d map | |
WO2022237249A1 (zh) | 三维重建方法、装置和***、介质及计算机设备 | |
WO2015188666A1 (zh) | 三维视频滤波方法和装置 | |
WO2023024441A1 (zh) | 模型重建方法及相关装置、电子设备和存储介质 | |
WO2022237026A1 (zh) | 平面信息检测方法及*** | |
CN106843790B (zh) | 一种信息展示***和方法 | |
CN115690382A (zh) | 深度学习模型的训练方法、生成全景图的方法和装置 | |
CN108961423A (zh) | 虚拟信息处理方法、装置、设备及存储介质 | |
CN114782647A (zh) | 一种模型重建方法、装置、设备及存储介质 | |
CN111161138B (zh) | 用于二维全景图像的目标检测方法、装置、设备、介质 | |
CN112270709A (zh) | 地图构建方法及装置、计算机可读存储介质和电子设备 | |
JP2013097782A (ja) | 画像ワープ方法及びそのコンピュータプログラム製品 | |
CN111932446B (zh) | 三维全景地图的构建方法及装置 | |
WO2019042028A1 (zh) | 全视向的球体光场渲染方法 | |
CN111091117B (zh) | 用于二维全景图像的目标检测方法、装置、设备、介质 | |
CN112604279A (zh) | 一种特效显示方法及装置 | |
CN115311414A (zh) | 基于数字孪生的实景渲染方法、装置及相关设备 | |
CN109166176A (zh) | 三维人脸图像的生成方法与装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |