CN107330903B - 一种人体点云模型的骨架提取方法 - Google Patents
一种人体点云模型的骨架提取方法 Download PDFInfo
- Publication number
- CN107330903B CN107330903B CN201710514436.6A CN201710514436A CN107330903B CN 107330903 B CN107330903 B CN 107330903B CN 201710514436 A CN201710514436 A CN 201710514436A CN 107330903 B CN107330903 B CN 107330903B
- Authority
- CN
- China
- Prior art keywords
- points
- skeleton
- point
- model
- area
- 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
- 238000000605 extraction Methods 0.000 title claims abstract description 24
- 238000005457 optimization Methods 0.000 claims abstract description 19
- 238000000034 method Methods 0.000 claims abstract description 18
- 238000000638 solvent extraction Methods 0.000 claims description 6
- 230000036544 posture Effects 0.000 claims description 4
- 101000912561 Bos taurus Fibrinogen gamma-B chain Proteins 0.000 claims description 3
- 230000001174 ascending effect Effects 0.000 claims description 3
- 238000004364 calculation method Methods 0.000 claims description 3
- 125000004122 cyclic group Chemical group 0.000 claims description 3
- 239000003550 marker Substances 0.000 claims description 3
- 239000011159 matrix material Substances 0.000 claims description 3
- 238000005192 partition Methods 0.000 claims description 3
- 238000004422 calculation algorithm Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 2
- 238000009966 trimming Methods 0.000 description 2
- 235000011449 Rosa Nutrition 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000003909 pattern recognition Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
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/12—Edge-based segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/20—Image preprocessing
- G06V10/34—Smoothing or thinning of the pattern; Morphological operations; Skeletonisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/40—Extraction of image or video features
- G06V10/44—Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components
- G06V10/457—Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components by analysing connectivity, e.g. edge linking, connected component analysis or slices
-
- 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
-
- 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/30—Subject of image; Context of image processing
- G06T2207/30196—Human being; Person
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Multimedia (AREA)
- Image Generation (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明公开了一种人体点云模型的骨架提取方法,其特征在于,具体按照以下步骤实施:步骤1:基于切片思想,获取人体模型骨架点,连接骨架点,生成模型初始曲线骨架;步骤2:对初始曲线骨架进行粗优化,去除噪声点或者空洞产生的多余分叉点和内部分支;步骤3:利用在待优化骨架线上插入插值点对模型曲线骨架进行精优化,得到最终的骨架信息。本发明一种人体点云模型的骨架提取方法解决了现有技术仅适用于特定的模型或者很难针对模型骨架曲线所有性质达到最理想状态,能够自动地完成人体点云模型的骨架提取。
Description
技术领域
本发明属于计算机图形学和虚拟现实相结合的交叉学科技术领域,具体涉及一种人体点云模型的骨架提取方法。
背景技术
三维模型的骨架信息是一种强有力的形状描述符,可以描述物体的拓扑结构和关键形体特征,因此三维物体的骨架提取是计算机图形学领域的一个重要研究热点,在模式识别、图像检索和虚拟运动、以及医学影像、动画动漫,物体变形研究等领域有着广泛的应用。
针对三维模型骨架提取基本方法层出不穷,并且有很多新的算法不断出现。总体来说,由于点云模型不包含显式的拓扑连接信息,而且还有可能遇到部分数据缺失的情况,导致三维点云模型骨架的提取变得更有难度。现存的点云骨架提取算法或多或少地对模型外形有形状先验性限制。
①基于拓扑细化的骨架提取方法能够很好的简化原始模型,获得边缘较为光滑,与原始模型拓扑结构相一致的良好骨架结构。但是,需要用户输入修剪参数,不断调整以确定适当的修剪参数来计算理想骨架。
②基于收缩方法收缩过程不会改变原始网格的连通性,能够确保最终的曲线骨架和原始物体保持良好的拓扑一致性;由于几何收缩过程是基于迭代隐式平滑操作的,能够处理噪声,使得它对噪声不敏感;但是,该曲线骨架提取框架只适用于具有连通性的封闭模型,这是由于几何收缩需要为每个顶点定义一个良好的拉普拉斯算子;虽然该算法对模型分辨率基本不敏感,但它不能对非常粗糙的模型产生良好的骨架,对于有5000多个顶点的普通模型都可以生成良好的曲线骨架。
③基于L1中值骨架提取方法可以直接在原始扫描数据上进行操作,即就是不需要任何预处理,包括去噪,去除离群值,法线骨架,空间离散化,数据完整性,或者网格化或者参数设置等;但是假如噪声或者缺失数据的数量非常大,算法参数设置不合理时,该算法可能会产生错误输出。
④基于ROSA的骨架提取方法过程中利用法矢信息对缺失数据进行有效弥补,因此对于大面积数据缺失的多分支点云模型,利用该方法提取的骨架仍能正确地表示原始模型的拓扑结构,同时提取的模型骨架与模型的变换和姿态无关的。但是,由于该算法更多的关注于算法的鲁棒性,进行了较多的预处理,并且进行了骨架分割、拼接等过程,因此算法时间复杂度较高,同时对于大规模点云模型,处理的空间复杂度也有待提高。
⑤基于距离变换的方法利用的是物体的连通性,对局部领域进行距离变换,从而直接抽取出物体的骨架点。物体内每一点的DT(Distance Transform)值被定义为这个点到边界点的最小距离。由于骨架点相对于物体的边界而言应当处于中心的位置,所以从理论上讲,最接近于物体中心的点应该具有最大的DT值。因此,DT值就为骨架点的确定提供有用的信息。
发明内容
本发明的目的是提供一种人体点云模型的骨架提取方法,解决了现有技术仅适用于特定的模型或者很难针对模型骨架曲线所有性质达到最理想状态的问题,能够自动地完成人体点云模型的骨架提取。
本发明所采用的技术方案是,一种人体点云模型的骨架提取方法,具体按照以下步骤实施:
步骤1:基于切片思想,获取人体模型骨架点,连接骨架点,生成模型初始曲线骨架;
步骤2:对初始曲线骨架进行粗优化,去除噪声点或者空洞产生的多余分叉点和内部分支;
步骤3:利用在待优化骨架线上插入插值点对模型曲线骨架进行精优化,得到最终的骨架信息。
本发明的特点还在于:
步骤1中获取人体模型骨架点具体为:
步骤1.1:求取人体点云模型的走向趋势;
步骤1.2:计算人体点云模型的最小包围盒;
步骤1.3:初始骨架点的计算。
步骤1.1具体为:
根据M求出模型的三个空间特征值λ1、λ2和λ3,比较λ1、λ2和λ3的大小,用其中最大的特征值对应的特征向量表示人体点云模型的走向趋势方向。
步骤1.2具体为:
旋转坐标轴并缩小AABB包围盒,记录每次旋转后的边界数据Di={xmax,xmin,ymax,ymin,zmax,zmin},比较每次坐标轴旋转后对应包围盒的体积,求得体积最小包围盒对应的Di和Vi,记录此时坐标轴的角度α′、β′、γ′,根据α′、β′、γ′的值来建立模型最小包围盒即为所求OBB最小包围盒;
根据最小包围盒长轴与yoz面的夹角α和与xoy面的夹角β作为模型绕z轴和x轴旋转角度,首先绕z周旋α后使得模型与yoz面平行,然后绕x轴旋转β是模型与xoy面平行;最终模型被转到基本垂直xoz坐标平面的位置。
步骤1.3具体为:
步骤1.3.1:人体模型的切片获取
沿着旋转后的y轴方向,给定步长h,将整个模型分成若干个高度为h的带状点集T,然后将T中的所有点投影到该带状点集的中间垂直于切割方向的横穿平面上,得到带状点集所有二维投影点集T′;
步骤1.3.2:投影区域划分
将二维投影区域网格化,即给定一个网格大小Ω,求得区域整体的最大宽度和最大高度η,根据η和Ω确定一个m×n大小的二维网格;其次,将m×n的网格按照先行后列的顺序进行初始化,给每个网格填充“0”表示该网格中没有点;然后,按照先列后行的顺序遍历网格,当网格中有点存在时,记为该网格被命中,将该网格中的所有点标记为“1”,表示“1”号区域的点,再以该网格为参考网格,分别检测与“命中”网格相邻八个方向上相邻的网格即上、右上、右、右下、下、左下、左、左上是否被“命中”,如果被“命中”,则给网格中的点做和参考网格中点相同的标记,如果没有被“命中”,继续下一列网格检测;当再次出现网格被“命中”时,此时,“命中”网格中的所有点标记为“2”,表示投影层中“2”区域的点,最后依次检测所有网格,将投影层上的点全部标记,按照点标记将投影层划分为不同区域,直到所有投影层二维区域划分结束;
步骤1.3.3:投影区域中心点计算
按照点x轴坐标值和z坐标值升序排序,当点集中点个数N为奇数时,分别取排序后两个集合中的中间元素x坐标x1和z坐标z1,则所求二维投影区域中心点为o(x1,z1);当点集中点个数N为偶数时,分别取排序后两个集合中的中间两个元素对应x轴坐标和z轴坐标,求其平均值x2和z2,则所求二维投影区域中心点为o(x2,z2);
步骤1.3.4:投影区域中心点标记
确定“基准层”
在所有切片中寻找到第一个划分区域数N最大的层作为“基准层”并记住该层的层号No,将该层中所有区域的标号作为其它层标号的标准,对其它层依次重新标记;
以“基准层”为标准,依次向上和向下重标记
先向上标记:取“基准层”中的区域中心点Oj作为参考点,“基准层”向上相邻的切片中的中心点Oi作为标记点,计算ξ=d/h,判断ξ和λ大小关系,若ξ≥λ,则表示当前标记点和参考点偏离比较远,此时,当参考点的标记为“1”时,标记点标记为“N+1”,更新N=N+1;若ξ<λ,则表示当前标记点和参考点距离比较近,此时,标记点和参考点做统一标记,直到“标记层”中所有区域的中心点都重新标记完为止;
改变“基准层”,迭代操作
当前标记层标记完后,以当前“标记层”为“基准层”,按照上述步骤迭代操作,直到模型的所有层都被重新标记完为止;
到此,将整个模型中属于同一个分支的区域中心点做了相同的标记;
步骤1.3.5:基于投影面积获得骨架点
首先逐一计算基准层中每一个区域面积S1、S2……Si,求得投影区域的总面积S:其中,n1为矩形区域上半部分点个数,n2为矩形区域下半部分点个数;同时记住该面积对应的区域号;然后在所有面积中选出最大的面积及其对应的区域号;此时,将最大面积对应的区域标志标记为“M”表示身躯部分,其余区域标志标记为“N”表示四肢部分;然后,根据步骤1.3.4中的标记方法,标记其余各层包含的所有区域中心点,标记完成后,所有主体部分的区域中心点标记全为“M”,所有分支部分的区域中心点标记全为“N”;由此可以得到一系列的骨架点;
步骤1.3.6:去除模型外的骨架点
设当前点P(x0,z0),首先求得区域点集中x坐标、z坐标对应的最大值和最小值xmax、xmin、zmax和zmin,以xmax、xmin、zmax和zmin做一个包围该区域的最小矩形T,当点P(x0,z0)坐标位于该矩形T之外时,那么可以认定判断点P(x0,z0)位于区域之外,将视为错误骨架点被剔除;当该点P位于T之内时,即
如果公式(3)成立,则点P(x0,z0)可能位于某一区域内部,继续下一步判定;将区域带状点集拟合成为一个n多边形T′,要判断的P点位于T′内还是外;在T′之外取一点P′(x1,z1),过P′向P做一条射线L,该射线的方程为:
其中,x∈[-∞,x0];
取T′内相邻的两个点,求解出一个多边形对应的一个边的直线方程为:
其中,x∈[xi,xj];
联立(4)和(5),求解方程组,若方程组根的个数为偶数时,也就是射线L与多边形T′交点的个数为偶数时,此时点P位于区域之外,若方程组根的个数为奇数时,也就是射线L与多边形T′交点的个数为奇数时,此时点P位于区域之内;
经过剔除模型外部的骨架点,由此确定了人体模型的初始骨架点集合SK。
步骤2对初始曲线骨架进行粗优化具体为:
步骤2.1:初始骨架线的获取
由于模型同一组成部分的骨架点有相同的分类和标记,因此,在同一组成部分骨架点连接时,按照区域号的顺序,将相邻层属于同一组成部分的骨架点相连,并且被连接的骨架点度加一,组成该组成部分的初始骨架线,迭代操作模型骨架点集划分结果中的每一个组成部分,直到所有组成部分骨架点都连接,就得到了整个模型的各个组成部分的初始骨架线;
在进行不同组成部分之间骨架线连接时,根据之前对骨架点集SK的重标记,将标记为“M”和标记为“N”的骨架点相连,标记为“M”的骨架点表示位于模型主体部分,标记为“N”的骨架点表示位于模型分支部分;分支部分的所有骨架点连接后形成的是一条折线L,L会有两个端点,由于人体姿态的不同将导致连接点的选择会不同,此时我们必须在L的两个端点中选择一个作为连接点和主体部分连接,依次将所有分支部分骨架线和主体部分骨架线连接;
步骤2.2:骨架线的粗优化
遍历所有骨架点,统计每个骨架点对应的度,找到度为3的骨架点并统计起个数:
如果度为3的骨架点个数为1,说明在人体胯部位置存在一个分叉点,此时没有错误分叉点;
如果为3的骨架点个数大于1,说明在除胯部位置存在错误分叉点;然后,以y轴坐标最大的点为基准点,将其余错误分叉点坐标更为成基准点坐标,实现错误分叉点合并;
在待处理骨架线上等距离的插入n个值,逐一判断插值点相对于模型的位置情况,若插值点位于模型之外,则按照一定方向调整主体部分连接点,再次判断插值点位置,循环操作,直到所有插值点位于模型内部,此时,待处理骨架线也对应被移动到了模型内部。
步骤3具体为:
根据骨架点的度确定待优化骨架线,将模型主体部分度为3或者度为4的骨架点视为分支点,将连接分支部分和分支点连接的骨架线视为待优化骨架线;其次,在待优化骨架线上等间距插入m个点使待优化骨架线离散化;然后,对于每一个插值点给定一个球形邻域,所有球形邻域内的点组成点集V,在插值点处,沿垂直于原始切割方向,厚度为两个插值点之间的距离d切割V,得到带状点集C,将C投影到经过插值点方向平行于xoy平面的平面Π上得到二维投影区域;最后,计算二维投影区域中心点oi,将插值点移动到oi位置处,直到所有插值点被移动到最终位置后,连接插值点形成优化处理后的分支点出模型骨架L,最终将L的端点分别和模型分支部分、主体部分相连,完成一条待优化处理骨架线段优化;迭代操作,直到所待优化处理骨架线段被处理完成,得到模型最终曲线骨架。
本发明的有益效果是:本发明一种人体点云模型的骨架提取方法中,实现的三维人体点云模型曲线骨架提取算法,基于切片求骨架点的思想,更好的保证了模型曲线骨架中轴性,根据人体模型拓扑关系设计分支骨架线连接算法,更好保证了模型曲线骨架的拓扑不变性,利用插值点方法对待优化骨架线进行优化处理,更好保证了模型曲线骨架的准确性。
附图说明
图1是采用本发明骨架提取方法中模型主趋势的走向示意图;
图2是采用本发明骨架提取方法中模型的有向包围盒建立;
图3是本发明骨架提取方法中的切片示意图;
图4是采用本发明骨架提取方法得到的初始骨架点结果图;
图5是本发明骨架提取方法中骨架线生成结果图;
图6是本发明骨架提取方法中骨架线的粗处理结果图;
图7是本发明骨架提取方法中骨架线的精细处理结果图。
具体实施方式
下面结合附图和具体实施方式对本发明进行详细说明。
本发明一种人体点云模型的骨架提取方法,具体按照以下步骤实施:
步骤1:基于切片思想,获取人体模型骨架点,连接骨架点,生成模型初始曲线骨架;
其中,获取人体模型骨架点具体为:
步骤1.1:求取人体点云模型的走向趋势,具体为:
根据M求出模型的三个空间特征值λ1、λ2和λ3,比较λ1、λ2和λ3的大小,用其中最大的特征值对应的特征向量表示人体点云模型的走向趋势方向,如图1所示。
步骤1.2:计算人体点云模型的最小包围盒,具体为:
旋转坐标轴并缩小AABB包围盒,记录每次旋转后的边界数据Di={xmax,xmin,ymax,ymin,zmax,zmin},比较每次坐标轴旋转后对应包围盒的体积,求得体积最小包围盒对应的Di和Vi,记录此时坐标轴的角度α′、β′、γ′,根据α′、β′、γ′的值来建立模型最小包围盒即为所求OBB最小包围盒;如图2所示。
根据最小包围盒长轴与yoz面的夹角α和与xoy面的夹角β作为模型绕z轴和x轴旋转角度,首先绕z周旋α后使得模型与yoz面平行,然后绕x轴旋转β是模型与xoy面平行;最终模型被转到基本垂直xoz坐标平面的位置。
步骤1.3:初始骨架点的计算,具体为:
步骤1.3.1:人体模型的切片获取
沿着旋转后的y轴方向,给定步长h,将整个模型分成若干个高度为h的带状点集T,如图3所示,在此基础上,将T中的所有点投影到该带状点集的中间垂直于切割方向的横穿平面上,得到带状点集所有二维投影点集T′;
步骤1.3.2:投影区域划分
将二维投影区域网格化,即给定一个网格大小Ω,求得区域整体的最大宽度和最大高度η,根据η和Ω确定一个m×n大小的二维网格;其次,将m×n的网格按照先行后列的顺序进行初始化,给每个网格填充“0”表示该网格中没有点;然后,按照先列后行的顺序遍历网格,当网格中有点存在时,记为该网格被命中,将该网格中的所有点标记为“1”,表示“1”号区域的点,再以该网格为参考网格,分别检测与“命中”网格相邻八个方向上相邻的网格(上、右上、右、右下、下、左下、左、左上)是否被“命中”,如果被“命中”,则给网格中的点做和参考网格中点相同的标记,如果没有被“命中”,继续下一列网格检测;当再次出现网格被“命中”时,此时,“命中”网格中的所有点标记为“2”,表示投影层中“2”区域的点,最后依次检测所有网格,将投影层上的点全部标记,按照点标记将投影层划分为不同区域,直到所有投影层二维区域划分结束;
步骤1.3.3:投影区域中心点计算
按照点x轴坐标值和z坐标值升序排序,当点集中点个数N为奇数时,分别取排序后两个集合中的中间元素x坐标x1和z坐标z1,则所求二维投影区域中心点为o(x1,z1);当点集中点个数N为偶数时,分别取排序后两个集合中的中间两个元素对应x轴坐标和z轴坐标,求其平均值x2和z2,则所求二维投影区域中心点为o(x2,z2);
步骤1.3.4:投影区域中心点标记
确定“基准层”
在所有切片中寻找到第一个划分区域数N最大的层作为“基准层”并记住该层的层号No,将该层中所有区域的标号作为其它层标号的标准,对其它层依次重新标记;
以“基准层”为标准,依次向上和向下重标记
先向上标记:取“基准层”中的区域中心点Oj作为参考点,“基准层”向上相邻的切片中的中心点Oi作为标记点,计算ξ=d/h,判断ξ和λ大小关系,若ξ≥λ,则表示当前标记点和参考点偏离比较远,此时,当参考点的标记为“1”时,标记点标记为“N+1”,更新N=N+1;若ξ<λ,则表示当前标记点和参考点距离比较近,此时,标记点和参考点做统一标记,直到“标记层”中所有区域的中心点都重新标记完为止;
改变“基准层”,迭代操作
当前标记层标记完后,以当前“标记层”为“基准层”,按照上述步骤迭代操作,直到模型的所有层都被重新标记完为止;
到此,将整个模型中属于同一个分支的区域中心点做了相同的标记;
步骤1.3.5:基于投影面积获得骨架点
首先逐一计算基准层中每一个区域面积S1、S2……Si,求得投影区域的总面积S:其中,n1为矩形区域上半部分点个数,n2为矩形区域下半部分点个数;同时记住该面积对应的区域号;然后在所有面积中选出最大的面积及其对应的区域号;此时,将最大面积对应的区域标志标记为“M”表示身躯部分,其余区域标志标记为“N”表示四肢部分;然后,根据步骤1.3.4中的标记方法,标记其余各层包含的所有区域中心点,标记完成后,所有主体部分的区域中心点标记全为“M”,所有分支部分的区域中心点标记全为“N”;由此可以得到一系列的骨架点;
步骤1.3.6:去除模型外的骨架点
设当前点P(x0,z0),首先求得区域点集中x坐标、z坐标对应的最大值和最小值xmax、xmin、zmax和zmin,以xmax、xmin、zmax和zmin做一个包围该区域的最小矩形T,当点P(x0,z0)坐标位于该矩形T之外时,那么可以认定判断点P(x0,z0)位于区域之外,将视为错误骨架点被剔除;当该点P位于T之内时,即
如果公式(3)成立,则点P(x0,z0)可能位于某一区域内部,继续下一步判定;将区域带状点集拟合成为一个n多边形T′,要判断的P点位于T′内还是外;在T′之外取一点P′(x1,z1),过P′向P做一条射线L,该射线的方程为:
其中,x∈[-∞,x0];
取T′内相邻的两个点,求解出一个多边形对应的一个边的直线方程为:
其中,x∈[xi,xj];
联立(4)和(5),求解方程组,若方程组根的个数为偶数时,也就是射线L与多边形T′交点的个数为偶数时,此时点P位于区域之外,若方程组根的个数为奇数时,也就是射线L与多边形T′交点的个数为奇数时,此时点P位于区域之内;
经过剔除模型外部的骨架点,由此确定了人体模型的初始骨架点集合SK,如图4所示。
步骤2:对初始曲线骨架进行粗优化,去除噪声点或者空洞产生的多余分叉点和内部分支;
对初始曲线骨架进行粗优化具体为:
步骤2.1:初始骨架线的获取
由于模型同一组成部分(如左胳膊、左腿等)的骨架点有相同的分类和标记,因此,在同一组成部分骨架点连接时,按照区域号的顺序,将相邻层属于同一组成部分的骨架点相连,并且被连接的骨架点度加一,组成该组成部分的初始骨架线,迭代操作模型骨架点集划分结果中的每一个组成部分,直到所有组成部分骨架点都连接,就得到了整个模型的各个组成部分的初始骨架线;
在进行不同组成部分之间骨架线连接时,根据之前对骨架点集SK的重标记,将标记为“M”和标记为“N”的骨架点相连,标记为“M”的骨架点表示位于模型主体部分,标记为“N”的骨架点表示位于模型分支部分;分支部分的所有骨架点连接后形成的是一条折线L,L会有两个端点,由于人体姿态的不同将导致连接点的选择会不同,此时我们必须在L的两个端点中选择一个作为连接点和主体部分连接,依次将所有分支部分骨架线和主体部分骨架线连接,得到如图5所示的骨架线连接图;
步骤2.2:骨架线的粗优化
遍历所有骨架点,统计每个骨架点对应的度(DEGREE),找到度为3的骨架点并统计起个数:
如果度为3的骨架点个数为1,说明在人体胯部位置存在一个分叉点,此时没有错误分叉点;
如果为3的骨架点个数大于1,说明在除胯部位置存在错误分叉点;然后,以y轴坐标最大的点为基准点,将其余错误分叉点坐标更为成基准点坐标,实现错误分叉点合并;
在待处理骨架线上等距离的插入n个值,逐一判断插值点相对于模型的位置情况,若插值点位于模型之外,则按照一定方向调整主体部分连接点,再次判断插值点位置,循环操作,直到所有插值点位于模型内部,此时,待处理骨架线也对应被移动到了模型内部。
通过以上两步可以得到如图6所示的粗处理结果。
步骤3:利用在待优化骨架线上插入插值点对模型曲线骨架进行精优化,得到最终的骨架信息,具体为:
根据骨架点的度确定待优化骨架线,将模型主体部分度为3或者度为4的骨架点视为分支点,将连接分支部分和分支点连接的骨架线视为待优化骨架线;其次,在待优化骨架线上等间距插入m个点使待优化骨架线离散化;然后,对于每一个插值点给定一个球形邻域,所有球形邻域内的点组成点集V,在插值点处,沿垂直于原始切割方向,厚度为两个插值点之间的距离d切割V,得到带状点集C,将C投影到经过插值点方向平行于xoy平面的平面Π上得到二维投影区域;最后,计算二维投影区域中心点oi,将插值点移动到oi位置处,直到所有插值点被移动到最终位置后,连接插值点形成优化处理后的分支点出模型骨架L,最终将L的端点分别和模型分支部分、主体部分相连,完成一条待优化处理骨架线段优化;迭代操作,直到所待优化处理骨架线段被处理完成,得到模型最终曲线骨架,如图7所示。
Claims (4)
1.一种人体点云模型的骨架提取方法,其特征在于,具体按照以下步骤实施:
步骤1:基于切片思想,获取人体模型骨架点,连接骨架点,生成模型初始曲线骨架;所述步骤1中获取人体模型骨架点具体为:
步骤1.1:求取人体点云模型的走向趋势;
步骤1.2:计算人体点云模型的最小包围盒;
步骤1.3:初始骨架点的计算;
步骤2:对初始曲线骨架进行粗优化,去除噪声点或者空洞产生的多余分叉点和内部分支;
步骤3:利用在待优化骨架线上插入插值点对模型曲线骨架进行精优化,得到最终的骨架信息;
所述步骤1.2具体为:
旋转坐标轴并缩小AABB包围盒,记录每次旋转后的边界数据Di={xmax,xmin,ymax,ymin,zmax,zmin},比较每次坐标轴旋转后对应包围盒的体积,求得体积最小包围盒对应的Di和Vi,记录此时坐标轴的角度α′、β′、γ′,根据α′、β′、γ′的值来建立模型最小包围盒即为所求OBB最小包围盒;
根据最小包围盒长轴与yoz面的夹角α和与xoy面的夹角β作为模型绕z轴和x轴旋转角度,首先绕z周旋α后使得模型与yoz面平行,然后绕x轴旋转β是模型与xoy面平行;最终模型被转到基本垂直xoz坐标平面的位置;
所述步骤1.3具体为:
步骤1.3.1:人体模型的切片获取
沿着旋转后的y轴方向,给定步长h,将整个模型分成若干个高度为h的带状点集T,然后将T中的所有点投影到该带状点集的中间垂直于切割方向的横穿平面上,得到带状点集所有二维投影点集T′;
步骤1.3.2:投影区域划分
将二维投影区域网格化,即给定一个网格大小Ω,求得区域整体的最大宽度和最大高度η,根据η和Ω确定一个m×n大小的二维网格;其次,将m×n的网格按照先行后列的顺序进行初始化,给每个网格填充“0”表示该网格中没有点;然后,按照先列后行的顺序遍历网格,当网格中有点存在时,记为该网格被命中,将该网格中的所有点标记为“1”,表示“1”号区域的点,再以该网格为参考网格,分别检测与“命中”网格相邻八个方向上相邻的网格即上、右上、右、右下、下、左下、左、左上是否被“命中”,如果被“命中”,则给网格中的点做和参考网格中点相同的标记,如果没有被“命中”,继续下一列网格检测;当再次出现网格被“命中”时,此时,“命中”网格中的所有点标记为“2”,表示投影层中“2”区域的点,最后依次检测所有网格,将投影层上的点全部标记,按照点标记将投影层划分为不同区域,直到所有投影层二维区域划分结束;
步骤1.3.3:投影区域中心点计算
按照点x轴坐标值和z坐标值升序排序,当点集中点个数N为奇数时,分别取排序后两个集合中的中间元素x坐标x1和z坐标z1,则所求二维投影区域中心点为o(x1,z1);当点集中点个数N为偶数时,分别取排序后两个集合中的中间两个元素对应x轴坐标和z轴坐标,求其平均值x2和z2,则所求二维投影区域中心点为o(x2,z2);
步骤1.3.4:投影区域中心点标记
确定“基准层”
在所有切片中寻找到第一个划分区域数N最大的层作为“基准层”并记住该层的层号No,将该层中所有区域的标号作为其它层标号的标准,对其它层依次重新标记;
以“基准层”为标准,依次向上和向下重标记
先向上标记:取“基准层”中的区域中心点Oj作为参考点,“基准层”向上相邻的切片中的中心点Oi作为标记点,计算ξ=d/h,判断ξ和λ大小关系,若ξ≥λ,则表示当前标记点和参考点偏离比较远,此时,当参考点的标记为“1”时,标记点标记为“N+1”,更新N=N+1;若ξ<λ,则表示当前标记点和参考点距离比较近,此时,标记点和参考点做统一标记,直到“标记层”中所有区域的中心点都重新标记完为止;
改变“基准层”,迭代操作
当前标记层标记完后,以当前“标记层”为“基准层”,按照上述步骤迭代操作,直到模型的所有层都被重新标记完为止;
到此,将整个模型中属于同一个分支的区域中心点做了相同的标记;
步骤1.3.5:基于投影面积获得骨架点
首先逐一计算基准层中每一个区域面积S1、S2……Si,求得投影区域的总面积S:其中,n1为矩形区域上半部分点个数,n2为矩形区域下半部分点个数;同时记住该面积对应的区域号;然后在所有面积中选出最大的面积及其对应的区域号;此时,将最大面积对应的区域标志标记为“M”表示身躯部分,其余区域标志标记为“N”表示四肢部分;然后,根据步骤1.3.4中的标记方法,标记其余各层包含的所有区域中心点,标记完成后,所有主体部分的区域中心点标记全为“M”,所有分支部分的区域中心点标记全为“N”;由此可以得到一系列的骨架点;
步骤1.3.6:去除模型外的骨架点
设当前点P(x0,z0),首先求得区域点集中x坐标、z坐标对应的最大值和最小值xmax、xmin、zmax和zmin,以xmax、xmin、zmax和zmin做一个包围该区域的最小矩形T,当点P(x0,z0)坐标位于该矩形T之外时,那么可以认定判断点P(x0,z0)位于区域之外,将视为错误骨架点被剔除;当该点P位于T之内时,即
如果公式(3)成立,则点P(x0,z0)可能位于某一区域内部,继续下一步判定;将区域带状点集拟合成为一个n多边形T′,要判断的P点位于T′内还是外;在T′之外取一点P′(x1,z1),过P′向P做一条射线L,该射线的方程为:
其中,x∈[-∞,x0];
取T′内相邻的两个点,求解出一个多边形对应的一个边的直线方程为:
其中,x∈[xi,xj];
联立(4)和(5),求解方程组,若方程组根的个数为偶数时,也就是射线L与多边形T′交点的个数为偶数时,此时点P位于区域之外,若方程组根的个数为奇数时,也就是射线L与多边形T′交点的个数为奇数时,此时点P位于区域之内;
经过剔除模型外部的骨架点,由此确定了人体模型的初始骨架点集合SK。
3.根据权利要求2所述的一种人体点云模型的骨架提取方法,其特征在于,所述步骤2对初始曲线骨架进行粗优化具体为:
步骤2.1:初始骨架线的获取
由于模型同一组成部分的骨架点有相同的分类和标记,因此,在同一组成部分骨架点连接时,按照区域号的顺序,将相邻层属于同一组成部分的骨架点相连,并且被连接的骨架点度加一,组成该组成部分的初始骨架线,迭代操作模型骨架点集划分结果中的每一个组成部分,直到所有组成部分骨架点都连接,就得到了整个模型的各个组成部分的初始骨架线;
在进行不同组成部分之间骨架线连接时,根据之前对骨架点集SK的重标记,将标记为“M”和标记为“N”的骨架点相连,标记为“M”的骨架点表示位于模型主体部分,标记为“N”的骨架点表示位于模型分支部分;分支部分的所有骨架点连接后形成的是一条折线L,L会有两个端点,由于人体姿态的不同将导致连接点的选择会不同,此时我们必须在L的两个端点中选择一个作为连接点和主体部分连接,依次将所有分支部分骨架线和主体部分骨架线连接;
步骤2.2:骨架线的粗优化
遍历所有骨架点,统计每个骨架点对应的度,找到度为3的骨架点并统计起个数:
如果度为3的骨架点个数为1,说明在人体胯部位置存在一个分叉点,此时没有错误分叉点;
如果为3的骨架点个数大于1,说明在除胯部位置存在错误分叉点;然后,以y轴坐标最大的点为基准点,将其余错误分叉点坐标更为成基准点坐标,实现错误分叉点合并;
在待处理骨架线上等距离的插入n个值,逐一判断插值点相对于模型的位置情况,若插值点位于模型之外,则按照一定方向调整主体部分连接点,再次判断插值点位置,循环操作,直到所有插值点位于模型内部,此时,待处理骨架线也对应被移动到了模型内部。
4.根据权利要求3所述的一种人体点云模型的骨架提取方法,其特征在于,所述步骤3具体为:
根据骨架点的度确定待优化骨架线,将模型主体部分度为3或者度为4的骨架点视为分支点,将连接分支部分和分支点连接的骨架线视为待优化骨架线;其次,在待优化骨架线上等间距插入m个点使待优化骨架线离散化;然后,对于每一个插值点给定一个球形邻域,所有球形邻域内的点组成点集V,在插值点处,沿垂直于原始切割方向,厚度为两个插值点之间的距离d切割V,得到带状点集C,将C投影到经过插值点方向平行于xoy平面的平面Π上得到二维投影区域;最后,计算二维投影区域中心点oi,将插值点移动到oi位置处,直到所有插值点被移动到最终位置后,连接插值点形成优化处理后的分支点出模型骨架L,最终将L的端点分别和模型分支部分、主体部分相连,完成一条待优化处理骨架线段优化;迭代操作,直到所待优化处理骨架线段被处理完成,得到模型最终曲线骨架。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710514436.6A CN107330903B (zh) | 2017-06-29 | 2017-06-29 | 一种人体点云模型的骨架提取方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710514436.6A CN107330903B (zh) | 2017-06-29 | 2017-06-29 | 一种人体点云模型的骨架提取方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107330903A CN107330903A (zh) | 2017-11-07 |
CN107330903B true CN107330903B (zh) | 2020-01-14 |
Family
ID=60198262
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710514436.6A Active CN107330903B (zh) | 2017-06-29 | 2017-06-29 | 一种人体点云模型的骨架提取方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107330903B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108765571A (zh) * | 2018-05-29 | 2018-11-06 | 大连九州创智科技有限公司 | 一种大型料堆点云补全方法 |
CN109064471B (zh) * | 2018-07-18 | 2021-09-03 | 中北大学 | 一种基于骨架的三维点云模型分割方法 |
CN111462275B (zh) * | 2019-01-22 | 2024-03-05 | 北京京东乾石科技有限公司 | 一种基于激光点云的地图生产方法和装置 |
CN109887009B (zh) * | 2019-01-24 | 2022-12-09 | 西北大学 | 一种点云局部匹配方法 |
CN111986138B (zh) * | 2019-05-22 | 2023-08-25 | 杭州依图医疗技术有限公司 | 一种获取肋骨定位的方法和装置 |
CN110516639B (zh) * | 2019-08-30 | 2022-04-12 | 成都索贝数码科技股份有限公司 | 一种基于视频流自然场景的人物三维位置实时计算方法 |
CN110664438B (zh) * | 2019-10-22 | 2021-09-10 | 深圳瀚维智能医疗科技有限公司 | 超声扫查轨迹规划方法、装置、存储介质及计算机设备 |
CN111274909B (zh) * | 2020-01-16 | 2022-05-20 | 重庆邮电大学 | 一种基于深度学习的人体点云骨架提取方法 |
CN111681274A (zh) * | 2020-08-11 | 2020-09-18 | 成都艾尔帕思科技有限公司 | 基于深度相机点云数据的3d人体骨骼识别和提取方法 |
CN112750143B (zh) * | 2020-12-02 | 2024-04-26 | 上海海洋大学 | 一种基于极值法的茎柔鱼形态特征提取方法 |
CN112686799B (zh) * | 2020-12-25 | 2022-05-10 | 燕山大学 | 一种基于法向量和l1中值的环形锻件截面形线提取方法 |
CN113205594B (zh) * | 2021-05-20 | 2022-08-02 | 合肥工业大学 | 一种基于stl的弯管类模型骨架提取法及其提取系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102306390A (zh) * | 2011-05-18 | 2012-01-04 | 清华大学 | 基于骨架和面片插值的运动捕捉方法及装置 |
CN103729877A (zh) * | 2013-12-18 | 2014-04-16 | 珠海金山网络游戏科技有限公司 | 一种三维模型的有向包围盒构造的方法和系统 |
CN104392476A (zh) * | 2014-12-04 | 2015-03-04 | 上海岩土工程勘察设计研究院有限公司 | 基于最小包围盒算法提取隧道三维轴线的方法 |
CN105740798A (zh) * | 2016-01-27 | 2016-07-06 | 西安理工大学 | 一种基于结构分析的点云场景物体识别方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9804696B2 (en) * | 2015-01-02 | 2017-10-31 | Microsoft Technology Licensing, Llc | User-input control device toggled motion tracking |
-
2017
- 2017-06-29 CN CN201710514436.6A patent/CN107330903B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102306390A (zh) * | 2011-05-18 | 2012-01-04 | 清华大学 | 基于骨架和面片插值的运动捕捉方法及装置 |
CN103729877A (zh) * | 2013-12-18 | 2014-04-16 | 珠海金山网络游戏科技有限公司 | 一种三维模型的有向包围盒构造的方法和系统 |
CN104392476A (zh) * | 2014-12-04 | 2015-03-04 | 上海岩土工程勘察设计研究院有限公司 | 基于最小包围盒算法提取隧道三维轴线的方法 |
CN105740798A (zh) * | 2016-01-27 | 2016-07-06 | 西安理工大学 | 一种基于结构分析的点云场景物体识别方法 |
Non-Patent Citations (1)
Title |
---|
三维人体点云模型骨架提取方法研究;侯培;《中国优秀硕士学位论文全文数据库 信息科技辑》;20140115;第10-50页 * |
Also Published As
Publication number | Publication date |
---|---|
CN107330903A (zh) | 2017-11-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107330903B (zh) | 一种人体点云模型的骨架提取方法 | |
Sundar et al. | Skeleton based shape matching and retrieval | |
Xu et al. | Reconstruction of scaffolds from a photogrammetric point cloud of construction sites using a novel 3D local feature descriptor | |
JP4785880B2 (ja) | 三次元オブジェクト認識のためのシステムおよび方法 | |
CN103400372B (zh) | 一种基于Reeb图描述的三维拓扑信息提取方法 | |
CN111160085A (zh) | 一种人体图像关键点姿态估计方法 | |
CN105389569B (zh) | 一种人体姿态估计方法 | |
CN111696210A (zh) | 一种基于三维点云数据特征轻量化的点云重构方法及系统 | |
CN109658515A (zh) | 点云网格化方法、装置、设备及计算机存储介质 | |
CN106780751A (zh) | 基于改进的屏蔽泊松算法的三维点云重建方法 | |
CN107767453B (zh) | 一种基于规则约束的建筑物lidar点云重构优化方法 | |
CN106504331A (zh) | 基于三维模型检索的牙齿建模方法 | |
CN109584357A (zh) | 基于多轮廓线的三维建模方法、装置、系统及存储介质 | |
CN108154104A (zh) | 一种基于深度图像超像素联合特征的人体姿态估计方法 | |
CN107766851A (zh) | 一种人脸关键点定位方法及定位装置 | |
CN112862956B (zh) | 基于HRBFs的人体与服装模型碰撞检测和处理方法 | |
Governi et al. | 3D geometry reconstruction from orthographic views: A method based on 3D image processing and data fitting | |
CN109034131A (zh) | 一种半自动人脸关键点标注方法及存储介质 | |
CN105225272B (zh) | 一种基于多轮廓线三角网重构的三维实体建模方法 | |
CN107680154A (zh) | 基于视图的体素几何参数提取方法 | |
CN108230452A (zh) | 一种基于纹理合成的模型补洞方法 | |
Laycock et al. | Aligning archive maps and extracting footprints for analysis of historic urban environments | |
CN108961385A (zh) | 一种slam构图方法及装置 | |
Strodthoff et al. | Automatic decomposition of 3D solids into contractible pieces using Reeb graphs | |
KR101961854B1 (ko) | 3d 객체 모델 기법을 이용한 객체 인식장치 |
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 |