首页> 中国专利> 一种基于在线结构分析的室内场景实时重建方法

一种基于在线结构分析的室内场景实时重建方法

摘要

本发明公开了一种基于在线结构分析的室内场景实时重建方法,该方法采用深度相机作为输入,对每一帧输入的深度图进行逐像素的标记,将深度图中的各个平面及物体分别标记出来,利用标记将对应的平面和物体进行更新,然后合成新的深度图用于下一帧摄像机的位置的计算;本发明通过结构信息对KinectFusion进行了增强,能够将其中的平面和物体进行分割,通过实时分析,对结构信息进行更新,使得用户能够操纵整个扫描过程,减少了扫描的工作量;通过对平面结构,平面之间的相互关系,重复物体进行分析,能够进一步提高系统的稳定性,并使得结果更加精确。

著录项

  • 公开/公告号CN103942832A

    专利类型发明专利

  • 公开/公告日2014-07-23

    原文格式PDF

  • 申请/专利权人 浙江大学;

    申请/专利号CN201410146583.9

  • 发明设计人 周昆;张译中;许威威;

    申请日2014-04-11

  • 分类号G06T17/00(20060101);G06T7/00(20060101);

  • 代理机构33200 杭州求是专利事务所有限公司;

  • 代理人邱启旺

  • 地址 310058 浙江省杭州市西湖区余杭塘路866号

  • 入库时间 2023-12-17 01:00:24

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-07-06

    授权

    授权

  • 2014-08-20

    实质审查的生效 IPC(主分类):G06T17/00 申请日:20140411

    实质审查的生效

  • 2014-07-23

    公开

    公开

说明书

技术领域

本发明设计室内场景在线分析与实时重建技术,尤其涉及一种基于在线结 构分析的室内场景实时重建方法。

背景技术

本发明相关的研究背景简述如下:

1.基于深度相机的3D场景恢复

深度相机的一大优势就是其实时获取深度图像的能力,因此带动了深度相 机在3D场景恢复中应用的普及。有代表性的算法是KinectFusion,通过GPU加 速将深度图实时累加到均匀体素当中,并通过体素进行摄像机位置计算(Izadi, Shahram,et al."KinectFusion:real-time3D reconstruction and interaction using a  moving depth camera."Proceedings of the24th annual ACM symposium on User  interface software and technology.ACM,2011)。为了使恢复的场景不受体素尺寸 的限制,可以采用移动体素的方法将不处于工作区域的体素换出(Roth,Henry, and Marsette Vona."Moving Volume KinectFusion."BMVC.2012.;Whelan, Thomas,et al."Robust tracking for real-time dense RGB-D mapping with  Kintinuous."(2012).)。还可以通过建立空间层次结构(Chen,Jiawen,Dennis  Bautembach,and Shahram Izadi."Scalable real-time volumetric surface  reconstruction."ACM Transactions on Graphics(TOG)32.4(2013):113.),或者空间 哈希表实现大空间的存储(,M.,,M.,Izadi,S.,&Stamminger,M. (2013).Real-time3D reconstruction at scale using voxel hashing.ACM Transactions  on Graphics(TOG),32(6),169.)。

尽管这些算法能够实时扫描高精度的3D数据,然而仍然受到深度相机输出 噪声很大的影响,其精度远不足以主动形成封闭回路。因此便出现了离线计算 的方法,对整个摄像机轨迹进行全局优化(Zhou,Q.Y.,&Koltun,V.(2013).Dense  scene reconstruction with points of interest.ACM Transactions on Graphics(TOG), 32(4),112.)。还有一种在扫描场景中进行回路检测的方法(Du,H.,Henry,P.,Ren, X.,Cheng,M.,Goldman,D.B.,Seitz,S.M.,&Fox,D.(2011,September). Interactive3D modeling of indoor environments with a consumer depth camera.In  Proceedings of the13th international conference on Ubiquitous computing(pp. 75-84).ACM.)。这些方法都没有利用结构信息,因此恢复精度依然会受到限制。

2.结构分析

在典型的室内场景中,结构化信息大量存在,比如人造的平面和立方体, 平面之间的垂直或平行关系,以及重复出现的物体。这些结构化信息可以帮助 3D重建,并提高重建精度。

