基于人体截面点云的围度尺寸计算

2019-08-08 07:37李晓志李晓久
纺织学报 2019年7期
关键词:围度坐标值胸围

李晓志, 李晓久, 刘 皓

(天津工业大学 纺织科学与工程学院, 天津 300387)

在服装领域,人体尺寸数据是服装设计、人体体型分类、制定服装号型规格标准、研究服装功效学的基础,精确的人体尺寸数据是服装穿着合体、舒适、美观的重要依据。根据GB/T 16160—2017《服装用人体测量的尺寸定义与方法》,人体测量数据分为围度尺寸、距离尺寸、角度尺寸,这些数据可通过手工测量和三维非接触式测量的方法获取。与手工测量相比,三维非接触式人体测量具有速度快、精度高、数据信息充分等特点,已成为现代人体测量的主要方法,同时该方法是服装智能制造实现的关键技术之一。

三维非接触式人体测量一般是通过计算机图像学、计算机视觉、数据处理等科学方法建立数字化人体模型,在数字化人体模型上提取人体尺寸可模拟传统手工测量的方法。首先识别人体特征点,人体特征点主要通过人机交互的方式[1],计算机自动判别[2-4]的方法提取的;然后根据特征点计算人体尺寸数据。人体距离尺寸和角度尺寸可直接通过特征点的坐标建立的直线或曲线方程计算得到,人体的围度尺寸是围绕特征点所在截面1圈的长度,该尺寸忽略了人体凹陷部位曲线的长度,是人体截面的凸包周长,因此计算人体围度尺寸最关键的是求取截面的凸包点集。文献[2-3]直接通过Graham扫描法[5]计算人体截面的凸包点集,Graham扫描法原理简单,算法稳定,应用在很多领域;文献[4]采用改进凸包算法,该算法先将人体截面分成2部分,每部分进行排序后通过计算相邻3点组成的三角形面积的正负值确定凸包点集,与Graham扫描法相比该算法并没有优势;文献[5]先采用包围盒方法简化人体截面点集,然后通过Graham扫描法计算简化后点集的凸包,该方法中小包围盒尺寸的设定非常重要,尺寸过大可能导致初始人体截面点集中凸包点的丢失,尺寸过小会增加遍历包围盒的数量,降低效率。

凸包算法在其他工程领域应用也非常广泛,针对要解决的工程问题,部分文献通过简化初始点集来提高Graham扫描凸包效率[6-8],部分文献提出了新的凸包算法[9-11],还有部分文献研究了初始凸包形式对凸包算法效率的影响[12]。通过分析比较发现,Graham扫描法实现简单且稳定,但是点集中凹点越多,算法回溯验证次数就越多,可能会因为其中1个点而需要对点集中50%的点进行回溯验证。鉴于上述情况,根据人体表面明显的凹凸特性,本文先简化人体截面点集,再根据矢量积确定点集的凸包点并计算人体围度尺寸。

1 坐标转换

在数字化人体模型上提取的人体截面是三维空间中的点云,本文采集的人体点云坐标分布如图1(a)所示,y轴为人体高度方向,人体截面与xz平面平行。为使计算人体围度尺寸更加快速便利,本文将人体截面投影到xz平面内,即直接忽略y坐标值,如图1(b)所示,将人体胸、腰、臀部截面点云的三维坐标转换到二维平面中。

图1 人体截面坐标转换

Fig.1 Transformation of human section′s coordinates. (a) Human body′s space coordinates; (b) Sections′ plane coordinates

2 部分凹点的删除

一般情况下,点集的凸包可按极值点分成4个子区域,使每个子区域内凸包点集都具有单调性,根据凸包该特性可通过对初始点集进行区域划分,对子区域内的坐标点通过排序比较法去掉部分凹点,使子区域具有单调性。

2.1 子区域划分

设P={p1,p2, ,pn}为平面坐标系内人体截面点集,(x(i),z(i))为点pi的坐标,通过快速比较法可分别获取点集在x坐标轴的极大值xmax和极小值xmin、z坐标轴的极大值zmax和极小值zmin。xmax、xmin、zmax、zmin可能是1个点也可能是多个点的集合,极值点必定是人体截面凸包点集中的点。本文在计算极值点时,只将搜索到的第1个极值点通过参数A1(xmax,z1)、A2(xmin,z2)、A3(x1,zmax)、A4(x2,zmin)记录作为子区域划分的分割点,将其他极值点作为该子区域内的点通过排序比较法进行处理。

在进行子区域划分时,将分割点作为该单调区间内的2个端点,并以此判断其他点的凹凸性,4个子区域点集如下所示:

1)设子区域I中点的个数为t1,该区域点集为{p11,p12, ,p1t1},p1i对应的坐标为(x1(i),z1(i)),该区域2个端点为p11=A1、p1t1=A3。

2)设子区域II中点的个数为t2,该区域点集为{p21,p22, ,p2t2},p2i对应的坐标为(x2(i),z2(i)),该区域2个端点为p21=A3、p2t2=A2。

3)设子区域III中点的个数为t3,该区域点集为{p31,p32, ,p3t3},p3i对应的坐标为(x3(i),z3(i)),该区域2个端点为p31=A2、p3t3=A4。

