一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种对三维点云模型进行布尔运算的方法与流程

2022-02-21 08:44:25 来源:中国专利 TAG:


1.本发明涉及几何建模技术领域,具体涉及一种对三维点云模型进行布尔运算的方法。


背景技术:

2.随着虚拟现实技术的发展,三维几何模型的应用领域越来越广泛,例如零件的设计与修改、3d游戏和动画、数字城市、地质建模等。现有三维模型的表示包括三维实体模型、三维网格模型、三维点云模型。随着三维几何建模技术的广泛应用,对三维模型的处理技术亟待加强。三维模型处理技术中,布尔运算通过对两个模型的空间信息进行并、交、差等操作进行模型重建以得到新的模型。在模型重建(即建立和处理复杂模型)时,可运用布尔运算对模型进行灵活的加工和修改。
3.目前,三维实体模型和三维网格模型的布尔运算技术已比较成熟。但随着lidar、kinect等高精度传感器的快速发展,三维点云模型已成为表征三维世界的主要数据格式,因此,三维点云模型的布尔运算也变得同样重要。为此,公开号为cn107545602b的中国专利就公开了《一种基于lidar点云的空间拓扑关系约束下的建筑物建模方法》,包括:得到建筑物的精确二维外轮廓以及建筑物屋顶几何基元的数学表达式;构建建筑物屋顶几何基元空间拓扑关系图;定义建筑物屋顶几何基元间的三维布尔运算规则;对每一个建筑物屋顶几何基元多面体进行三维布尔运算之后得到基元顶面半空间,根据建筑物精确二维外轮廓和高程信息得到完全包含建筑物实体模型的墙面及地面的半空间,将基元顶面半空间和墙面及地面的半空间进行三维布尔运算的求交运算,得到建筑物实体模型。
4.上述现有方案中的建筑物建模方法就是一种对三维点云模型进行布尔运算的方法,其在获取建筑物几何基元的基础上,将建模素材进行组合构成建筑物模型,进而实现三维布尔运算的求交运算。但申请人发现,现有方案中在进行三维点云模型的布尔运算时,大多需要将三维点云模型转换为三维实体模型或者三维网格模型。然而,模型的转换会使得计算量大大增加,导致布尔运算的效率不高,进而影响模型重建的效率。同时,现有的直接对三维点云模型进行布尔运算的方法,需要先对三维点云模型进行配准,然后对配准后的每一个点对计算距离,最后根据距离大小进行布尔运算。这种方式需要对点云中的点进行遍历,计算量会随着点云数量的增多呈指数增长,同样导致布尔运算的效率不高。因此,如何设计一种能够提升三维点云模型布尔运算效率的三维点云模型重建方法是亟需解决的技术问题。


技术实现要素:

5.针对上述现有技术的不足,本发明所要解决的技术问题是:如何提供一种能够提升三维点云模型布尔运算效率的方法,从而提升三维点云模型重建的效率。
6.为了解决上述技术问题,本发明采用了如下的技术方案:
7.一种对三维点云模型进行布尔运算的方法,包括以下步骤:
8.s1:获取用于布尔运算的三维点云模型a和b,然后对三维点云模型a和b进行配准;
9.s2:建立三维点云模型a的八叉树模型,得到对应的八叉树结构;
10.s3:将立三维点云模型a对应的八叉树结构应于三维点云模型b,并根据八叉树结构中叶节点与三维点云模型b中点的重叠关系和邻接关系生成对应的若干个共享信息链表;
11.s4:根据布尔运算的类型选取对应的共享信息链表进行三维点云模型a和b的布尔运算。
12.优选的,步骤s1中,首先基于fpfh对三维点云模型a和b进行粗配准,得到对应的点云模型a

和b

;然后基于icp对点云模型a

和b