曼哈顿平面假设已经被用于基于图像的室内场景深度恢复(Furukawa,Y., Curless,B.,Seitz,S.M.,&Szeliski,R.(2009,June).Manhattan-world stereo.In Computer Vision and Pattern Recognition,2009.CVPR2009.IEEE Conference on  (pp.1422-1429).IEEE.),还被用于室内场景3维布局,比如计算房间和方块形物 体的形状和位置(Lee,D.C.,Hebert,M.,&Kanade,T.(2009,June).Geometric  reasoning for single image structure recovery.In Computer Vision and Pattern  Recognition,2009.CVPR2009.IEEE Conference on(pp.2136-2143).IEEE;Lee,D. C.,Gupta,A.,Hebert,M.,&Kanade,T.(2010,November).Estimating Spatial  Layout of Rooms using Volumetric Reasoning about Objects and Surfaces.In NIPS  (Vol.1,No.2,p.3);Del Pero,L.,Bowdish,J.,Fried,D.,Kermgard,B.,Hartley,E., &Barnard,K.(2012,June).Bayesian geometric modeling of indoor scenes.In  Computer Vision and Pattern Recognition(CVPR),2012IEEE Conference on(pp. 2719-2726).IEEE.)。在室外场景恢复中,可以从多视角利用图分割方法恢复出 平面(Tomono,M.(2012,May).Image-based planar reconstruction for dense robotic  mapping.In Robotics and Automation(ICRA),2012IEEE International Conference  on(pp.3005-3012).IEEE.)。这样可以很好地分割出室外平面物体,例如道路, 人行道以及建筑平面。然而这些方法的输入都是图像,并且都是非实时的应用。

平面检测已经被用于减小摄像机追踪的误差,并用于物体层次的场景分析 (Taguchi,Y.,Jian,Y.D.,Ramalingam,S.,&Feng,C.Point-Plane SLAM for  Hand-Held3D Sensors;Ataer-Cansizoglu,E.,Taguchi,Y.,Ramalingam,S.,&Garaas, T.(2013).Tracking an RGB-D Camera Using Points and Planes;Dou,M.,Guan,L., Frahm,J.M.,&Fuchs,H.(2013,January).Exploring high-level plane primitives for  indoor3d reconstruction with a hand-held RGB-D camera.In Computer  Vision-ACCV2012Workshops(pp.94-108).Springer Berlin Heidelberg.)。但是这 些都是基于点云的表达,无法直接集成到KinectFusion的框架中去,因此也无法 通过体素来对深度图进行滤波。

由于室内场景相互遮挡非常严重,并且输入的深度图存在很大的噪声,直 接恢复高精度的3D模型非常困难,因此出现了物体层次的结构分析,将采集的 深度与模型库中的数据进行匹配,从而恢复出高精度的模型(Shao,T.,Xu,W., Zhou,K.,Wang,J.,Li,D.,&Guo,B.(2012).An interactive approach to semantic  modeling of indoor scenes with an RGBD camera.ACM Transactions on Graphics  (TOG),31(6),136;Nan,L.,Xie,K.,&Sharf,A.(2012).A search-classify approach  for cluttered indoor scene understanding.ACM Transactions on Graphics(TOG), 31(6),137.)。重复物体也能够被检测出来,用于提高大场景的恢复速度(Kim,Y. M.,Mitra,N.J.,Yan,D.M.,&Guibas,L.(2012).Acquiring3D indoor environments  with variability and repetition.ACM Transactions on Graphics(TOG),31(6),138.)。

发明内容

本发明的目的在于针对现有技术的不足,提供一种基于在线结构分析的室 内场景实时重建方法。

本发明的目的是通过以下技术方案来实现的:一种基于在线结构分析的室 内场景实时重建方法,包括如下步骤:

(1)体数据融合:首先根据上一帧深度图和摄像机位置,用ICP计算当前 帧的摄像机位置,将当前帧深度图融合到体数据中去,并从当前帧的摄像机位 置重新计算当前视点下体素隐式曲面的深度图,并从体数据中读出每一个体素 的ID值,这个ID包含每一个体素的对应的平面或物体;

(2)平面像素标记:对每一个像素,根据从体数据中读出的ID值,标记 出已知平面,然后从未标记为平面的像素中识别出新的平面并进行标记;

(3)物体像素标记:对所有还没有被标记为平面的像素,根据从体数据中 读出的ID值,标记出已知物体,然后从未标记为平面或物体的像素中识别出新 的物体并进行标记;

(4)平面边界点标记:找出所有平面的边界点,记录下这些边界点对应的 平面及空间坐标;

