CN107330901B - 一种基于骨架的物体构件分解方法 - Google Patents
一种基于骨架的物体构件分解方法 Download PDFInfo
- Publication number
- CN107330901B CN107330901B CN201710515334.6A CN201710515334A CN107330901B CN 107330901 B CN107330901 B CN 107330901B CN 201710515334 A CN201710515334 A CN 201710515334A CN 107330901 B CN107330901 B CN 107330901B
- Authority
- CN
- China
- Prior art keywords
- point
- points
- skeleton
- segmentation
- solving
- 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
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/11—Region-based segmentation
-
- 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/005—Tree description, e.g. octree, quadtree
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/187—Segmentation; Edge detection involving region growing; involving region merging; involving connected component labelling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/10—Image acquisition modality
- G06T2207/10028—Range image; Depth image; 3D point clouds
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明公开了一种基于骨架的物体构件分解方法,具体为:对原始点云模型上的每个点建立k‑d Tree,将k邻近点和该点自身采用最小二乘法拟合平面求得该点的法向量;然后对点云模型上每个点的法向量方向进行归一化处理;基于法向量反方向迭代收缩,并判断每个点收缩停止的约束条件,最终得到物体的收缩点集;对收缩模型聚类并求解聚类中心点,对聚类中心点进行连接,建立拓扑图,对拓扑图进行优化处理;在骨架拓扑图中求解分割点,在原始模型上求解脊谷点,然后结合分割点和脊谷点求解分割平面,最后依据分割平面使用区域增长将原始点云模型进行分解。解决了现有技术仅利用物体的相关特征进行物体的分解的问题。
Description
技术领域
本发明属于计算机图形学和模式识别相结合的交叉学科技术领域,具体涉及一种基于骨架的物体构件分解方法。
背景技术
三维点云物体的构件分割与提取一直都是计算机图形学和模式识别的一个重要研究领域。三维点云物体的构件分解作为点云处理的一部分,已经作为图形领域中的一个基本的课题,并且被广泛应用在3D模型重建、简化和压缩上。
(1)基于边的分割方法,①按照边进行曲面扩张时方向不够准确,容易按照错误方向进行延伸,同时还不能保证得到的边界线形成封闭的边缘,从而无法完成区域分割;②即使有些方法能够很好的将模型表面进行区域分割,但是并不能保证分割后的某块区域是一个有意义的构件。
(2)基于面的分割方法,种子点的选择比较困难以及不同区域之间的边界辨别比较困难。在基于面的区域生长算法中,很难判断一系列种子中哪个更好,因而种子的选取是个很大的问题。而且种子的选择不同,相应的分割结果也不同,同时该类方法和基于边的方法都是关注于模型表面的分割,即使分割成不同区域,但不能保证分割后的区域是一个有意义的构件。
(3)基于聚类的方法,该类方法对于曲面类型较为明显的曲面分块存在一定的优势,但是对于一些粘连在一起的曲面,聚类方法不太容易辨别曲面的类型和数量,容易导致相邻的不同类型曲面聚在一起。此外聚类后的分块区域位于模型表面,而表面分块并不能完全代表该分块的视觉意义,达不到有模型意义部件的分解和提取。
(4)基于骨架的分割方法,是从模型内部分解骨架,然后根据骨架位置变换到模型表面对模型表面进行分解,虽然能够大体分解出明显符合视觉的子部分,但是缺少模型表面特征,对于分解后的子部分和主体连接处并不能很好满足人的视觉要求,分解得到的模型构件连接处不够准确。
总之,基于边、面、聚类这三类方法从模型表面着手,分解后很可能只是一块的曲面,从模型整体上看无法保证分解后的子部分是有意义的构件;而基于骨架的分解从模型内部着手,将模型空间结构进行分解,虽然从整体视觉上能够将模型分解为有独立的构件,但是缺乏模型表面特征信息,导致在分解后不同构件的连接细节处并不完全符合人的视觉,导致分解后的构件缺乏视觉意义。
发明内容
本发明的目的是提供一种基于骨架的物体构件分解方法,解决了现有技术仅利用物体的相关特征进行物体的分解的问题。
本发明所采用的技术方案是,一种基于骨架的物体构件分解方法,具体按照以下步骤实施:
步骤1:对原始点云模型上的每个点建立k-d Tree,求解k近邻,将k邻近点和该点自身采用最小二乘法拟合平面求得该点的法向量;然后采用邻近点具有相似法向量方向的原则对点云模型上每个点的法向量方向进行归一化处理,使得模型上每个点的法向量方向朝向模型外侧;
步骤2:基于法向量反方向迭代收缩,并判断每个点收缩停止的约束条件,最终得到物体的收缩点集,作为物体的近似骨架模型,为后一步骨架拓扑的求解奠定基础;
步骤3:对收缩模型使用K-means聚类并求解聚类中心点,采用欧氏距离二次连接法对聚类中心点进行连接,进而建立拓扑图,并对拓扑图进行优化处理;
步骤4:在骨架拓扑图中求解分割点,在原始模型上求解脊谷点,然后结合分割点和脊谷点求解分割平面,最后依据分割平面使用区域增长将原始点云模型进行分解。
本发明的特点还在于:
步骤2中基于法向量反方向迭代收缩具体为:
步骤2.1:法向量计算
通过奇异值分解对公式(1)中半正定的协方差矩阵M进行特征值分解,得到协方差矩阵M的特征值λ3>λ2>λ1>0,最小特征值λ1所对应的特征向量(nx,ny,nz)即为点p的法向量;
由于法向量的方向有二义性,所以对于点云中的每一点,利用k-d树找出与点p最近的点q,如果np·nq≈-1,则将点p的法向量方向反转;
步骤2.2:基于法向量的收缩
给定参数λ表示单位收缩步长,参数d表示圆柱体内点的个数,参数r表示球形邻域半径;
在点云模型上任意选一点p,点p的法向量记做vp,点p将沿vp的反方向移动了λ,得到点p对应的新点p′,在点p′沿法向量反方向距离d处构造一个半径为r的球体,将该球体作为探测器,然后检查该球体探测器里是否包含点,若不含点或者含有的点的个数远小于参数NUM,则表明点p′还未碰撞到自身法向量反方向上的点集,即点p还没有到达收缩成功的位置,下次迭代将继续收缩;若包含的点的个数接近点云平均密度avg,则该点已经收缩成功,下次迭代不再参与收缩;
步骤2.3:对整体点云模型进行上述的操作后,每一个点都将沿法向量反方向移动了λ,求解点云模型上某点p在一次迭代后的新点p′的坐标(x′0,y′0,z′0):
根据点p坐标(x0,y0,z0)和点p的法向量vp,首先求解过点p、法向量为vp的直线方程L,然后在根据p′在直线L上,且点p和点p′之间的距离等于λ;
p′的坐标为:
x′0=t×A+x0
y′0=t×B+y0
z′0=t×C+z0
重复上述求解过程,循环求解点云模型上每一个点迭代一次后的p′点;
由上述部分可以得到点云模型的收缩结果。
步骤2.2中球体探测器的构造具体为:
在点p′对应的法向量vp的反向延长线上求得球心点o,其中点p′到点o的距离记做d(p′,o)=d,则由球心o和半径r构成球体探测器,
过p′点,法向量vp(A,B,C)的直线方程L如下:
求解球心o点(x1,y1,z1):
p′点到o点的距离公式
(x1-x′0)2+(y1-y′0)2+(z1-z′0)2=(d(p′,o))2
(3)
由公式(2)和公式(3)联立求解得到参数t
求得球心o的坐标为:
x1=t×A+x′0
y1=t×B+y′0
z1=t×C+z′0。
步骤2.2中判断点是否在球体探测器内部,具体为:
模型上一点记做a(xa,ya,za),根据空间两点之间欧氏距离可知:点a到球心o的距离为:
如果dis≤r,则a点属于当前球体探测器内。
步骤3具体为:
步骤3.1:基于聚类的骨架点获取
通过利用K-Means聚类算法针对收缩后的模型获取局部最优切分点集每一块局部最优切分点集近似成一小段圆柱体,该圆柱体的方向和对应模型的骨架线方向,求取该局部最优切分点集的重心作为该段模型的骨架点;
步骤3.2:骨架点拓扑结构建立
通过计算欧氏距离寻找每一个骨架点的最近点和次近点,并根据最近点和次近点距离与次近点和当前骨架点距离来判断这两点和当前骨架点的位置关系,如果最近点和次近点距离大于次近点和当前骨架点距离,则最近点和次近点位于参考点两侧,否则最近点与次近点位于参考点同侧;
在确定连接方式后还将验证待连接的两个骨架点之间是否是非跨区域,以待连接的两个点的连线作为轴,给定半径r构造圆柱体,结合原始模型表面点集,判断该圆柱体内是否包含模型表面点,若不包含,则说明待连接的两个点是非跨区域的,就可以将待连接点进行连接并更新连接点的度和连接点集合。
步骤3中对拓扑图进行优化处理,具体为:
①独立骨架处理
合并独立分支骨架步骤为:
步骤a:在整个骨架图集合中寻找独立分支骨架线,独立骨架线为两个端点之间的连接点都是度为2的普通连接点;
步骤b:在独立分支骨架点以外的骨架点集里分别求解距离独立分支骨架线两个端点最近的两个点;
步骤c:比较这两个点到对应独立分支骨架线端点的距离,选择距离较小的那个点和它对应的端点相连接,更新端点的度和连接点集合;
步骤d:将模型原始骨架中独立分支骨架线部分合并到主体骨架线上;
②骨架环路处理
步骤a:删除所有顶点度小于等于1的点以及相关的边,并将另外与这些边相关的其它点的度减1;
步骤b:将度为1的顶点排入队列,并从该队列中取出一个顶点重复步骤a;如果最终还有未删除的顶点则说明存在环,否则说明没有环;
步骤c:根据上述找到的环路骨架点集合,结合原始骨架拓扑,首先确定分支骨架和环路骨架的外连接点,外连接点是分支骨架末端分叉点的前一个连接点,然后对环路骨架点集求解重心,最后用重心替换所有的环路骨架点集,将重心直接和外连接点相连;
③平面骨架处理
根据平面点集分散性,在初始骨架拓扑图中优先从度为3的点开始寻找可能的平面点,选定某个度为3的点作为起始点,通过起始点和起始点周围的连接点分别计算它们的法向量,判断它们的法向量方向是否相同,若相同则说明该起始点是平面骨架上的点,然后以此起始点作为种子点,进行区域增长标记周围点是否和种子点共面,判断条件:条件1:待标记点的法向量和种子点法向量相同;条件2:已标记点之间是非跨区域的;上述两个条件同时满足时,已标记点属于同一平面;
对于同一标记号的平面骨架点集,根据骨架拓扑关系寻找与该类标记的平面骨架点集相连接的其它类骨架点,将其它类骨架点作为平面骨架点集的分支部分,最后求得平面点集的重心,然后将重心和这些分支部分连接。
步骤4具体为:
步骤4.1:骨架拓扑结构图中初始分割点的求取
遍历整个骨架点,从端点的下一个点开始,假设端点为pi点,则pi点的前一个点为pi-1,后一个点为pi+1,构造向量和向量求解向量和向量之间的夹角θi,依次计算每个点θi值直到分叉点停止,然后求解相邻两个点的夹角θi的差值Δθi=θi-θi-1,判断Δθi是否大于给定的阈值,若满足则将该pi点标记为特征点,否则不标记;根据分支骨架线上每个连接点的角度差Δθi的大小标记出特征骨架点;
步骤4.2:拓扑图中最终分割点的选取
对于分支骨架上有多个初始分割点,从该分支骨架的分叉点处开始寻找,找第一个初始分割点作为分割点;对于分支骨架上刚好只有一个初始分割点,则我们就选定该初始分割点作为分割点;对于分支骨架上没有一个初始分割点,则选定该分叉点前一个点作为分割点;这时即可将骨架拓扑图中的初始分割点进行筛选后留下最终的分割点;
步骤4.3:分割面的确定
首先在物体模型表面上标记潜在的脊谷点,然后在每个潜在的脊谷点处构造反映该点的局部几何特征信息的三角网格,将该三角网格近似作为点的Delaunay邻域,最后基于三角网格信息计算潜在脊谷点的主曲率和主方向,利用离散计算和线性差值的方法提取脊谷特征点;然后,基于骨架分割点采用k近邻法求解骨架分割点周围的脊点和谷点;最后,利用骨架分割点和它周围的k个邻近脊、谷点拟合成平面,最后根据骨架分割点所在位置骨架线的方向向量对拟合平面进行调整,得到更好的分割平面;
步骤4.4:融合骨架分割点和脊谷点的模型分解
根据分割点寻找对应的端点,通过端点和分割平面确定分解构件和分割平面空间位置,也就是分割平面的正方向,通过欧氏距离求解分割点最近的构件上的一点,然后以该点开始按照分割平面正方向进行区域增长,直到增长结束,分解的构件同时也将标记完成。
本发明的有益效果是:本发明一种基于骨架的物体构件分解方法,从模型内外两个方面对模型进行有意义构件提取和分解,内部通过分解骨架,首先得到满足人类视觉的骨架分支,外部通过计算模型表面的特征信息,最后用模型表面特征信息来辅助骨架分支映射到模型表面进行分解,得到有意义的模型构件部分。并且解决了现有技术仅利用物体的相关特征进行物体的分解的问题。
附图说明
图1是本发明物体构件分解方法中球体探测器的构造图;
图2是本发明物体构件分解方法中点云模型的收缩结果图;
图3是本发明物体构件分解方法中基于聚类的骨架点获取结果图;
图4是本发明物体构件分解方法中最近点和次近点的位置关系图;
图5是本发明物体构件分解方法中骨架线的获取结果图;
图6是本发明物体构件分解方法中独立分支骨架线部分合并到主体骨架线的过程图;
图7是本发明物体构件分解方法中寻找骨架拓扑图中环路的过程图;
图8是本发明物体构件分解方法中分支骨架和环路骨架的外连接点;
图9是本发明物体构件分解方法中重心直接和外连接点相连示意图;
图10是本发明物体构件分解方法中消除环路后的效果图;
图11是本发明物体构件分解方法中平面骨架处理的效果图;
图12是本发明物体构件分解方法中分割点确定效果图;
图13是本发明物体构件分解方法中分割平面的法向量效果图。
具体实施方式
下面结合附图和具体实施方式对本发明进行详细说明。
本发明一种基于骨架的物体构件分解方法,具体按照以下步骤实施:
步骤1:对原始点云模型上的每个点建立k-d Tree,求解k近邻,将k邻近点和该点自身采用最小二乘法拟合平面求得该点的法向量;然后采用邻近点具有相似法向量方向的原则对点云模型上每个点的法向量方向进行归一化处理,使得模型上每个点的法向量方向朝向模型外侧;
步骤2:基于法向量反方向迭代收缩,并判断每个点收缩停止的约束条件,最终得到物体的收缩点集,作为物体的近似骨架模型,为后一步骨架拓扑的求解奠定基础;
基于法向量反方向迭代收缩具体为:
步骤2.1:法向量计算
通过奇异值分解(Sigular Value Decomposition,SVD)对公式(1)中半正定的协方差矩阵M进行特征值分解,得到协方差矩阵M的特征值λ3>λ2>λ1>0,最小特征值λ1所对应的特征向量(nx,ny,nz)即为点p的法向量。由于法向量的方向有二义性,所以对于点云中的每一点,利用k-d树找出与点p最近的点q,如果np·nq≈-1,则将点p的法向量方向反转。
步骤2.2:基于法向量的收缩
给定参数λ表示单位收缩步长,参数d表示圆柱体内点的个数,参数r表示球形邻域半径;
在点云模型上任意选一点p,点p的法向量记做vp,点p将沿vp的反方向移动了λ,得到点p对应的新点p′,在点p′沿法向量反方向距离d处构造一个半径为r的球体,将该球体作为探测器,然后检查该球体探测器里是否包含点,若不含点或者含有的点的个数远小于参数NUM则表明点p′还未碰撞到自身法向量反方向上的点集,也就是说明点p还没有到达收缩成功的位置,下次迭代将继续收缩;若包含的点的个数接近点云平均密度avg则说明该点已经收缩成功,下次迭代不再参与收缩。
球体探测器的构造具体为:
在点p′对应的法向量vp的反向延长线上求得球心点o,p′到点o的距离记做d(p′,o)=d,则由球心o和半径r(其中r是手动输入,r≤d)构成球体探测器,如图1所示,
过p′点,法向量vp(A,B,C)的直线方程L如下:
求解球心o点(x1,y1,z1):
p′点到o点的距离公式
(x1-x′0)2+(y1-y′0)2+(z1-z′0)2=(d(p′,o))2
(3)
由公式(2)和公式(3)联立求解得到参数t
求得球心o的坐标为:
x1=t×A+x′0
y1=t×B+y′0
z1=t×C+z′0
判断点是否在球体探测器内部,具体为:
为了判断点云模型上的某一点是否位于当前球体探测器的内部,只需要模型上的点到球心o的距离小于等于球体半径r:假设,模型上一点记做a(xa,ya,za),根据空间两点之间欧氏距离可知:点a到球心o的距离为:
如果dis≤r,则证明a点属于当前球体探测器内。
步骤2.3:对整体点云模型进行上述的操作后,每一个点都将沿法向量反方向移动了λ,然后求解点云模型上某点p在一次迭代后的新点p′的坐标(x′0,y′0,z′0)。
求解过程如下:根据点p坐标(x0,y0,z0)和点p的方向量vp,首先求解过点p,法向量为vp的直线方程L,然后在根据p′在直线L上,且点p和点p′之间的距离等于λ。
p′点的坐标计算过程和(1)中的Q1点的坐标求解过程一样:直线方程L公式为(2),其中d(p,p′)=λ。
求得p′的坐标为:
x′0=t×A+x0
y′0=t×B+y0
z′0=t×C+z0
重复上述求解过程,循环求解点云模型上每一个点迭代一次后的p′点。
由上述部分可以得到点云模型的收缩结果,如图2所示。
步骤3:对收缩模型使用K-means聚类并求解聚类中心点,采用欧氏距离二次连接法对聚类中心点进行连接,进而建立拓扑图,并对拓扑图进行优化处理;
步骤3.1:基于聚类的骨架点获取
通过利用K-Means聚类算法针对收缩后的模型获取局部最优切分点集每一块局部最优切分点集近似成一小段圆柱体,该圆柱体的方向和对应模型的骨架线方向,所以求取该局部最优切分点集的重心作为该段模型的骨架点。如图3所示。
步骤3.2:骨架点拓扑结构建立
通过计算欧氏距离寻找每一个骨架点的最近点和次近点,并根据最近点和次近点距离与次近点和当前骨架点距离来判断这两点和当前骨架点的位置关系,如果最近点和次近点距离大于次近点和当前骨架点距离,则最近点和次近点位于参考点两侧,连接方式如图4(a)所示,否则最近点与次近点位于参考点同侧,连接方式如图4(b)所示。
在确定连接方式后还将验证待连接的两个骨架点之间是否是非跨区域,以待连接的两个点的连线作为轴,给定半径r构造圆柱体,结合原始模型表面点集,判断该圆柱体内是否包含模型表面点,若不包含,则说明待连接的两个点是非跨区域的,就可以将待连接点进行连接并更新连接点的度和连接点集合,最终形成了如图5所示的骨架线。
对拓扑图进行优化处理,具体为:
①独立骨架处理
合并独立分支骨架步骤为:
步骤a:在整个骨架图集合中寻找独立分支骨架线,独立骨架线为两个端点之间的连接点都是度为2的普通连接点;
步骤b:在独立分支骨架点以外的骨架点集里分别求解距离独立分支骨架线两个端点最近的两个点;
步骤c:比较这两个点到对应独立分支骨架线端点的距离,选择距离较小的那个点和它对应的端点相连接,更新端点的度和连接点集合;
步骤d:将模型原始骨架中独立分支骨架线部分合并到主体骨架线上,合并效果如图6所示;
②骨架环路处理
在骨架拓扑图中,步骤a:删除所有顶点度小于等于1的点以及相关的边,并将另外与这些边相关的其它点的度减1;
步骤b:将度为1的顶点排入队列,并从该队列中取出一个顶点重复步骤a;如果最终还有未删除的顶点则说明存在环,否则说明没有环;寻找拓扑图中环路的过程如图7所示。
步骤c:根据上述找到的环路骨架点集合,结合原始骨架拓扑,首先确定分支骨架和环路骨架的外连接点,如图8,外连接点是分支骨架末端分叉点的前一个连接点,然后对环路骨架点集求解重心,最后用重心替换所有的环路骨架点集,将重心直接和外连接点相连,连接过程如图9所示。由此,消除环路后的结果如图10所示。
③平面骨架处理
根据平面点集分散性,在初始骨架拓扑图中我们优先从度为3的点开始寻找可能的平面点,选定某个度为3的点作为起始点,通过起始点和起始点周围的连接点分别计算它们的法向量(通过向量叉乘得到某点法向量),判断它们的法向量方向是否相同(同向或反向),若相同则说明该起始点是平面骨架上的点,接下来以此起始点作为种子点,进行区域增长标记周围点是否和种子点共面,判断条件:条件1:待标记点的法向量和种子点法向量相同;条件2:已标记点之间是非跨区域的。这两个条件必须同时满足,保证已标记点属于同一平面。
对于同一标记号的平面骨架点集,根据骨架拓扑关系寻找与该类标记的平面骨架点集相连接的其它类骨架点,将其它类骨架点作为平面骨架点集的分支部分,最后求得平面点集的重心,然后将重心和这些分支部分连接。如图11所示是桌子模型的平面骨架处理结果。
步骤4:在骨架拓扑图中求解分割点,在原始模型上求解脊谷点,然后结合分割点和脊谷点求解分割平面,最后依据分割平面使用区域增长将原始点云模型进行分解。
步骤4.1:骨架拓扑结构图中初始分割点的求取
遍历整个骨架点,从端点的下一个点开始,假设端点为pi点,则pi点的前一个点为pi-1,后一个点为pi+1,构造向量和向量求解向量和向量之间的夹角θi,依次计算每个点θi值直到分叉点停止,然后求解相邻两个点的夹角θi的差值Δθi=θi-θi-1,判断Δθi是否大于给定的阈值,若满足则将该pi点标记为特征点,否则不标记;根据分支骨架线上每个连接点的角度差Δθi的大小标记出特征骨架点,效果如图12所示;
步骤4.2:拓扑图中最终分割点的选取
对于分支骨架上有多个初始分割点,从该分支骨架的分叉点处开始寻找,找第一个初始分割点作为分割点;对于分支骨架上刚好只有一个初始分割点,则我们就选定该初始分割点作为分割点;对于分支骨架上没有一个初始分割点,则选定该分叉点前一个点作为分割点;这时即可将骨架拓扑图中的初始分割点进行筛选后留下最终的分割点;
步骤4.3:分割面的确定
首先在物体模型表面上标记潜在的脊谷点,然后在每个潜在的脊谷点处构造反映该点的局部几何特征信息的三角网格,将该三角网格近似作为点的Delaunay邻域,最后基于三角网格信息计算潜在脊谷点的主曲率和主方向,利用离散计算和线性差值的方法提取脊谷特征点。然后,基于骨架分割点采用k近邻法求解骨架分割点周围的脊点和谷点。最后,利用骨架分割点和它周围的k个邻近脊、谷点拟合成平面,最后根据骨架分割点所在位置骨架线的方向向量对拟合平面进行调整,得到更好的分割平面,图13给出了hand模型的分割平面的法向。
步骤4.4:融合骨架分割点和脊谷点的模型分解
根据分割点寻找对应的端点,通过端点和分割平面确定分解构件和分割平面空间位置,也就是分割平面的正方向,通过欧氏距离求解分割点最近的构件上的一点,然后以该点开始按照分割平面正方向进行区域增长,直到增长结束,分解的构件同时也将标记完成。
在区域标记的过程中我们是从某个骨架分支端点到分割点逐段进行区域标记。每次标记骨架线段周围表面的点,沿着分支骨架到分割平面处。在沿途区域标记的过程中由于位于分割平面正方向一侧的点很多,有可能除了属于当前分支骨架区域内的点之外,还有其它分支骨架区域的点,所以在每段骨架区域标记后,我们以该段骨架线段为法向量,过骨架点做平面,然后将当前骨架段对应周围标记点在平面上做投影,最后求这些投影区域的最大外接圆半径,将该半径作为下一段骨架区域标记的约束,这样保证下一段骨架进行区域标记的点距离骨架线段不能偏离半径太远。
本发明从模型内外两个方面对模型进行有意义构件提取和分解,内部通过分解骨架,首先得到满足人类视觉的骨架分支,外部通过计算模型表面的特征信息,最后用模型表面特征信息来辅助骨架分支映射到模型表面进行分解,得到有意义的模型构件部分。
Claims (6)
1.一种基于骨架的物体构件分解方法,其特征在于,具体按照以下步骤实施:
步骤1:对原始点云模型上的每个点建立k-d Tree,求解k近邻,将k邻近点和该点自身采用最小二乘法拟合平面求得该点的法向量;然后采用邻近点具有相似法向量方向的原则对点云模型上每个点的法向量方向进行归一化处理,使得模型上每个点的法向量方向朝向模型外侧;
步骤2:基于法向量反方向迭代收缩,并判断每个点收缩停止的约束条件,最终得到物体的收缩点集,作为物体的近似骨架模型,为后一步骨架拓扑的求解奠定基础;
所述步骤2中基于法向量反方向迭代收缩具体为:
步骤2.1:法向量计算
通过奇异值分解对公式(1)中半正定的协方差矩阵M进行特征值分解,得到协方差矩阵M的特征值λ3>λ2>λ1>0,最小特征值λ1所对应的特征向量(nx,ny,nz)即为点p的法向量;
由于法向量的方向有二义性,所以对于点云中的每一点,利用k-d树找出与点p最近的点q,如果np·nq≈-1,则将点p的法向量方向反转;
步骤2.2:基于法向量的收缩
给定参数λ表示单位收缩步长,参数d表示圆柱体内点的个数,参数r表示球形邻域半径;
在点云模型上任意选一点p,点p的法向量记做vp,点p将沿vp的反方向移动了λ,得到点p对应的新点p′,在点p′沿法向量反方向距离d处构造一个半径为r的球体,将该球体作为探测器,然后检查该球体探测器里是否包含点,若不含点或者含有的点的个数远小于参数NUM,则表明点p′还未碰撞到自身法向量反方向上的点集,即点p还没有到达收缩成功的位置,下次迭代将继续收缩;若包含的点的个数接近点云平均密度avg,则该点已经收缩成功,下次迭代不再参与收缩;
步骤2.3:对整体点云模型进行上述的操作后,每一个点都将沿法向量反方向移动了λ,求解点云模型上某点p在一次迭代后的新点p′的坐标(x′0,y′0,z′0):
根据点p坐标(x0,y0,z0)和点p的法向量vp,首先求解过点p、法向量为vp的直线方程L,然后在根据p′在直线L上,且点p和点p′之间的距离等于λ;
p′的坐标为:
x′0=t×A+x0
y′0=t×B+y0
z′0=t×C+z0
重复上述求解过程,循环求解点云模型上每一个点迭代一次后的p′点;
由上述部分可以得到点云模型的收缩结果;
步骤3:对收缩模型使用K-means聚类并求解聚类中心点,采用欧氏距离二次连接法对聚类中心点进行连接,进而建立拓扑图,并对拓扑图进行优化处理;
步骤4:在骨架拓扑图中求解分割点,在原始模型上求解脊谷点,然后结合分割点和脊谷点求解分割平面,最后依据分割平面使用区域增长将原始点云模型进行分解。
4.根据权利要求1所述的一种基于骨架的物体构件分解方法,其特征在于,所述步骤3具体为:
步骤3.1:基于聚类的骨架点获取
通过利用K-Means聚类算法针对收缩后的模型获取局部最优切分点集每一块局部最优切分点集近似成一小段圆柱体,该圆柱体的方向和对应模型的骨架线方向,求取该局部最优切分点集的重心作为该段模型的骨架点;
步骤3.2:骨架点拓扑结构建立
通过计算欧氏距离寻找每一个骨架点的最近点和次近点,并根据最近点和次近点距离与次近点和当前骨架点距离来判断这两点和当前骨架点的位置关系,如果最近点和次近点距离大于次近点和当前骨架点距离,则最近点和次近点位于参考点两侧,否则最近点与次近点位于参考点同侧;
在确定连接方式后还将验证待连接的两个骨架点之间是否是非跨区域,以待连接的两个点的连线作为轴,给定半径r构造圆柱体,结合原始模型表面点集,判断该圆柱体内是否包含模型表面点,若不包含,则说明待连接的两个点是非跨区域的,就可以将待连接点进行连接并更新连接点的度和连接点集合。
5.根据权利要求1所述的一种基于骨架的物体构件分解方法,其特征在于,所述步骤3中对拓扑图进行优化处理,具体为:
①独立骨架处理
合并独立分支骨架步骤为:
步骤a:在整个骨架图集合中寻找独立分支骨架线,独立骨架线为两个端点之间的连接点都是度为2的普通连接点;
步骤b:在独立分支骨架点以外的骨架点集里分别求解距离独立分支骨架线两个端点最近的两个点;
步骤c:比较这两个点到对应独立分支骨架线端点的距离,选择距离较小的那个点和它对应的端点相连接,更新端点的度和连接点集合;
步骤d:将模型原始骨架中独立分支骨架线部分合并到主体骨架线上;
②骨架环路处理
步骤a:删除所有顶点度小于等于1的点以及相关的边,并将另外与这些边相关的其它点的度减1;
步骤b:将度为1的顶点排入队列,并从该队列中取出一个顶点重复步骤a;如果最终还有未删除的顶点则说明存在环,否则说明没有环;
步骤c:根据上述找到的环路骨架点集合,结合原始骨架拓扑,首先确定分支骨架和环路骨架的外连接点,外连接点是分支骨架末端分叉点的前一个连接点,然后对环路骨架点集求解重心,最后用重心替换所有的环路骨架点集,将重心直接和外连接点相连;
③平面骨架处理
根据平面点集分散性,在初始骨架拓扑图中优先从度为3的点开始寻找可能的平面点,选定某个度为3的点作为起始点,通过起始点和起始点周围的连接点分别计算它们的法向量,判断它们的法向量方向是否相同,若相同则说明该起始点是平面骨架上的点,然后以此起始点作为种子点,进行区域增长标记周围点是否和种子点共面,判断条件:条件1:待标记点的法向量和种子点法向量相同;条件2:已标记点之间是非跨区域的;上述两个条件同时满足时,已标记点属于同一平面;
对于同一标记号的平面骨架点集,根据骨架拓扑关系寻找与该类标记的平面骨架点集相连接的其它类骨架点,将其它类骨架点作为平面骨架点集的分支部分,最后求得平面点集的重心,然后将重心和这些分支部分连接。
6.根据权利要求1所述的一种基于骨架的物体构件分解方法,其特征在于,所述步骤4具体为:
步骤4.1:骨架拓扑结构图中初始分割点的求取
遍历整个骨架点,从端点的下一个点开始,假设端点为pi点,则pi点的前一个点为pi-1,后一个点为pi+1,构造向量和向量求解向量和向量之间的夹角θi,依次计算每个点θi值直到分叉点停止,然后求解相邻两个点的夹角θi的差值Δθi=θi-θi-1,判断Δθi是否大于给定的阈值,若满足则将该pi点标记为特征点,否则不标记;根据分支骨架线上每个连接点的角度差Δθi的大小标记出特征骨架点;
步骤4.2:拓扑图中最终分割点的选取
对于分支骨架上有多个初始分割点,从该分支骨架的分叉点处开始寻找,找第一个初始分割点作为分割点;对于分支骨架上刚好只有一个初始分割点,则我们就选定该初始分割点作为分割点;对于分支骨架上没有一个初始分割点,则选定该分叉点前一个点作为分割点;这时即可将骨架拓扑图中的初始分割点进行筛选后留下最终的分割点;
步骤4.3:分割面的确定
首先在物体模型表面上标记潜在的脊谷点,然后在每个潜在的脊谷点处构造反映该点的局部几何特征信息的三角网格,将该三角网格近似作为点的Delaunay邻域,最后基于三角网格信息计算潜在脊谷点的主曲率和主方向,利用离散计算和线性差值的方法提取脊谷特征点;然后,基于骨架分割点采用k近邻法求解骨架分割点周围的脊点和谷点;最后,利用骨架分割点和它周围的k个邻近脊、谷点拟合成平面,最后根据骨架分割点所在位置骨架线的方向向量对拟合平面进行调整,得到更好的分割平面;
步骤4.4:融合骨架分割点和脊谷点的模型分解
根据分割点寻找对应的端点,通过端点和分割平面确定分解构件和分割平面空间位置,也就是分割平面的正方向,通过欧氏距离求解分割点最近的构件上的一点,然后以该点开始按照分割平面正方向进行区域增长,直到增长结束,分解的构件同时也将标记完成。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710515334.6A CN107330901B (zh) | 2017-06-29 | 2017-06-29 | 一种基于骨架的物体构件分解方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710515334.6A CN107330901B (zh) | 2017-06-29 | 2017-06-29 | 一种基于骨架的物体构件分解方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107330901A CN107330901A (zh) | 2017-11-07 |
CN107330901B true CN107330901B (zh) | 2020-03-27 |
Family
ID=60198292
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710515334.6A Active CN107330901B (zh) | 2017-06-29 | 2017-06-29 | 一种基于骨架的物体构件分解方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107330901B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109064471B (zh) * | 2018-07-18 | 2021-09-03 | 中北大学 | 一种基于骨架的三维点云模型分割方法 |
CN110189352B (zh) * | 2019-05-21 | 2023-07-07 | 重庆布瑞斯科技有限公司 | 一种基于口腔cbct图像的牙根提取方法 |
CN110660132A (zh) * | 2019-10-11 | 2020-01-07 | 杨再毅 | 一种三维模型构建方法及其装置 |
CN111341392B (zh) * | 2020-02-26 | 2023-05-02 | 西安理工大学 | 一种多域物质体数据内部结构特征表达方法 |
CN111907727B (zh) * | 2020-06-17 | 2022-04-08 | 成都飞机工业(集团)有限责任公司 | 一种飞机机翼骨架外形测量点选取方法 |
CN112465832B (zh) * | 2020-11-25 | 2024-04-16 | 重庆大学 | 一种基于双目视觉的单面树木点云骨架线提取方法及系统 |
CN115214145B (zh) * | 2022-07-01 | 2024-03-08 | 南京理工大学 | 一种用于柱模型多轴增材制造的工位优化方法 |
CN117152374B (zh) * | 2023-07-25 | 2024-04-26 | 北京建筑大学 | 基于三维激光点云的高效索穹顶结构数字孪生建立方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104318563A (zh) * | 2014-10-22 | 2015-01-28 | 北京航空航天大学 | 一种基于医学图像的器官骨架提取方法 |
CN105740798A (zh) * | 2016-01-27 | 2016-07-06 | 西安理工大学 | 一种基于结构分析的点云场景物体识别方法 |
-
2017
- 2017-06-29 CN CN201710515334.6A patent/CN107330901B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104318563A (zh) * | 2014-10-22 | 2015-01-28 | 北京航空航天大学 | 一种基于医学图像的器官骨架提取方法 |
CN105740798A (zh) * | 2016-01-27 | 2016-07-06 | 西安理工大学 | 一种基于结构分析的点云场景物体识别方法 |
Non-Patent Citations (3)
Title |
---|
基于拉普拉斯算子的点云骨架提取;黄文伟;《中国优秀硕士学位论文全文数据库 信息科技辑》;20091015(第10期);I138-451 * |
秦俑文物模型点云骨架提取技术及匹配方法研究;马忠玲;《中国优秀硕士学位论文全文数据库 信息科技辑》;20151015(第10期);第1.3.2、5.2节 * |
空间点云物体理解与识别的研究进展;宁小娟等;《西安理工大学学报》;20140630;第30卷(第2期);第145-156页 * |
Also Published As
Publication number | Publication date |
---|---|
CN107330901A (zh) | 2017-11-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107330901B (zh) | 一种基于骨架的物体构件分解方法 | |
Huang et al. | Combinatorial manifold mesh reconstruction and optimization from unorganized points with arbitrary topology | |
CN103646156B (zh) | 一种基于球标靶探测的激光点云数据自动配准方法 | |
CN108010116B (zh) | 点云特征点检测方法和点云特征提取方法 | |
CN104200212B (zh) | 一种基于机载LiDAR数据的建筑物外边界线提取方法 | |
CN101986328B (zh) | 一种基于局部描述符的三维人脸识别方法 | |
CN109146838A (zh) | 一种基于几何特征与区域融合的g显带粘连染色体分割方法 | |
Micusik et al. | Descriptor free visual indoor localization with line segments | |
CN109740227A (zh) | 基于特征识别的微型复杂零件建模方法 | |
CN104091162A (zh) | 基于特征点的三维人脸识别方法 | |
CN106874580A (zh) | 一种基于点云数据的弯管模型重建方法 | |
CN103247041A (zh) | 一种基于局部采样的多几何特征点云数据的分割方法 | |
CN103559705B (zh) | 一种比较不同植物形态相似度的计算机方法 | |
CN107818598B (zh) | 一种基于视觉矫正的三维点云地图融合方法 | |
CN105046694A (zh) | 一种基于曲面拟合系数特征的点云快速配准方法 | |
CN111508073A (zh) | 一种三维建筑模型屋顶轮廓线的提取方法 | |
CN110009649B (zh) | 一种交叉口密集区域的骨架线提取方法 | |
CN107316327B (zh) | 一种断骨模型配准方法 | |
Zhu et al. | Computing a compact spline representation of the medial axis transform of a 2D shape | |
Gold et al. | Map generalization by skeleton retraction | |
CN113963130A (zh) | 一种针对岩心裂隙的裂隙网络模型的构建方法 | |
Hu et al. | Geometric feature enhanced line segment extraction from large-scale point clouds with hierarchical topological optimization | |
CN113570722A (zh) | 一种围岩裂缝信息提取及完整性系数快速测定方法 | |
Liu et al. | A novel rock-mass point cloud registration method based on feature line extraction and feature point matching | |
CN115546116A (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 |