进行精配准。
13.优选的,所述粗配准包括以下步骤:
14.s101:根据设置的每个样本点的fpfh特征描述子对三维点云模型a进行delaunay三角剖分,得到对应的四面体;
15.s102:从三维点云模型b中选取n个采样点,并使得采样点两两之间的距离大于预先设定的最小距离阈值d;
16.s103:对于三维点云模型b中的采样点,计算每个采样点的fpfh特征值;
17.s104:在三维点云模型a中搜索与采样点的fpfh特征值接近的特征点,然后基于特征点进行特征匹配,以定位到具有较大相关性的四面体,最后搜索三维点云模型b中的采样点在三维点云模型a中的对应点;
18.s105:计算每组对应点之间的变换矩阵[r0,t0],并基于变换矩阵[r0,t0]进行配准变换;
[0019]
s106:通过设置的距离误差函数评价当前配准变换的效果,并将距离误差函数值最小的变换矩阵[r0,t0]作为粗配准的变换矩阵进行配准变换。
[0020]
优选的,fpfh特征值通过如下公式计算:
[0021][0022]
其中,spfh用k邻域内点对之间的关系(α,β,θ)表示:
[0023][0024]
距离误差函数通过如下公式表示:
[0025][0026]
上述式中:ωi表示在已知度量空间内,样本点p与临近点pi之间的距离;ps、p
t
表示样本点p的k邻域中的点对;p
ts
表示点对之间的向量;ns、n
t
表示点对所对应的估计法线;u、v、w表示uvw坐标系;mi为预先给定值;li表示第i组对应点变换之后的距离差。
[0027]
优选的,所述精配准包括以下步骤:
[0028]
s111:分别在点云模型a

和b

中选取点ai∈a

和bi∈b

,并满足min||b
i-ai||;
[0029]
s112:然后分别计算旋转矩阵r和平移矩阵t,并满足
[0030]
s113:将点云模型a

的点带入ai=rbi t,得到对应的云点模型a


[0031]
s114:判断是否达到设定的迭代次数或误差值小于设定的阈值:若是,则停止迭代将云点模型a

