基于空间拓扑关系的室内结构重建方法

文档序号:39685151发布日期:2024-10-18 13:37阅读:11来源:国知局
基于空间拓扑关系的室内结构重建方法

本发明属于室内点云场景重建,涉及一种基于空间拓扑关系的室内结构重建方法。


背景技术:

1、随着城市人口的增加和大型建筑物在当今社会的普及,人们对室内环境的最新空间布局和室内环境所包含的信息的需求越来越大。同时室内结构的建模是计算机视觉、计算机图形学、土木工程和机器人领域的重要课题。然而,原始点云数据存在布局分布复杂、建筑外形多样、杂物遮挡造成的数据缺失等问题,这都增加了室内场景三维重建的难度。


技术实现思路

1、本发明的目的是提供基于空间拓扑关系的室内结构重建方法,解决了室内家居对结构的遮挡问题,能够准确得到门窗的位置信息和形状。

2、本发明所采用的技术方案是,基于空间拓扑关系的室内结构重建方法,具体按照如下步骤实施:

3、步骤1,通过统计滤波和体素下采样将室内场景的噪声点去除并减少点云数量,然后将剩下的点云作为输入,使用优化的区域生长算法提取平面,在此基础上,提取优化后的平面边界点;

4、步骤2,判断内外边界点,然后规则化外边界点和窗户的边界点,以获得准确的门窗位置和形状,最后,使用基于扫描线的孔洞填充算法修复孔洞;

5、步骤3,计算每个平面的质心点,构造质心之间的拓扑关系,使用移动最小二乘拟合算法将点云拟合到结构模型,实现室内结构重建。

6、本发明的特点还在于,

7、步骤1具体为:

8、步骤1.1,对室内场景进行统计滤波去噪,然后进行体素下采样,得到下采样后的室内点云场景;

9、步骤1.2,将步骤1.1滤波后的室内点云作为输入,采用优化的区域生长算法提取平面;

10、步骤1.3,将步骤1.2得到的平面进行边界点提取,将提取的边界点进行排序,根据距离值去除噪点,最终得到完整的边界排序点。

11、步骤1.1具体为:

12、步骤1.1.1,设初始点云中的个数有n个,计算当前点pi(xi,yi,zi)与其邻居点nm(xm,ym,zm)之间的平均距离di,两点之间的距离为si,其标准差为δ,计算公式如式(1)和(2);

13、

14、式(2)中,si是两点之间的距离值,di为平均距离,δ为标准差;

15、步骤1.1.2,设置距离阈值dmax=di+δ·α,α是一个常数,遍历点云,若di>dmax,则该点被认为是离群点,进行剔除,反之将其保留;

16、步骤1.1.3,在步骤1.1.2统计滤波后保留的点云数据上创建一个三维体素网格,根据点云的分布情况设置体素网格的大小,然后计算每个体素的重心,并且用重心表示该体素。

17、步骤1.2具体为:

18、步骤1.2.1,对于步骤1.1下采样滤波后的室内点云中的每个点,搜索指定半径内的所有邻近点,如果邻近点数量达到设定值且分布均匀,则初步认为这些点是属于同一平面,同时利用主成分分析计算每组邻域表面的法向量,设置种子点序列和聚类数组,并将其设置为空集,计算每个点的曲率,选择曲率最小的点并加入到种子点序列中;

19、步骤1.2.2,搜索当前种子点的邻域点,若拟合曲面的法向量与种子面的法向量夹角小于设定的角度阈值,同时小于设定的曲率阈值,则将该点加入种子节点序列;

20、步骤1.2.3,重复步骤1.2.1和1.2.2直到种子点序列全部完成计算,此时一个平面区域生长结束,将区域生长结果加入到初次提取出的平面段中,对剩余点云继续进行区域生长,直到遍历完所有的点云;

21、步骤1.2.4,统计步骤1.2.3提取的所有平面内点数量,将平面数量值大于平面最小点数的平面输出,即为主平面,从主平面中任意选取一个平面,计算该平面的平面方程;

22、步骤1.2.5,从所有的点集中除去主平面,其余的点云为剩余小平面段,接着计算剩余小平面段与主平面之间的距离d,计算公式如(3),同时将主平面作为区域增长的种子点;

23、

24、式(3)中,d是点到拟合平面的距离值,ax+by+cz+d=0是拟合平面方程;

25、步骤1.2.6,计算当前种子点与小平面段的法向量的夹角θ,如果θ小于角度阈值θth且d小于距离阈值dth时,则将小平面段合并到主平面,并将小平面段从平面的数据集中删除,重复这一过程直到小平面段的点数小于设定值;