(5)场景数据更新:根据从当前帧标记出的平面像素,以及平面的边界点, 更新平面方程及平面的边界,或创建新的平面;根据平面的相互关系,对平面 进一步修整;根据从当前帧标记出的物体像素,更新物体的包围盒,并搜索重 复物体;最后将当前帧所有的标记都写入体素中,并根据标记合成出新的深度 图,把合成的深度图用于下一帧摄像机位置计算。

本发明的有益效果是,通过结构信息对KinectFusion进行了增强,能够将其 中的平面和物体进行分割,通过实时分析对结构信息进行更新,使得用户能够 操纵整个扫描过程,减少了扫描的工作量。通过对平面结构,平面之间的相互 关系,重复物体进行分析,可进一步提高系统的稳定性,并使得结果更加精确。

附图说明

图1是本发明的算法流程图;

图2是本发明的系统界面图,图中,(a)为当前视点体素深度图,(b)为 当前视点重建的模型,(c)为用户观测视点重建的模型;

图3是本发明对深度图进行标记的过程,图中,(a)为观测到的深度图,(b) 为ray casting直接得到的ID图,(c)为平面标记出之后的ID图,(d)为物 体标记出之后的ID图;

图4是用KinectFusion扫描房间的结果图;

图5是本发明扫描图4所示的房间的结果图;

图6是本发明扫描一个140m2房间的结果图。

具体实施方式

本发明的核心是通过深度相机,在深度图上标记出平面和物体,进而恢复 出3D室内场景。本发明一种基于在线结构分析的室内场景实时重建方法,包括 如下步骤:

1.体数据融合:首先根据上一帧深度图和摄像机位置,用ICP计算当前帧 的摄像机位置,将当前帧深度图融合到体数据中去,并从当前帧的摄像机位置 重新计算当前视点下体素隐式曲面的深度图,并从体数据中读出每一个体素的 ID值,这个ID包含每一个体素的对应的平面或物体。

本发明对采用空间哈希结构的KinectFusion进行了扩展。首先将当前采集到 的深度图融入体素中,然后从体数据中读出滤波后的深度图,并读出对应体素 的ID值。体数据采用空间哈希结构来存储,每个体素包含一个16位半浮点数 表示的距离值,一个16位短整数表示的ID,三个字符表示的颜色,一个字符表 示的权重,每个体素共8个字节。8*8*8个体素构成一块,每一块用一个哈希值 来索引,只有靠近物体表面的块,其对应的空间才会被申请,并将这一块的索 引插入哈希表。

每当获取一张新的深度图,首先计算当前这一帧摄像机的坐标。分别从当 前深度图和上一帧合成的深度图计算出当前帧的点云和上一帧的点云,通过ICP 计算出当前帧相对于上一帧的变换矩阵,将这一变换矩阵乘以上一帧的摄像机 变换矩阵,即可得到当前帧的摄像机变换矩阵,即摄像机坐标。上一帧摄像机 变换矩阵作为当前帧摄像机变换矩阵的初始估计。将当前帧点云用估计出的变 换矩阵投影到屏幕上,投影像素对应点云中的点即为这一点的对应点对。ICP对 应点对的权重根据像素的类型而不同,平面像素的权重大于物体像素的权重, 而且平面越大,权重越大。第一帧的摄像机变换矩阵设为单位矩阵。

计算出当前帧摄像机坐标之后,根据深度图对体素进行更新。对于每一个 落在摄像机视锥中的体素,如果体素中心点投影到屏幕上的深度与当前获取的 深度图对应像素的深度值之差小于一个阈值,则将该体素存储的距离值及权重, 用在线平均法进行更新。

最后计算当前摄像机坐标下,体素隐式曲面表示的深度图。从摄像机原点 向每一个像素的方向发射射线,利用ray casting的方法找出射线与隐式曲面的交 点,每一点的深度构成体素中隐式曲面的深度图。根据交点的位置计算出包含 该交点体素的编号,并从体素中读出ID,构成一张ID图。

2.平面像素标记:对每一个像素,根据从体数据中读出的ID值,标记出 已知平面,然后从未标记为平面的像素中识别出新的平面并进行标记。

2.1已知平面的标记

在这一步中,我们判断ID图上的每个像素是否属于一个已知平面。由于一 部分像素已经在ID图中被标记出来,因此方法就是从已经被标记好的像素开始 扩散,对尚未标记的像素进行标记。另一方面,上一步中标记的像素受体素精 度影响并不能够保证完全正确,因此对于像素距离平面超过一定阈值的像素, 需要对其重新标记。