作为基于三维点云模型b进行配准后的云点模型;否则,返回步骤s111。
[0032]
优选的,所述旋转矩阵r和平移矩阵t分别通过如下公式表示:
[0033][0034]
上述式中:α、β、γ分别表示沿x、y、z轴的旋转角,t
x
、ty、tz分别表示沿x、y、z轴的位移量。
[0035]
优选的,步骤s2中,通过如下步骤建立八叉树模型:
[0036]
s201:设定八叉树模型的最大迭代次数或叶节点最小尺寸作为八叉树模型的停止规则;
[0037]
s202:识别三维点云模型a的最大边界,并将对应的最大边界设定为初始节点;
[0038]
s203:对每个初始节点沿着每个维度切分为八个子节点,并忽略不包含点的子节点;
[0039]
s204:将所有的子节点作为节点,并重复步骤s203:当子节点的尺寸小于设定的叶节点最小尺寸或者达到最大迭代次数时,将所有的子节点作为叶节点以生成三维点云模型a的八叉树模型。
[0040]
优选的,步骤s3中,通过如下步骤生成共享信息链表:
[0041]
s301:将三维点云模型a的八叉树结构应于三维点云模型b,然后筛选八叉树结构中外来自三维点云模型b中的点,将对应点存入共享信息链表b_out_a中;
[0042]
s302:判断八叉树结构中每一个叶节点是否包含三维点云模型b中的点:若是,则将对应叶节点存入inter(a,b);否则,将对应叶节点存入noninter(a,b);
[0043]
s303:提取inter(a,b)的叶结点:筛选出对应叶节点中来自三维点云模型a中的点,将对应点存入共享信息链表a_in_b中;筛选出对应叶节点中来自三维点云模型b中的点,将对应点存入共享信息链表b_in_a中;
[0044]
s304:提取noninter(a,b)的叶结点:筛选出对应叶节点中来自三维点云模型a中的点,将对应点存入共享信息链表a_out_b中;
[0045]
s305:生成对应的四个共享信息链表:a_out_b、a_in_b、b_out_a、b_in_a。
[0046]
优选的,步骤s4中,三维点云模型a和b布尔运算的类型包括a∩b、a∪b、a-b和b-a。
[0047]
优选的,三维点云模型a和b的布尔运算通过如下公式表示:
[0048][0049]
本发明中的三维点云模型重建方法与现有技术相比,具有如下有益效果:
[0050]
在本发明中,通过八叉树模型及其八叉树结构的叶节点与三维点云模型的重叠关系和邻接关系生成共享信息链表,能够以叶节点作为最小单位实现布尔运算,进而无需对点云模型进行重构或者转换,也不需要对点云中的点进行遍历,从而能够提升三维点云模型布尔运算效率,以提升三维点云模型重建的效率。同时,本发明在布尔运算前通过配准的方式将不同坐标系下的两个三维点云模型进行刚体变换,使得两者能够在同一个坐标系下完全重合,从而提升三维点云模型重建的效果。最后,本发明根据布尔运算的类型选取对应共享信息链表进行布尔运算,进而通过简单组合共享信息来得到多种运算结果,从而能更好的应用于需要多种布尔运算结果的应用场景。
附图说明
[0051]
为了使发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步的详细描述,其中:
[0052]
图1为三维点云模型重建方法的逻辑框图;
[0053]
图2为三维点云模型重建方法的流程图;
[0054]
图3为三层八叉树结构的示意图,其中,图3(a)为初始节点,图3(b)为二层八叉树结构,图3(c)为三层八叉树结构,黑色部分为叶节点;
[0055]
图4为五层八叉树结构形成的过程示意图,其中,图4(a)表示实体模型,图4(b)表示该实体模型的点云模型,图4(c)表示一层该点云的八叉树结构,图4(d)表示二层点云的八叉树结构,图4(e)表示三层点云的八叉树结构,图4(f)表示五层点云的八叉树结构;
[0056]
图5为斯坦福兔子模型的扫描点云;
[0057]
图6为兔子模型的配准结果;
[0058]
图7为配准后的点云模型a与点云模型b;
[0059]
图8为点云模型a的八叉树模型;
[0060]
图9为点云模型a的八叉树框架与点云b;
[0061]
图10为点云模型a与点云模型b的并集;
[0062]
图11为点云模型a与点云模型b的交集;
[0063]
图12为兔子模型的重构过程示意图;
[0064]
图13为标准齿轮模型n的结构示意图;
[0065]
图14为受损齿轮模型d的结构示意图;
[0066]
图15为配准前的标准模型与受损模型;
[0067]
图16为配准后的点云模型;
[0068]
图17为布尔运算的n-d结果;
[0069]
图18为布尔运算的d-n结果;
[0070]
图19为齿轮模型的缺陷区域。
具体实施方式
[0071]
下面通过具体实施方式进一步详细的说明:
[0072]
实施例:
[0073]
本实施例中公开了一种对三维点云模型进行布尔运算的方法。
[0074]
如图1和图2所示,一种对三维点云模型进行布尔运算的方法,包括以下步骤:
[0075]
s1:获取用于布尔运算的三维点云模型a和b,然后对三维点云模型a和b进行配准;
[0076]
s2:建立三维点云模型a的八叉树模型,得到对应的八叉树结构;
[0077]
s3:将立三维点云模型a对应的八叉树结构应于三维点云模型b,并根据八叉树结构中叶节点与三维点云模型b中点的重叠关系和邻接关系生成对应的若干个共享信息链表;
[0078]
s4:根据布尔运算的类型选取对应的共享信息链表进行三维点云模型a和b的布尔运算。
[0079]
在本发明中,通过八叉树模型及其八叉树结构的叶节点与三维点云模型的重叠关系和邻接关系生成共享信息链表,能够以叶节点作为最小单位实现布尔运算,进而无需对点云模型进行重构或者转换,也不需要对点云中的点进行遍历,从而能够提升三维点云模型布尔运算效率,以提升三维点云模型重建的效率。同时,本发明在布尔运算前通过配准的方式将不同坐标系下的两个三维点云模型进行刚体变换,使得两者能够在同一个坐标系下完全重合,从而提升三维点云模型重建的效果。最后,本发明根据布尔运算的类型选取对应共享信息链表进行布尔运算,进而通过简单组合共享信息来得到多种运算结果,从而能更好的应用于需要多种布尔运算结果的应用场景。
[0080]
具体实施过程中,首先基于fpfh(快速点特征直方图)对三维点云模型a和b进行粗配准,得到对应的点云模型a

和b

;然后基于icp(最近点迭代)对点云模型a

和b