4)设子区域IV中点的个数为t4,该区域点集为{p41,p42, ,p4t4},p4i对应的坐标为(x4(i),z4(i)),该区域2个端点为p41=A4、p4t4=A1。

当参数A1与A3、A3与A2、A2与A4、A4与A1重合时,子区域仍然按上述方法划分,在后续处理中不进行操作。将获取的人体胸围截面点云进行区域划分后如图2所示。

图2 胸围截面点云区域划分

Fig.2 Division of bust cloud point

2.2 排序删点

图3 遍历方向

Fig.3 Traversal direction. (a)From extreme pointztoxdirection; (b) From extreme pointxtozdirection

子区域I、II、III、IV的凸包点集应具有单调性,区域I、III单调递减,区域II、IV单调递增。每个区域的首末端点必定是凸包点,本文以区域内首末端点为参考点,采用快速排序法对每个子区域内的点按从内到外、z坐标值的单调性进行排序,即区域I和II按z坐标值递减、区域III和IV按z坐标值递增的顺序排序,然后通过判断x坐标值是否满足该区域单调性确定点是否删除。x坐标值判别顺序应与z坐标值排序顺序一致,否则虽然与区域单调性一致但会缺失部分凸点,以区域IV为例,图3(a)按从z极值点向x极值点方向遍历,部分凸点被删除,图3(b)按x极值点向z极值点方向遍历,只删除部分凹点。 以子区域II为例,删除部分凹点的过程如下:

1)判断x2(1)与x2(t2)及z2(1)与z2(t2)是否相等。如果相等,则不进行任何操作;如果不相等,则进入下一步。

2)将(x2(i),z2(i))赋值给该区域指定数组中(m2(k),n2(k)),其中i≥2且i≤t2、k≥1。

3)若x2(i)≥m2(k),则k=k+1,将该点坐标值赋值给(m2(k),n2(k))。

4)若x2(i)

5)i=i+1,重复步骤3)和4),当i=t2时完成遍历所有的点。

该方法保留了除分割点外的其他极值点,图2的子区域经该方法处理后如图4所示,区域I、III几乎没有删除点,II、IV中点的凹凸性较大,删除部分凹点。

图4 按单调性排序删点后各子区域

Fig.4 Subsets after sorting by monotonicity

3 凸包点集获取

(xi+1-xi)×(zi-zi-1)

它们的夹角β满足下式:

根据T的正负可判断β的范围:

1)T>0,则sinβ>0,β<180°,pi为凸点,存入凸包点集;

2)T=0,则sinβ=0,β=180°,3点在一条直线上,该点的存在与否不会影响凸包的形状,将该点直接删除;

3)T<0,则sinβ<0,β>180°,pi为凹点,直接删除。

图5 相邻3点的内侧夹角

Fig.5 Inside angle of adjacent three points

经上述方法对胸围截面点云各子区域处理后,获取的点集如图6(a)所示,将各子区域点按顺序合并在一起,去掉重复的分割点,即为人体胸围截面凸包点集,将凸包点集按顺序连接起来,可获取人体胸围截面点云的凸包,即胸围的围度尺寸线,如图6(b)所示。采用该方法获取的人体腰围和臀围截面点集的凸包,即人体腰和臀的围度尺寸线,如图7所示。

图6 胸围线的获取

Fig.6 Extracting bust line. (a) Subset convex hull; (b) Section point cloud of bust line and its convex hull

图7 腰围线和臀围线的获取

Fig.7 Extracting waist line and hip line. (a) Section point cloud of waist line and its convex hull; (b) Section point cloud of hip line and its convex hull

4 人体围度尺寸计算

将凸包点按顺序连接起来,所有线段长度的和即为人体围度尺寸,通过计算得图1人体的胸围、腰围、臀围尺寸分别为84.4,62.9,83.3 cm。

如图8所示,应用Graham扫描法获取的人体胸、腰、臀部凸包点集与本文方法获取的凸包点集一致,由此可证明本文方法提取的凸包点集的正确性以及人体围度尺寸计算的准确性。

图8 获取凸包方法比较

Fig.8 Methods comparison of extracting convex hull

5 结束语

非接触式三维人体测量系统在服装领域最直接的应用是获取人体尺寸信息。本文中人体截面凸包计算的主要过程为遍历极值点,子区域划分,子区域内排序比较法删点,凸包点集获取;Graham扫描法计算凸包点集的过程主要包括遍历极值点,计算极值点与每个点构成的向量与x轴夹角的余弦值,按余弦值对点进行排序,根据向量积获取凸包点集。2种方法的时间复杂度相同,计算结果一致,但是本文通过简单的排序,比较删点法简化初始点集可减少凸包顶点回溯迭代次数,从而提高了计算人体围度尺寸的效率。

猜你喜欢
围度坐标值胸围
探讨假体凸度对假体隆乳患者术后胸围及罩杯的影响
小学班主任管理工作的角度和围度
基于二分法迭代的凸模数控铣削加工编程*
基于宏程序的数控车削加工应用
胸围革命
基于二维测量下的下肢围度拟合研究
幸而今天买了胸衣
利用CAD/CAM 软件确定数控编程中 未知点的坐标
物理坐标图像的应用赏析