为了利用已知的平面信息,我们将已经检测出的平面的边界进行扩大,并 对其光栅化,得到当前摄像机已知平面的深度图及ID图。具体来说,对于一个 已知平面,首先将其二维的包围盒沿着主轴方向扩大,然后将平面以细分网格 的形式光栅化。对于面积超过一定值的平面,如地面或墙面,包围盒扩大40cm, 其他平面扩大4cm。

接下来通过两次扫描,对尚未进行标记的像素进行标记。第一次扫描,比 较每个像素ray casting得到的深度与光栅化得到的深度。如果两幅深度图上同一 像素深度值只差小于一个阈值,则进一步检测ray casting得到的点到平面的距离 以及ray casting得到的这一点法线方向与平面法向的角度差。如果它们都小于一 定的阈值,则这一像素的ID被设为光栅化的ID图对应像素的ID。这一次扫描 迅速标记出了属于已知平面的大片区域,并且区域之间在图像上可以不连续。 第二次扫描通过广度优先搜索扩大第一次扫描中已经标记出的平面范围。每个 像素能够被标记的条件与第一次扫描相同,只是法向夹角的阈值更大,以适应 深度图的噪声。第二次扫描使得被标记的区域扩大,但区域之间在图像上保持 连续。

2.2新平面的标记

当已知平面都被标记出来之后,再从还未被标记的像素中检测新的平面。 这一过程包括两步。第一步通过相邻的四个像素,计算每一个像素的平均曲率。 如果计算出的曲率大于一个阈值,或者四个相邻像素中有任何一个不是正常深 度的像素,则这个像素被标记为“分界”像素。

第二步在尚未标记的像素中随机选择一个种子像素,然后通过四邻接的深 度优先搜索填充。如果一个像素的相邻像素尚未被标记,并且这一像素的法向 与平面法向角度差小于一个阈值,则这个相邻像素也被加入平面中来。平面的 初始法向设为随机选择像素的法向,每有新的像素加入到平面中来,平面法向 就被更新为这些像素的平均法向。当没有更多的像素能够被加入到平面中,搜 索才结束。如果被标记为这个平面的像素个数超过了一个阈值,则创建一个新 的平面,并且将这些像素设为这个新平面的ID。否则这些像素被认为是某个物 体的一部分,标记为特殊值。

重复这两步,直到已经没有更多的种子像素能够被选择。一个新的平面可 以从已经被标记为物体的像素上被检测出来。如果扫描刚开始只看到了平面的 边缘,这时观测到的面积还达不到构成平面的阈值,这是平面就会被当做物体。 当从物体上检测出平面的现象发生时,这个物体将会被移除,待平面被标记出 来之后,剩余部分再重新标记为物体。

3.物体像素标记:对所有还没有被标记为平面的像素,根据从体数据中读 出的ID值,标记出已知物体,然后从未标记为平面或物体的像素中识别出新的 物体并进行标记。

当平面被标记出来之后,深度图将被分割为许多彼此独立的区域,物体将 从这些区域中被标记出来。与标记已知平面类似,从已经被标记为物体的像素 出发进行广度搜索。由于物体可以是任意形状,因此只要相邻像素的深度只差 小于一定阈值,搜索就可以扩散出去。

当已知平面、新平面、已知物体都被标记出来之后,最后检测新物体。选 择一个尚未标记的像素作为种子像素进行填充。填充方法与已知物体的标记相 同。如果标记出的像素个数大于一个阈值,则创建一个新的物体,并将这些像 素设为该物体的ID,否则将这些像素标记为特殊值。选种子像素然后填充的过 程持续,直到没有更多的种子像素能够被选择。

4.平面边界点标记:找出所有平面的边界点,记录下这些边界点对应的平 面及空间坐标。

平面边界点位于平面的边缘,用于确定平面的边界。如果一个像素属于一 个平面,而这个像素至少一个相邻像素不属于这个平面,并且该相邻像素的深 度大于平面在这一像素的深度,则这个像素是平面的边界。将一个平面所有的 边界点都标记出来,平面的边界就用这些点来拟合。

5.场景数据更新:根据从当前帧标记出的平面像素,以及平面的边界点, 更新平面方程及平面的边界,或创建新的平面。根据平面的相互关系,对平面 进一步修整。根据从当前帧标记出的物体像素,更新物体的包围盒,并搜索重 复物体。最后将当前帧所有的标记都写入体素中,并根据标记合成出新的深度 图,把合成的深度图用于下一帧摄像机位置计算。

5.1平面更新

