CN109064471A - 一种基于骨架的三维点云模型分割方法 - Google Patents
一种基于骨架的三维点云模型分割方法 Download PDFInfo
- Publication number
- CN109064471A CN109064471A CN201810788070.6A CN201810788070A CN109064471A CN 109064471 A CN109064471 A CN 109064471A CN 201810788070 A CN201810788070 A CN 201810788070A CN 109064471 A CN109064471 A CN 109064471A
- Authority
- CN
- China
- Prior art keywords
- point
- flag
- angle
- skeleton
- key
- 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.)
- Granted
Links
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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/23—Clustering techniques
- G06F18/232—Non-hierarchical techniques
- G06F18/2321—Non-hierarchical techniques using statistics or function optimisation, e.g. modelling of probability density functions
- G06F18/23213—Non-hierarchical techniques using statistics or function optimisation, e.g. modelling of probability density functions with fixed number of clusters, e.g. K-means clustering
-
- 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
- G06T7/00—Image analysis
- G06T7/50—Depth or shape recovery
-
- 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)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Data Mining & Analysis (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Biology (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- Life Sciences & Earth Sciences (AREA)
- Probability & Statistics with Applications (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明提出了一种基于骨架的三维点云模型分割方法,主要解决了现有三维模型分割方法存在对模型细微特征不敏感、时间代价高的缺点。本发明首先提取三维模型的骨架,并通过分析骨架数据之间的关系,提取骨架关键点;然后选择同一邻域内关键点到质心的距离最小的点作为最终的关键点;最后,使用找到的关键点,通过改进的区域生长算法,得到分割后的骨架区域,即相应原始数据的分割结果。该方法适用于对已有的三维点云模型进行语义分割,是处理几何模型的一种基本操作,可以广泛地应用于几何模型的可视化、优化,三维模型拼接,逆向工程等领域。
Description
技术领域
本发明属于三维图像技术领域,具体涉及一种基于骨架的三维点云模型分 割方法。该方法适用于对已有的三维点云模型进行语义分割。
背景技术
随着三维扫描获取技术的快速发展,点云数据处理研究已成为数字几何处 理研究发展过程中的研究热点。三维模型分割,是把完整的三维模型根据人类 语义上的不同,分割为子部分的过程。三维模型的分割是研究和应用过程中非 常重要的环节,并且成为近年来计算机辅助设计和图形学研究的热点。
对于三维点云模型,其语义分割过程就是对模型上的数据点进行分析并计 算,找出其中的特征点,并以特征点为分割依据,对三维模型原始数据进行分 割。对于现有三维模型分割方法存在对模型细微特征不敏感、时间代价高以及 扫描获取到的点云数据量大的问题,本发明先对原始数据进行骨架提取,然后 通过骨架分割以达到分割三维模型的目的。
发明内容
为了解决现有三维模型分割方法存在对模型细微特征不敏感、时间代价高 的缺点,本发明提出了一种基于骨架的三维点云模型分割方法。
为解决上述技术问题,本发明采用的技术方案为:
一种基于骨架的三维点云模型分割方法,所述三维点云模型分割方法步骤如 下:
步骤1,对输入的三维模型数据source进行面片重组,并通过泰森多边形极 点计算内侧骨架,然后使用迭代网格收缩算法提取薄骨骨架结构,得到骨架数 据skeleton;
步骤2,在骨架数据skeleton中,计算每个骨架点的K近邻点,并置骨架点 的标记位skeleton_flag为0,并计算任意两个K邻域点与当前骨架点形成的向量 的夹角angle,并与夹角的阈值angle_flag进行比较,若angle>angle_flag或者 angle<π-angle_flag,则置该骨架点的标记位near_flag_p为-1,否则near_flag_p 为1,然后将所有邻域点的标记位相加作为点p的标记位skeleton_flag的值;循 环计算骨架点标记位的过程,直到全部骨架点的标记位计算结束,选择骨架点 标记位skeleton_flag>0的点作为候选关键点,并存储到队列L;
步骤3,由于步骤2中的得到的候选关键点存在聚集的情况,通过在候选关 键点集合中进行关键点区域生长,得到聚集在同一个区域的关键点的集合 cluster_part_key_temp,然后把这些关键点围成的区域看作多边形,通过质心公 式计算多边形的质心,接下来分别求这个区域内的候选关键点到质心的距离, 最后得到距离局部区域质心最近的候选关键点作为实际关键点,循环关键点优 化过程完成关键点优化,并把实际关键点存入数组cluster_part_key中;
步骤4,弹出关键点队列L中的第一点,以该点作为种子点进行区域生长, 寻找满足同一分区条件的点,将其增加到同一个点集中,直到区域无法生长, 集合作为第一个聚类;循环上述区域生长过程,直到关键点队列中全部关键点 均作为种子点生长完成,最终形成n个点集cluster_list1…cluster_listn;
步骤5,对于步骤4中得到的n个点集,通过计算两个分割区域的相似性把 点集cluster_listk(k∈[1,n])与其相邻点集进行合并,得到n’个新的点集 cluster_list1…cluster_listn’;
步骤6,根据cluster_list1…cluster_listn’中的点与原始三维模型数据的关系, 把cluster_list1…cluster_listn’中的数据点与原始点进行映射,其得到的不同区域 就是三维模型分割的最终结果;
进一步,所述步骤2,在骨架数据skeleton中,计算每个骨架点的K近邻点, 并置骨架点的标记位skeleton_flag为0,并计算任意两个K邻域点与当前骨架点 形成的向量的夹角angle,并与夹角的阈值angle_flag进行比较,若 angle>angle_flag或者angle<π-angle_flag,则置该骨架点的标记位near_flag_p为 -1,否则near_flag_p为1,然后将点所有邻域点的标记位相加作为点p的标记位 skeleton_flag的值。循环计算骨架点标记位的过程,直到全部骨架点计算结束, 选择骨架点标记位skeleton_flag>0的点作为候选关键点,并存储到队列L,由步 骤2.1至步骤2.6实现:
步骤2.1,设置骨架数据点标记位和向量夹角的阈值,分别记为skeleton_flag 和angle_flag,并置skeleton_flag为0;
步骤2.2,以骨架数据任意点p为中心,利用k-近邻算法计算离p最近的K 个邻域点,记为near(p),并为邻域点设置标记位near_flag_p(i,j),且置为0;
步骤2.3,使用p点的邻域点坐标减去p点坐标形成K个方向向量n1,n2…nk;
步骤2.4,利用公式(1)计算点p邻域内任意两个方向向量n1,n2…nk的夹角 angle,并与设置的角度阈值angle_flag进行比较,如公式(2)所示,若满足 1angle≤angle_flag∪angle≥π-angle_flag,则设置该角度对应的标记位 near_flag_p(i,j)为1,否则置标记位near_flag_p(i,j)为-1;
这里i≠j;
步骤2.5,通过步骤2.4求出的邻域点的标记位的值,根据公式(3)计算骨架点 的标记信息,并置当前点的标记位skeleton_flag为相应值:
步骤2.6,通过步骤2.1至步骤2.5,求出的每个点标记位skeleton_flag的值, 然后选择skeleton_flag>0的点作为候选关键点,并存放在队列L中。
更进一步,所述步骤3,由于步骤2中的得到的候选关键点存在聚集的情况, 通过在候选关键点集合中进行关键点区域生长,得到聚集在同一个个区域的关 键点的集合cluster_part_key_temp,然后把这些关键点围成的区域看作多变形, 通过质心公式计算计算多边形的质心,接下来分别求这个区域内的候选关键点 到质心的距离,最后得到距离局部区域质心最近的候选关键点作为实际关键点, 循环关键点优化过程完成关键点优化,并把实际关键点存入数组cluster_part_key 中,由步骤3.1至步骤3.8实现:
步骤3.1,设置候选关键点区域生长根节点,临时的候选关键点集合,候选 关键点到质心的距离及每个候选关键点的标记位,分别记为root_seg, NT(root_seg),D(root_seg)和L_flag,并置标记位l_flag为0;
步骤3.2,取任意标记位不为1的候选关键点root_seg存入临时数组 NT(root_seg),并置标记位为1;
步骤3.3,依次判断其他的候选关键点p是否在root_seg的k近邻 (near(root_seg))中,如果在其邻域内,则存入数组NT(root_seg)并置标记位为1, 直到所有的关键点均判断完成;
步骤3.4,如果关键点p在点root_seg的邻域内,设置p为root_seg并重复步 骤(2),直到当前关键点的邻域内不存在未分配的关键点;
步骤3.5,根据数组NT(root_seg)中关键点,计算NT(root_seg)中所有关键点 坐标的均值,粗略地作为质心centroid(root_seg)的坐标;
步骤3.6,计算NT(root_seg)中所有点到centroid(root_seg)的距离,并记录在 D(root_seg);
步骤3.7,取D(root_seg)中值最小的点最为当前集群中唯一保留的关键点, 并把NT(root_seg)中其他点加入待删除关键点序列PDEL;
步骤3.8,重复步骤3.2至步骤3.7,直到所有候选关键点的标记位均为1, 删除队列L中的待删除关键点PDEL,得到最终优化后的关键点队列L_end。
再进一步,在步骤4中,弹出关键点队列L中的第一点,以该点作为种子点 进行区域生长,寻找满足同一分区条件的点,将其增加到同一个点集中,直到 区域无法生长,集合作为第一个聚类。循环上述区域生长过程,直到关键点队 列中全部关键点均作为种子点生长完成,最终形成n个点集 cluster_list1…cluster_listn,由步骤4.1至步骤4.6实现:
步骤4.1,从优化后的关键点队列L_end中依次选择关键点作为骨架区域生 长的根结点root_seg,在点root_seg的邻域near(p)内选择任一邻域点pn,形成 区域生长标准向量normal1,并将这两个点视为一个分割区域SEGi;
步骤4.2,选择当前关键点的其余任意标记位不为1的邻域点与关键点形成 方向向量normal2,计算标准向量normal1和normal2的夹角,如果夹角小于 angle_flag,则将该点加入分割区域SEGi,并标记该点标记位为1;否则不做任 何处理;
步骤4.3,设置pn为区域生长的种子点root_seg,重复步骤4.2;
步骤4.4,重复步骤4.2至步骤4.3直到当前种子点的邻域内包含有其余的关 键点,或者邻域内没有骨架点可以生长。
步骤4.5,重复步骤4.2至步骤4.4,当前根节点的邻域点全部生成分割区域cluster_listk,其中k为1到任意正整数;
步骤4.6,重复步骤4.1至步骤4.5,直到所有的关键点均生长完成,得到n 个分割区域cluster_list1…cluster_listn。
更进一步,在步骤5中,对于步骤4中得到的n个点集,通过计算两个分 割区域的相似性把点集cluster_listk(k∈[1,n])与其相邻点集进行合并,得到n’ 个新的点集cluster_list1…cluster_listn’,由步骤5.1至步骤5.3实现:
步骤5.1,计算骨架点中每个点与它的邻域点的距离的均值IDXDistance,并 计算出每个分割区域与其它分割区域的最小距离MINDistance,即满足公式(4):
IDXDistance≤MINDistance<2IDXDistance(4)
步骤5.2,计算不同分割区域中不同点连线的方向向量,以不同方向向量的 夹角angle为特征charact,对于满足条件angle<angle_flag,特征值charact+1;
步骤5.3,对特定要合并的区域选择其满足条件(4)并且charact最大的相应临 近区域,进行连个分割区域的合并,最终得到n’个分割区域 cluster_list1…cluster_listn’。
本发明采用以上技术方案,相对于现有三维模型分割方法,通过骨架保持三 维模型数据的良好特性,对三维模型细微特征进行了有效分割;同时骨架数据 的数据量明显少于原始三维模型数据,分割过程中速度有所提高,时间代价相 应减小。
附图说明
图1是本发明的方法流程图;
图2是使用形状直径函数分割结果;
图3是使用k-mean聚类方法分割结果;
图4是使用随机割方法的分割结果;
图5是本发明的分割结果。
具体实施方式
下面结合附图和实例对本发明作进一步的详细描述。
如图1所示,本发明中的基于骨架的三维点云模型分割方法,其包括步骤1 至步骤6:
步骤1,对输入的三维模型数据source进行面片重组,并通过泰森多边形极 点计算内侧骨架,然后使用迭代网格收缩算法提取薄骨骨架结构,得到骨架数 据skeleton;
步骤2,在骨架数据skeleton中,计算每个骨架点的K近邻点,并置骨架点 的标记位skeleton_flag为0,并计算任意两个K邻域点与当前骨架点形成的向量 的夹角angle,并与夹角的阈值angle_flag进行比较,若angle>angle_flag或者 angle<π-angle_flag,则置该骨架点的标记位near_flag_p为-1,否则near_flag_p 为1,然后将所有邻域点的标记位相加作为点p的标记位skeleton_flag的值;循环 计算骨架点标记位的过程,直到全部骨架点的标记位计算结束,选择骨架点标 记位skeleton_flag>0的点作为候选关键点,并存储到队列L;
该步骤中向量夹角的阈值范围一般为10°~35°,此处取值15°,K近邻 算法中k的取值范围一般为5~11,这里k=8。具体的,该步骤可以通过如下步 骤2.1至步骤2.6实现:
步骤2.1,设置骨架数据点标记位和向量夹角的阈值,分别记为skeleton_flag 和angle_flag,并置skeleton_flag为0;
步骤2.2,以骨架数据任意点p为中心,利用K近邻算法计算离p最近的K 个邻域点,记为near(p),并为邻域点设置标记位near_flag_p(i,j),且置为0;
步骤2.3,使用p点的邻域点坐标减去p点坐标形成K个方向向量n1,n2…nk;
步骤2.4,利用公式(1)计算点p邻域内任意两个方向向量n1,n2…nk的夹角 angle,并与设置的角度阈值angle_flag进行比较,如公式(2)所示,若满足 1angle≤angle_flag∪angle≥π-angle_flag,则设置该角度对应的标记位 near_flag_p(i,j)为1,否则置标记位near_flag_p(i,j)为-1;
这里i≠j;
步骤2.5,通过步骤2.4求出的邻域点的标记位的值,根据公式(3)计算骨架点 的标记信息,并置当前点的标记位skeleton_flag为相应值:
步骤2.6,通过步骤2.1至步骤2.5,求出的每个点标记位skeleton_flag的值, 然后选择skeleton_flag>0的点作为候选关键点,并存放在队列L中;
步骤3,由于步骤2中的得到的候选关键点存在聚集的情况,通过在候选关 键点集合中进行关键点区域生长,得到聚集在同一个区域的关键点的集合 cluster_part_key_temp,然后把这些关键点围成的区域看作多边形,通过质心公 式计算多边形的质心,接下来分别求这个区域内的候选关键点到质心的距离, 最后得到距离局部区域质心最近的候选关键点作为实际关键点,循环关键点优 化过程完成关键点优化,并把实际关键点存入数组cluster_part_key中。接下来 通过步骤3.1到步骤3.8进行详细说明:
步骤3.1,设置候选关键点区域生长根节点,临时的候选关键点集合,候选 关键点到质心的距离及每个候选关键点的标记位,分别记为root_seg, NT(root_seg),D(root_seg)和L_flag,并置标记位l_flag为0;
步骤3.2,取任意标记位不为1的候选关键点root_seg存入临时数组 NT(root_seg),并置标记位为1;
步骤3.3,依次判断其他的候选关键点p是否在root_seg的k近邻 (near(root_seg))中,如果在其邻域内,则存入数组NT(root_seg)并置标记位为1, 直到所有的关键点均判断完成;
步骤3.4,如果关键点p在点root_seg的邻域内,设置p为root_seg并重复步 骤(2),直到当前关键点的邻域内不存在未分配的关键点;
步骤3.5,根据数组NT(root_seg)中关键点,计算NT(root_seg)中所有关键点 坐标的均值,粗略地作为质心centroid(root_seg)的坐标;
步骤3.6,计算NT(root_seg)中所有点到centroid(root_seg)的距离,并记录在 D(root_seg);
步骤3.7,取D(root_seg)中值最小的点最为当前集群中唯一保留的关键点, 并把NT(root_seg)中其他点加入待删除关键点序列PDEL;
步骤3.8,重复步骤3.2至步骤3.7,直到所有候选关键点的标记位均为1, 删除队列L中的待删除关键点PDEL,得到最终优化后的关键点队列L_end;
步骤4,弹出关键点队列L_end中的第一点,以该点作为种子点进行区域生 长,寻找满足同一分区条件的点,将其增加到同一个点集中,直到区域无法生 长,集合作为第一个聚类。循环上述区域生长过程,直到关键点队列中全部关 键点均作为种子点生长完成,最终形成n个点集cluster_list1…cluster_listn;
优化后的关键点帮我们去除了影响最终分割结果的关键点,极大的提高了区 域生长时终止条件的准确性,以下通过步骤4.1至4.6对区域生长方法进行具体 说明:
步骤4.1,从优化后的关键点队列L_end中依次选择关键点作为骨架区域生 长的根结点root_seg,在点root_seg的邻域near(p)内选择任一邻域点pn,形成 区域生长标准向量normal1,并将这两个点视为一个分割区域SEGi;
步骤4.2,选择当前关键点的其余任意标记位不为1的邻域点与关键点形成 方向向量normal2,计算标准向量normal1和normal2的夹角,如果夹角小于 angle_flag,则将该点加入分割区域SEGi,并标记该点标记位为1(标志位表示 该点是否分配);否则不做任何处理;
步骤4.3,设置pn为区域生长的种子点root_seg,重复步骤4.2;
步骤4.4,重复步骤4.2至步骤4.3直到当前种子点的邻域内包含有其余的关 键点,或者邻域内没有骨架点可以生长。
步骤4.5,重复步骤4.2至步骤4.4,当前根节点的邻域点全部生成分割区域cluster_listk,其中k为1到任意正整数;
步骤4.6,重复步骤4.1至步骤4.5,直到所有的关键点均生长完成,得到n 个分割区域cluster_list1…cluster_listn。
步骤5,对于步骤4中得到的n个点集,通过计算两个分割区域的相似性把 点集cluster_listk(k∈[1,n])与其相邻点集进行合并,得到n’个新的点集 cluster_list1…cluster_listn’;
步骤5.1,计算骨架点中每个点与它的邻域点的距离的均值IDXDistance,并 计算出每个分割区域与其它分割区域的最小距离MINDistance,即满足公式(4):
IDXDistance≤MINDistance<2IDXDistance (4)
步骤5.2,计算不同分割区域中不同点连线的方向向量,以不同方向向量的 夹角angle为特征charact,对于满足条件angle<angle_flag,特征值charact+1;
步骤5.3,对特定要合并的区域选择其满足条件(4)并且charact最大的相应临 近区域,进行连个分割区域的合并,最终得到n’个分割区域 cluster_list1…cluster_listn’。
步骤6,根据cluster_list1…cluster_listn’中的点与原始三维模型数据的关系, 把cluster_list1…cluster_listn’中的数据点与原始点进行映射,其得到的不同区域 就是三维模型分割的最终结果。
为表明本发明的具有以上优点,分别利用形状直径函数,K-mean聚类, 随机割方法以及本发明的方法对同一个三维模型进行分割。图2是使用形状直 径函数分割结果;图3是使用k-mean聚类方法分割结果;图4是使用随机割方 法的分割结果;图5是本发明的分割结果。表1为四种方法在兰德指数评价标 准下的评估数据。
从图2,图3,图4,图5对比中可以看出,本发明的三维模型分割结果更 加接近人类在语义上对物题的分割,且没有出现大面积的过分割和欠分割。
表1使用兰德指数对不同分割方法评估对比
方法 | 形状直径函数 | K-mean | 随机割 | 本发明的方法 |
兰德指数 | 0.171 | 0.137 | 0.136 | 0.123 |
兰德指数衡量两个相同形状的分割之间的相似性。以上结果是与人类分割结 果比价生成的值,即四种不同方法的分割结果与人类分割结果的差异性。从表 一中对比数据可以看出,本发明的方法与人类分割结果的差异性最小,本发明 对于三维模型的分割效果更好。
Claims (5)
1.一种基于骨架的三维点云模型分割方法,其特征在于,所述三维点云模型分割方法步骤如下:
步骤1,对输入的三维模型数据source进行面片重组,并通过泰森多边形极点计算内侧骨架,然后使用迭代网格收缩算法提取薄骨骨架结构,得到骨架数据skeleton;
步骤2,在骨架数据skeleton中,计算每个骨架点的K近邻点,并置骨架点的标记位skeleton_flag为0,并计算任意两个K邻域点与当前骨架点形成的向量的夹角angle,并与夹角的阈值angle_flag进行比较,若angle>angle_flag或者angle<π-angle_flag,则置该骨架点的标记位near_flag_p为-1,否则near_flag_p为1,然后将点所有邻域点的标记位相加作为点p的标记位skeleton_flag的值;循环计算骨架点标记位的过程,直到全部骨架点的标记位计算结束,选择骨架点标记位skeleton_flag>0的点作为候选关键点,并存储到队列L;
步骤3,由于步骤2中的得到的候选关键点存在聚集的情况,通过在候选关键点集合中进行关键点区域生长,得到聚集在同一个区域的关键点的集合cluster_part_key_temp,然后把这些关键点围成的区域看作多边形,通过质心公式计算多边形的质心,接下来分别求这个区域内的候选关键点到质心的距离,最后得到距离局部区域质心最近的候选关键点作为实际关键点,循环关键点优化过程完成关键点优化,并把实际关键点存入数组cluster_part_key中;
步骤4,弹出关键点队列L中的第一点,以该点作为种子点进行区域生长,寻找满足同一分区条件的点,将其增加到同一个点集中,直到区域无法生长,集合作为第一个聚类;循环上述区域生长过程,直到关键点队列中全部关键点均作为种子点生长完成,最终形成n个点集cluster_list1…cluster_listn;
步骤5,对于步骤4中得到的n个点集,通过计算两个分割区域的相似性把点集cluster_listk(k∈[1,n])与其相邻点集进行合并,得到n’个新的点集cluster_list1…cluster_listn’;
步骤6,根据cluster_list1…cluster_listn’中的点与原始三维模型数据的关系,把cluster_list1…cluster_listn’中的数据点与原始点进行映射,其得到的不同区域就是三维模型分割的最终结果。
2.根据权利要求1所述的基于骨架的三维点云模型分割方法,其特征在于,所述步骤2中,在骨架数据skeleton中,计算每个骨架点的K近邻点,并置骨架点的标记位skeleton_flag为0,并计算任意两个K邻域点与当前骨架点形成的向量的夹角angle,并与夹角的阈值angle_flag进行比较,若angle>angle_flag或者angle<π-angle_flag,则置该骨架点的标记位near_flag_p为-1,否则near_flag_p为1,然后将点所有邻域点的标记位相加作为点p的标记位skeleton_flag的值。循环执行上述过程,直到全部骨架点计算结束,选择骨架点标记位skeleton_flag>0的点作为候选关键点,并存储到队列L,由步骤2.1至步骤2.6实现:
步骤2.1,设置骨架数据点标记位和向量夹角的阈值,分别记为skeleton_flag和angle_flag,并置skeleton_flag为0;
步骤2.2,以骨架数据任意点p为中心,利用k-近邻算法计算离p最近的K个邻域点,记为near(p),并为邻域点设置标记位near_flag_p(i,j),且置为0;
步骤2.3,使用p点的邻域点坐标减去p点坐标形成K个方向向量n1,n2…nk;
步骤2.4,利用公式(1)计算点p邻域内任意两个方向向量n1,n2…nk的夹角angle,并与设置的角度阈值angle_flag进行比较,如公式(2)所示,若满足1angle≤angle_flag∪angle≥π-angle_flag,则设置该角度对应的标记位near_flag_p(i,j)为1,否则置标记位near_flag_p(i,j)为-1;
这里i≠j;
步骤2.5,通过步骤2.4求出的邻域点的标记位的值,根据公式(3)计算骨架点的标记信息,并置当前点的标记位skeleton_flag为相应值:
步骤2.6,通过步骤2.1至步骤2.5,求出的每个点标记位skeleton_flag的值,然后选择skeleton_flag>0的点作为候选关键点,并存放在队列L中。
3.根据权利要求2所述的基于骨架的基于骨架的三维点云模型分割方法,其特征在于,所述步骤3中,由于步骤2中的得到的候选关键点存在聚集的情况,通过在候选关键点集合中进行关键点区域生长,得到聚集在同一个个区域的关键点的集合cluster_part_key_temp,然后把这些关键点围成的区域看作多变形,通过质心公式计算计算多边形的质心,接下来分别求这个区域内的候选关键点到质心的距离,最后得到距离局部区域质心最近的候选关键点作为实际关键点,循环上述过程完成关键点的优化,并把实际关键点存入数组cluster_part_key中,由步骤3.1至步骤3.8实现:
步骤3.1,设置候选关键点区域生长根节点,临时的候选关键点集合,候选关键点到质心的距离及每个候选关键点的标记位,分别记为root_seg,NT(root_seg),D(root_seg)和L_flag,并置标记位l_flag为0;
步骤3.2,取任意标记位不为1的候选关键点root_seg存入临时数组NT(root_seg),并置标记位为1;
步骤3.3,依次判断其他的候选关键点p是否在root_seg的k近邻(near(root_seg))中,如果在其邻域内,则存入数组NT(root_seg)并置标记位为1,直到所有的关键点均判断完成;
步骤3.4,如果关键点p在点root_seg的邻域内,设置p为root_seg并重复步骤(2),直到当前关键点的邻域内不存在未分配的关键点;
步骤3.5,根据数组NT(root_seg)中关键点,计算NT(root_seg)中所有关键点坐标的均值,粗略地作为质心centroid(root_seg)的坐标;
步骤3.6,计算NT(root_seg)中所有点到centroid(root_seg)的距离,并记录在D(root_seg);
步骤3.7,取D(root_seg)中值最小的点最为当前集群中唯一保留的关键点,并把NT(root_seg)中其他点加入待删除关键点序列PDEL;
步骤3.8,重复步骤3.2至步骤3.7,直到所有候选关键点的标记位均为1,删除队列L中的待删除关键点PDEL,得到最终优化后的关键点队列L_end。
4.根据权利要求3所述的基于骨架的三维点云模型分割方法,其特征在于,所述步骤4中,弹出关键点队列L中的第一点,以该点作为种子点进行区域生长,寻找满足同一分区条件的点,将其增加到同一个点集中,直到区域无法生长,集合作为第一个聚类。循环执行以上过程,直到关键点队列中全部关键点均作为种子点生长完成,最终形成n个点集cluster_list1…cluster_listn,由步骤4.1至步骤4.6实现:
步骤4.1,从优化后的关键点队列L_end中依次选择关键点作为骨架区域生长的根结点root_seg,在点root_seg的邻域near(p)内选择任一邻域点pn,形成区域生长标准向量normal1,并将这两个点视为一个分割区域SEGi;
步骤4.2,选择当前关键点的其余任意标记位不为1的邻域点与关键点形成方向向量normal2,计算标准向量normal1和normal2的夹角,如果夹角小于angle_flag,则将该点加入分割区域SEGi,并标记该点标记位为1;否则不做任何处理;
步骤4.3,设置pn为区域生长的种子点root_seg,重复步骤4.2;
步骤4.4,重复步骤4.2至步骤4.3直到当前种子点的邻域内包含有其余的关键点,或者邻域内没有骨架点可以生长;
步骤4.5,重复步骤4.2至步骤4.4,当前根节点的邻域点全部生成分割区域cluster_listk,其中k为1到任意正整数;
步骤4.6,重复步骤4.1至步骤4.5,直到所有的关键点均生长完成,得到n个分割区域cluster_list1…cluster_listn。
5.根据权利要求1-4任一项所述的基于骨架的三维点云模型分割方法,其特征在于,所述步骤5中,对于步骤4中得到的n个点集,通过计算两个分割区域的相似性把点集cluster_listk(k∈[1,n])与其相邻点集进行合并,得到n’个新的点集cluster_list1…cluster_listn’,由步骤5.1至步骤5.3实现:
步骤5.1,计算骨架点中每个点与它的邻域点的距离的均值IDXDistance,并计算出每个分割区域与其它分割区域的最小距离MINDistance,即满足公式(4):
IDXDistance≤MINDistance<2IDXDistance (4)
步骤5.2,计算不同分割区域中不同点连线的方向向量,以不同方向向量的夹角angle为特征charact,对于满足条件angle<angle_flag,特征值charact+1;
步骤5.3,对特定要合并的区域选择其满足条件(4)并且charact最大的相应临近区域,进行连个分割区域的合并,最终得到n’个分割区域cluster_list1…cluster_listn’。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810788070.6A CN109064471B (zh) | 2018-07-18 | 2018-07-18 | 一种基于骨架的三维点云模型分割方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810788070.6A CN109064471B (zh) | 2018-07-18 | 2018-07-18 | 一种基于骨架的三维点云模型分割方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109064471A true CN109064471A (zh) | 2018-12-21 |
CN109064471B CN109064471B (zh) | 2021-09-03 |
Family
ID=64817064
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810788070.6A Active CN109064471B (zh) | 2018-07-18 | 2018-07-18 | 一种基于骨架的三维点云模型分割方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109064471B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109887072A (zh) * | 2019-01-16 | 2019-06-14 | 中德(珠海)人工智能研究院有限公司 | 一种三维模型的提取系统 |
CN110827233A (zh) * | 2019-08-29 | 2020-02-21 | 杭州电子科技大学 | 一种牙齿三维点云数据表面窝沟区域的提取方法 |
CN110930389A (zh) * | 2019-11-22 | 2020-03-27 | 北京灵医灵科技有限公司 | 三维医学模型数据的区域分割方法、装置和存储介质 |
CN110974488A (zh) * | 2019-12-31 | 2020-04-10 | 吉林大学 | 基于断骨骨面的泰森多边形仿生人工骨结构的制备方法 |
CN111161267A (zh) * | 2019-12-09 | 2020-05-15 | 西安工程大学 | 一种三维点云模型的分割方法 |
CN112183159A (zh) * | 2019-07-03 | 2021-01-05 | 四川大学 | 利用关键点构建非人类目标在图像中的骨架模型 |
CN112907602A (zh) * | 2021-01-28 | 2021-06-04 | 中北大学 | 一种基于改进k-近邻算法的三维场景点云分割方法 |
CN114582030A (zh) * | 2022-05-06 | 2022-06-03 | 湖北工业大学 | 一种基于服务机器人的行为识别方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101877128A (zh) * | 2009-12-23 | 2010-11-03 | 中国科学院自动化研究所 | 一种三维场景中不同物体的分割方法 |
CN102682475A (zh) * | 2012-05-11 | 2012-09-19 | 北京师范大学 | 一种基于地面激光雷达点云数据自适应构建三维树木骨架的方法 |
US20140125663A1 (en) * | 2010-12-03 | 2014-05-08 | Institute of Automation, Chinese Academy of Scienc | 3d model shape analysis method based on perception information |
US9390552B1 (en) * | 2013-05-23 | 2016-07-12 | Shenzhen Institutes Of Advanced Technology Chinese Academy Of Sciences | Method and device for extracting skeleton from point cloud |
CN106327506A (zh) * | 2016-08-05 | 2017-01-11 | 北京三体高创科技有限公司 | 一种基于概率分区合并的三维模型分割方法 |
CN107330901A (zh) * | 2017-06-29 | 2017-11-07 | 西安理工大学 | 一种基于骨架的物体构件分解方法 |
CN107330903A (zh) * | 2017-06-29 | 2017-11-07 | 西安理工大学 | 一种人体点云模型的骨架提取方法 |
-
2018
- 2018-07-18 CN CN201810788070.6A patent/CN109064471B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101877128A (zh) * | 2009-12-23 | 2010-11-03 | 中国科学院自动化研究所 | 一种三维场景中不同物体的分割方法 |
US20140125663A1 (en) * | 2010-12-03 | 2014-05-08 | Institute of Automation, Chinese Academy of Scienc | 3d model shape analysis method based on perception information |
CN102682475A (zh) * | 2012-05-11 | 2012-09-19 | 北京师范大学 | 一种基于地面激光雷达点云数据自适应构建三维树木骨架的方法 |
US9390552B1 (en) * | 2013-05-23 | 2016-07-12 | Shenzhen Institutes Of Advanced Technology Chinese Academy Of Sciences | Method and device for extracting skeleton from point cloud |
CN106327506A (zh) * | 2016-08-05 | 2017-01-11 | 北京三体高创科技有限公司 | 一种基于概率分区合并的三维模型分割方法 |
CN107330901A (zh) * | 2017-06-29 | 2017-11-07 | 西安理工大学 | 一种基于骨架的物体构件分解方法 |
CN107330903A (zh) * | 2017-06-29 | 2017-11-07 | 西安理工大学 | 一种人体点云模型的骨架提取方法 |
Non-Patent Citations (1)
Title |
---|
GUANGLIANG CHENG 等: ""URBAN ROAD EXTRACTION VIA GRAPH CUTS BASED PROBABILITY PROPAGATION"", 《2014 IEEE INTERNATIONAL CONFERENCE ON IMAGE PROCESSING》 * |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109887072A (zh) * | 2019-01-16 | 2019-06-14 | 中德(珠海)人工智能研究院有限公司 | 一种三维模型的提取系统 |
CN112183159A (zh) * | 2019-07-03 | 2021-01-05 | 四川大学 | 利用关键点构建非人类目标在图像中的骨架模型 |
CN110827233A (zh) * | 2019-08-29 | 2020-02-21 | 杭州电子科技大学 | 一种牙齿三维点云数据表面窝沟区域的提取方法 |
CN110827233B (zh) * | 2019-08-29 | 2022-06-14 | 杭州电子科技大学 | 一种牙齿三维点云数据表面窝沟区域的提取方法 |
CN110930389A (zh) * | 2019-11-22 | 2020-03-27 | 北京灵医灵科技有限公司 | 三维医学模型数据的区域分割方法、装置和存储介质 |
CN110930389B (zh) * | 2019-11-22 | 2023-06-30 | 北京灵医灵科技有限公司 | 三维医学模型数据的区域分割方法、装置和存储介质 |
CN111161267A (zh) * | 2019-12-09 | 2020-05-15 | 西安工程大学 | 一种三维点云模型的分割方法 |
CN110974488A (zh) * | 2019-12-31 | 2020-04-10 | 吉林大学 | 基于断骨骨面的泰森多边形仿生人工骨结构的制备方法 |
CN110974488B (zh) * | 2019-12-31 | 2021-09-14 | 吉林大学 | 基于断骨骨面的泰森多边形仿生人工骨结构的制备方法 |
CN112907602A (zh) * | 2021-01-28 | 2021-06-04 | 中北大学 | 一种基于改进k-近邻算法的三维场景点云分割方法 |
CN114582030A (zh) * | 2022-05-06 | 2022-06-03 | 湖北工业大学 | 一种基于服务机器人的行为识别方法 |
CN114582030B (zh) * | 2022-05-06 | 2022-07-22 | 湖北工业大学 | 一种基于服务机器人的行为识别方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109064471B (zh) | 2021-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109064471A (zh) | 一种基于骨架的三维点云模型分割方法 | |
CN103207879B (zh) | 图像索引的生成方法及设备 | |
CN109993748A (zh) | 一种基于点云处理网络的三维网格物体分割方法 | |
CN101783016B (zh) | 一种基于形状分析的树冠外形提取方法 | |
CN104346481B (zh) | 一种基于动态同步模型的社区检测方法 | |
CN109166145A (zh) | 一种基于聚类分割的果树叶片生长参数提取方法及系统 | |
CN105740915B (zh) | 一种融合感知信息的协同分割方法 | |
CN107341825A (zh) | 一种用于大场景高精度三维激光测量点云数据的简化方法 | |
CN109360236B (zh) | 一种向日葵花盘尺寸测量方法 | |
CN102542560B (zh) | 一种水稻移栽后密度自动检测的方法 | |
CN111222536A (zh) | 一种基于决策树分类的城市绿色空间信息提取方法 | |
CN106156281A (zh) | 基于Hash‑Cube空间层次划分结构的最近邻点集快速检索方法 | |
CN105069777A (zh) | 一种预备体网格模型的颈缘线自动提取方法 | |
CN105678818A (zh) | 面向对象分类技术实现河口滩涂分类面积提取的方法 | |
Zhu et al. | A method for detecting tomato canopies’ phenotypic traits based on improved skeleton extraction algorithm | |
CN107123138B (zh) | 基于vanilla-R点对剔除策略的点云配准方法 | |
CN106023317B (zh) | 一种用于大数据测试的加权Voronoi图生成方法 | |
CN106650916B (zh) | 一种基于蚁群优化的网格分割方法 | |
CN103871089A (zh) | 一种基于融合的图像超像素网格化方法 | |
CN107993242A (zh) | 基于机载LiDAR点云数据缺失区域边界提取方法 | |
CN109241628A (zh) | 基于图谱理论和聚类的三维cad模型分割方法 | |
CN104766367B (zh) | 一种计算三维模型处理中三维网格拓扑结构图构造方法 | |
CN106485733A (zh) | 一种在红外图像中跟踪感兴趣目标的方法 | |
CN103793504B (zh) | 一种基于用户偏好与项目属性的聚类初始点选择方法 | |
CN111652885B (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 |