26、步骤1.2.7,从所有的点集中除去初次提取的所有平面点,剩余的点划分为非建筑物点,将非建筑物点投影到对应的主平面,将投影后的平面与主平面合并,此时的平面已经扩展到最大。

27、步骤1.3具体为:

28、步骤1.3.1,从步骤1.2得到的平面的点云数据中任选一点xi,设置滚动圆的半径为rα,并以此为直径来计算外接圆,在滚动圆直径上的两个端点,每个点xi都有两个对应的外接圆,除两个外接圆圆心点之外,若这两个外接圆中都不包含建筑物点云数据中的其他点,则将这两个点标记为该数据中的边界点;

29、步骤1.3.2,对于边界点集e中的任意一点xe,首先计算以xe为圆心,以r为半径的圆内其他点到xe点的最小距离,并将最小距离对应的点ye作为生长点,接着处理点ye,并将点xe放入边界排序点集b中,且从边界点集e中删除已选点xe;

30、步骤1.3.3,依据步骤1.3.2处理边界点集合e中的所有点,直到边界点集为空;

31、步骤1.3.4,将无规律分布的边界点进行排序,依次计算排序点集中相邻点之间的距离d=(l1,l2,...,ln),其中n为边界点的个数,记第i个点与第i+1个点之间的距离di=|pipi+1|(i=1,2,...,n-1),其中ln=|pnp1|,平均长度lj,并将距离值存储到d中;

32、步骤1.3.5,根据判断条件li和αlj的大小,α为参数,确定该处线段是否应该进行拆分,若li>αlj,则表示需要拆分,拆除后的点被视为噪点,否则,不需要拆除;

33、步骤1.3.6,将拆分后的边界排序点集重新进行分类,现有一个拆分线段为pipi+1,若pipi+1的距离值为0,则pipi+1代表的是噪声点;若pipi+1与pi+1pi+2的距离值均不为0,则依次将pipi+1的尾部和pi+1pi+2的端点之间的点排序,这样就得到完整的边界排序点。

34、步骤2具体为:

35、步骤2.1,对步骤1.3提取出的边界点进行内外边界点识别,判断这些点是包含平面轮廓和门轮廓的点还是包含窗和孔洞的边界点;

36、步骤2.2,计算内边界点的obb包围盒,根据内边界点在其包围盒的分布情况来判断当前内边界点是窗户边界点还是孔洞边界点;

37、步骤2.3,基于扫描线的孔洞填充,将平面孔洞边界投影到特征平面上,根据原始点之间的距离值将孔洞部分进行插值,从而实现孔洞的填充。

38、步骤2.1具体为:

39、步骤2.1.1,将提取到的边界点存放到边界分类点集b中,对于点集b中的任意一点a1,通过计算找到a1的最近邻的点a2边界线排序,然后继续查找a2的最近邻,以此类推,直到an找不到最近邻或者找到的最近邻距离大于设置的距离阈值时停止,将{a1,a2,...,an}标记为一类,其余点均进行本步骤以上操作,将原始边界点进行分类;

40、步骤2.1.2,任选一类边界特征点t(p1,p2,...,pn),并将其从边界分类点集b中删除,计算边界点的质心,计算以边界点构成的特征平面(ax+by+cx+d=0)的单位法向量用矩阵方程式表示为:

41、

42、步骤2.1.3,规定p1的邻域点位于边界线的右侧,任取一点p1沿着投影边界线遍历,找到它的最近邻边界点p2,计算向量计算向量和其中非边界点tp1(q1,q2,...,qm)(m<k)是从p1的k近邻中选取的;

43、步骤2.1.4,记z1为向量与的叉乘值,z2为向量与的叉乘值,设两个计量数n1=0和n2=0,根据z1和z2的值分别对n1,n2进行累加,如果大于0,n1加1;如果小于0,n2加1;

44、步骤2.1.5,如果则该边界为外边界,此时外边节点为t(p1,p2,...,pn),反之为内边界点,返回步骤2.1.1,δ为比例系数;

45、步骤2.2具体为:

46、步骤2.2.1,计算内边界点在obb包围盒的分布情况,如果80%的内边界点到obb包围盒边界的距离值分布均匀,则内边界点为窗户边界点,否则为孔洞边界点;

47、步骤2.2.2,对于外边界点和窗户边界点进行基于最小二乘法的直线拟合,去除噪声点,然后使用主成分析法求得边界点的obb包围盒,将得到的八个顶点加入到边界点中;

48、步骤2.2.3,计算边界点中相邻点之间的距离,如果距离值小于0.01,则将插入新点,得到精细边界点;