如果一个平面在当前图像上被标记了出来,就将标记为这个平面的像素所 对应的3D点加入到这个平面的点列表中。为了限制存储空间,将平面划分为均 匀网格,每个网格中只存储距离该网格中心最近的一个点。当平面的点列表更 新之后,利用主元分析(PCA)重新计算平面方程。标记出的平面边界点加入 到平面边界点列表中,每个网格中也只存储一个边界点。如果几个平面几乎平 行,距离小于一个阈值,并且平面有重叠部分,则这几个平面应当合并为同一 个平面。我们合并这些平面的点列表及边界点列表,并且重新计算平面的边界。 这些平面在体素中也将使用相同的ID。

5.2平面边界更新

平面边界用四变形来表示,每一条边有三种类型,包围盒类型、剪切类型 以及相交类型。对于包围盒类型的边界,重新计算计算平面点列表的包围盒, 用心的包围盒替代原来的包围盒边界。对于剪切类型的边界,用到原边界距离 小于一定阈值的平面边界点重新拟合直线作为新的边界。对于相交类型的边界, 重新计算两平面的交线作为新的边界。

平面边界更新之后,检测边界类型是否有可能发生转换。如果包围盒类型 的边界周围分布了很多平面边界点,则将边界类型转换为剪切类型。如果两个 平面相交,并且交线距离平面边界小于一个阈值,则将这条边界转换为相交类 型。

5.3平面相互关系

根据平面之间的相互位置,将有相互联系的平面组合起来。

如果两个平面法相方向相反,距离小于一个阈值,并且有重叠部分,则这 两个平面构成一块平板。将一个平面的点列表和边界点列表投影到另一个平面 上并重新计算边界,新计算出来的边界作为平板的边界。平板的厚度是两个平 面之间的距离。这两个平面之后都将作为一块平板来显示。

如果两个平面法向方向相同,距离小于一个阈值,重叠区域很少而边界距 离很近,则靠前的平面是靠后的平面上的突起,突起的厚度是两个平面之间的 距离。靠前的平面之后都将作为一块延伸到后面平面的平板来显示。

如果两个平面相交,并且形状都很接近矩形,夹角为凸90度,则这两个平 面将构成一个立方体。将所有具有满足这些条件的平面对聚集在一起,并用聚 集在一起的面拟合出立方体。这些面之后都将用这个立方体来显示。

如果两个平面的夹角接近90度,则认为这两个面是相互垂直的,并将其夹 角设为90度。如果一个平面的法向与坐标轴很接近,则将这个面的法向设为与 坐标轴重合。

5.4物体更新

物体直接在体素中用ID值来表示,只需要更新物体的包围盒。如果几个物 体在深度图上相连,就把它们合并为同一个物体,将它们的ID更换为同一个ID, 包围盒重新计算。如果用户通过交互操作要抽取某一个物体的面网格,则从体 素中将ID值为这个物体的点云抽出来,然后通过Poisson表面重建的办法生成 面网格。

5.5重复物体识别

如果当前扫描的物体与之前已经抽出面网格的某个物体形状相同,我们会 将这个网格已经存在的物体直接显示在当前物体处,并让用户决定是否将采用 这个网格。如果用户对识别结果满意,这个物体将会记录下匹配物体的编号及 到匹配物体的旋转矩阵,将匹配成功的物体旋转之后直接显示在当前物体处。 匹配通过当前物体在当前视点下的点云,与已经抽取网格的物体的点云做ICP 来实现。如果ICP的误差小于一定阈值,则认为匹配成功。

5.6体素ID更新及结构化深度生成

通过ray casting深度图每一像素的深度,计算出每一像素对应体素的位置, 将新的ID图每一像素的ID写入对应体素中。如果一个像素标记为平面,则这 一像素的深度将被重新计算。计算方法是从摄像机原点往这一像素发射一条射 线,计算这条射线与该像素对应平面的交点。这一交点在摄像机中的深度将作 为新的深度。结构化的深度图将被用于下一帧摄像机坐标的计算。

实施实例

发明人在一台配备Intel I5-4430中央处理器,Nvidia GeForce GTX760显 卡的台式计算机上实现了本发明的实施实例。实践中在普通电脑上可以达到 20fps的帧速率。其中35ms用于KinectFusion,场景的在线分析只需要13ms。

发明人扫描了面积从20m2到140m2的多个房间。结果表明,在我们目前的硬 件配置上,本发明可以在较短的时间内将整个房间扫描完成,并且可以有效地解 决扫描大场景时遇到的精度较差,累积误差严重等问题。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号