进行精配准。
[0081]
具体的,粗配准包括以下步骤:
[0082]
s101:根据设置的每个样本点的fpfh特征描述子对三维点云模型a进行delaunay三角剖分,得到对应的四面体,以利用散乱的点云数据建立局部关联性。点云数据进行delaunay三角剖分可得一组四面体。delaunay三角剖分是指对散乱的点云建立关联性(因为点云中的点本身是散乱无序的,所以利用三角剖分将空间内的散乱点云连接成空间三角网格,反应点和临近点之间的拓扑连接关系),建立起点云的拓扑结构。
[0083]
s102:从三维点云模型b中选取n个采样点,并使得采样点两两之间的距离大于预先设定的最小距离阈值d。最小距离阈值的大小会影响配准的精度和时间,该域值越小精度越高时间就越长,使用时根据需求确定该阈值。
[0084]
s103:对于三维点云模型b中的采样点,计算每个采样点的fpfh特征值;
[0085]
s104:在三维点云模型a中搜索与采样点的fpfh特征值接近的特征点,然后基于特征点进行特征匹配,以定位到具有较大相关性的四面体,最后搜索三维点云模型b中的采样点在三维点云模型a中的对应点;
[0086]
s105:计算每组对应点之间的变换矩阵[r0,t0],并基于变换矩阵[r0,t0]进行配准变换;
[0087]
s106:通过设置的距离误差函数评价当前配准变换的效果,并将距离误差函数值
最小的变换矩阵[r0,t0]作为粗配准的变换矩阵进行配准变换。
[0088]
fpfh特征值通过如下公式计算:
[0089][0090]
其中,spfh用k邻域内点对之间的关系(α,β,θ)表示:
[0091][0092]
距离误差函数通过如下公式表示:
[0093][0094]
上述式中:ωi表示在已知度量空间内,样本点p与临近点pi之间的距离;ps、p
t
表示样本点p的k邻域中的点对;p
ts
表示点对之间的向量;ns、n
t
表示点对所对应的估计法线;u、v、w表示uvw坐标系;mi为预先给定值;li表示第i组对应点变换之后的距离差。
[0095]
具体的,精配准包括以下步骤:
[0096]
s111:分别在点云模型a

和b

中选取点ai∈a

和bi∈b

,并满足min||b
i-ai||。因为点云已经进行粗配准了,所以选取两个点云中距离较近的点为采样点点对。
[0097]
s112:然后分别计算旋转矩阵r和平移矩阵t,并满足该公式表示对多个采样点点云经过旋转和平移后的距离最小。
[0098]
s113:将点云模型a

的点带入ai=rbi t,得到对应的云点模型a


[0099]
s114:判断是否达到设定的迭代次数或误差值小于设定的阈值:若是,则停止迭代将云点模型a