49、步骤2.2.4,进一步判断线段之间的关系,计算线点坐标中值和线方向中值来求出直线各参数的初值,并选择参照直线ll,直线表示为(pi,vi)(i=0,1,...),其它直线用li表示,如果满足式(5),认为两条直线是平行的;

50、cos(θ)>cos(δθ)||cos(θ)<cos(π-δθ)              (5)

51、如果满足式(6),则认为两条直线是垂直的,

52、cos(θ)<sin(δθ)                     (6)

53、且

54、式(6)-(7)中,θ表示参考直线与其它直线的夹角,δθ表示夹角阈值,vi表示直线的方向,vl表示参照直线的方向;

55、由于拟合后的直线长短不一,因此需要对线段进行延长或缩短,以获得闭合多边形。

56、步骤2.3具体为:

57、步骤2.3.1,计算原始点云中相邻点之间的距离d,将d作为插值间隔,然后计算孔洞投影后点的质心c、特征平面和特征平面的法向量若向量与原始点云的方向平行,则将作为x轴,与x轴逆时针垂直的向量作为y轴,特征平面的法向量为孔洞坐标系的z轴;

58、步骤2.3.2,设质心为孔洞坐标系的原点,计算向量孔洞边界点为m(p1,p2,...,pn),根据公式(8)将各投影点进行坐标转换,得到m'(p1',p'2,...,p'n),其中pi,(xi,yi,zi),

59、

60、步骤2.3.3,根据原始点云坐标系和孔洞坐标系中数据点之间的对应关系,通过公式(9)求两个坐标系的旋转平移矩阵r、t;

61、

62、式(9)中,pi,表示pi在孔洞坐标系上的投影坐标记为(xi,yi,zi),r表示3×3的旋转矩阵,t表示3×1的平移矩阵;

63、步骤2.3.4,根据lxj=[(xmax-xmin)/dj]计算扫描线的数量,并确定其方向,接着计算得到当前扫描线的方程xx=xmin+i×dj(i=1,2,...,lx-1),将当前扫描线与相邻边界点所连接成的线段进行对比,如果两个线段相交,则交点坐标为扫描线的端点坐标,并记录计算得到的端点纵坐标yy=[yy1yy2...yyn],其中n表示端点的数量;

64、步骤2.3.5,根据端点的数量求出插值点的坐标,若n=2,则此时扫描线与孔洞边界相交构成一条线段,扫描线上各插值点的纵坐标根据插入点的横坐标求得,

65、

66、步骤2.3.6,如果距离值小于阈值sdj=ω*dj,ω为调节系数,则将该点删除,否则保留该点并将其放入到插值点集合,其坐标为(xx,yynew),重复步骤2.3.4和步骤2.3.5,直至处理完所有的扫描线为止;

67、步骤2.3.7,通过公式(8)及(9)完成新增插值点坐标的旋转和平移变换,然后将每个扫描线生成的点云与原始点云进行拼接,完成孔洞修补。

68、步骤3具体为:

69、步骤3.1,计算每个平面的质心点,构建平面之间的拓扑关系;

70、步骤3.1.1,计算平面段的中心点,从中任取一点作为邻接图的顶点,根据位置关系判断顶点周围邻接物的连接关系;

71、步骤3.1.2,验证平面之间的有效邻接性:计算平面的方程,计算每个平面的法向量,通过这些信息确定每个平面的位置和方向,计算每对平面之间的交线,并计算它们之间的距离,验证两个节点的交线是否位于它们之间,任何两个平面是否都靠近它们的交点线,如果满足式(11),则认为两个节点是相邻的,

72、

73、如果一个顶点的邻居在邻接图的任意环内,对应的平面线段被相邻的平面线段包围,此时邻接图是封闭的;

74、步骤3.2,采用移动最小二乘拟合算法将点云拟合到结构模型;

75、步骤3.2.1,选择一个局部邻域,并在该邻域内构建拟合函数f(x),如公式(12)所示;

76、

77、式(12)中:β(x)=[β1(x),β2(x),...,βm(x)]t为待求系数;q(x)=[q1(x),q2(x),...,qm(x)]t为基函数;m为函数的项数;

78、步骤3.2.2,根据拟合模型,算法计算出在该点处的新位置,增加点云的密度,进而实现点云的重建。

79、本发明的有益效果是:

80、本发明通过将非室内结构点向对应结构平面投影来增加平面信息,解决了室内家具对结构的遮挡问题。同时,引入角点为边界特征点,准确地得到门窗的位置信息和形状,实现了更为精细的房间重建。

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