作为基于三维点云模型b进行配准后的云点模型;否则,返回步骤s111。
[0100]
旋转矩阵r和平移矩阵t分别通过如下公式表示:
[0101][0102]
上述式中:α、β、γ分别表示沿x、y、z轴的旋转角,t
x
、ty、tz分别表示沿x、y、z轴的位移量。
[0103]
在本发明中,首先通过粗配准缩小点云之间的旋转和平移错位,以提高精确配准的效率和趋向,然后通过精确配使两个点云之间的配准误差达到最小,进而能够更好的将不同坐标系下的两个三维点云模型进行刚体变换,使得两者能够在同一个坐标系下完全重合,从而更好的提升布尔运算的效果。
[0104]
具体实施过程中,如图3和图4所示,通过如下步骤建立八叉树模型:
[0105]
s201:设定八叉树模型的最大迭代次数或叶节点最小尺寸作为八叉树模型的停止
规则;
[0106]
s202:识别三维点云模型a的最大边界,并将对应的最大边界设定为初始节点;
[0107]
s203:对每个初始节点沿着每个维度切分为八个子节点,并忽略不包含点的子节点;
[0108]
s204:将所有的子节点作为节点,并重复步骤s203:当子节点的尺寸小于设定的叶节点最小尺寸或者达到最大迭代次数时,将所有的子节点作为叶节点以生成三维点云模型a的八叉树模型。
[0109]
本发明中,通过上述步骤能够有效的建立八叉树模型,使得能够通过八叉树结构的叶节点与三维点云模型的重叠关系和邻接关系生成共享信息链表,能够以叶节点作为最小单位实现布尔运算,进而无需对点云模型进行重构或者转换,也不需要对点云中的点进行遍历,从而能够提升三维点云模型的布尔运算效率。
[0110]
具体实施过程中,结合图2所示,通过如下步骤生成共享信息链表:
[0111]
s301:将三维点云模型a的八叉树结构应于三维点云模型b,然后筛选八叉树结构中外来自三维点云模型b中的点,将对应点存入共享信息链表b_out_a中;
[0112]
s302:判断八叉树结构中每一个叶节点是否包含三维点云模型b中的点:若是,则将对应叶节点存入inter(a,b);否则,将对应叶节点存入noninter(a,b);
[0113]
s303:提取inter(a,b)的叶结点:筛选出对应叶节点中来自三维点云模型a中的点,将对应点存入共享信息链表a_in_b中;筛选出对应叶节点中来自三维点云模型b中的点,将对应点存入共享信息链表b_in_a中;
[0114]
s304:提取noninter(a,b)的叶结点:筛选出对应叶节点中来自三维点云模型a中的点,将对应点存入共享信息链表a_out_b中;
[0115]
s305:生成对应的四个共享信息链表:a_out_b、a_in_b、b_out_a、b_in_a。
[0116]
具体的,三维点云模型a和b布尔运算的类型包括a∩b、a∪b、a-b和b-a。
[0117]
具体实施过程中,三维点云模型a和b的布尔运算通过如下公式表示:
[0118][0119]
在本发明中,根据布尔运算的类型选取对应共享信息链表进行布尔运算,进而通过简单组合共享信息来得到并、交、差等多种运算结果,从而能更好的应用于需要多种布尔运算结果的应用场景。
[0120]
为了更好的说明本发明三维点云模型重建方法的优势,本实施例还公开了如下实验。
[0121]
包括两个实验:1)使用布尔运算进行模型重构;2)对受损齿轮模型进行缺陷检测。
[0122]
实验一:使用布尔运算进行模型重构
[0123]
图5为斯坦福大学的兔子模型,该模型从十个不同的角度扫描,得到十个点云。为了对兔子模型进行重构,需要对十个点云进行配准,配准后结果如图6所示。如果直接将兔子模型进行合并,得到点云数量为361869的点云模型,会出现测点层叠,点云分布不均,点云数量大的问题,在后续处理过程中会导致处理效率不高、处理精度低。因此本实验对点云
进行布尔运算求并集,避免点云重构过程中测点层叠的问题。
[0124]
本实验以配准后的侧面0
°
点云(点云a)与侧面45
°
点云(点云b)为例,如图7所示,在点云求并集的过程中,首先对点云a建立八叉树结构,如图8所示;其次,将点云b应用于八叉树结构,如图9所示。求出b-a的结果,再将a与b-a的点云合并,即可得到均匀的点云,如图10所示。在布尔运算求并集的过程中,会忽略来自b点云中的层叠点b∩a,如图11所示。以同样的方式对十个点云依次布尔运算并集来重构兔子模型,重构的过程如图12所示。分别将侧面0
°
点云、侧面45
°
点云、侧面90
°
点云、侧面180
°
点云、侧面270
°
点云、侧面315
°
点云、顶部1点云、顶部2点云、耳朵部分点云、底部点云合并来重构兔子模型。
[0125]
为了验证本发明三维点云模型重建方法的有效性及优越性,本发明使用相同的数据集对以下方法进行了对比:
[0126]
方法1:将点云模型转换为三角网格模型,对三角网格模型进行布尔运算。
[0127]
方法2:对配准后点云模型中的每一个点对计算距离,根据距离大小进行布尔运算。
[0128]
表1不同方法的布尔运算对比
[0129][0130]
从表1中可以看出,本发明与其他两种方法相比,时间更短且精度更高,表明本发明三维点云模型重建方法可以快速对点云模型进行布尔运算。
[0131]
实验二:受损齿轮模型缺陷检测
[0132]
为了证明本发明所提出方法的实用性,本实验对受损的齿轮模型进行缺陷检测。将未受损的齿轮模型n作为标准零件,如图13所示,有断齿的受损齿轮d作为受损零件,如图14所示,分别对两个齿轮提取对应的点云模型。对标准点云和受损零件点云进行配准(配准前如图15所示),得到配准后的图像如图16所示。
[0133]
由于3d视觉技术获取的点云为表面点云,为了对缺陷区域进行准确提取以便计算缺陷的体积,因此需要求出n-d和d-n的点云,将检测出的结果合并为一个封闭的点云,即可得到完整的缺陷区域,以便计算缺陷体积等。由布尔运算求出的n-d的结果如图17所示,d-n的结果如图18所示。将二者合并即可得到封闭的点云模型,可以求出缺陷的区域及体积(如图19所示)体积以便计算齿轮的受损程度。
[0134]
实验结论:
[0135]
实验一通过对公开的点云数据集(斯坦福的兔子模型)进行布尔运算求并集,验证了本发明方法的有效性和优越性。实验二应用于具体的受损齿轮缺陷检测,验证了本发明方法的实用性。
[0136]
需要说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管通过参照本发明的优选实施例已经对本发明进行了描述,但本领域的普通技术人员应当理解,可以在形式上和细节上对其作出各种各样的改变,而不偏离所附权利要求书所限定的本发明的精神和范围。同时,实施例中公知的具体结构及特性等常识在此未作过多描述。最后,本发明要求的保护范围应当以其权利要求的内容为准,说明书中的具体实施方式等记载可以
用于解释权利要求的内容。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献