APP下载

一种PCL与改进积分法人体体型的测量

2021-05-04张洪伟李捍东

智能计算机与应用 2021年11期
关键词:腰围尺寸图像

张洪伟,李捍东

(贵州大学 电气工程学院,贵阳 550025)

0 引 言

三维人体测量,是通过对人体各部位的尺寸和人体体型进行测量,进而研究人体形态特征技术的方法。近年来国内外相关研究机构已经推出多种不同类别和型号的三维人体测量系统。

突出的前沿研究有:云从科技公司提出的基于单帧图像3D人体重建技术,在Human3.6M、Surreal和UP-3D三个数据集上,将原有最低误差降低30%,提高了后期三维测量的精确性。德国的VITUS SmartXXL扫描仪,基于激光光学三角测量,是目前较为精确的无接触人体测量方式。R.Nakamura[1]开发了一种新的VFR,利用两种Kinects进行身体测量和尺寸估计,可以获得更准确的测量结果。万燕[2]提出一种利用Kinect实现扫描,三维重建技术建立一个新的人体成分分析系统。但此种方法存在环境的干扰,影响重建信息提取的问题,进而会影响人体成分分析的精确性。Tomi B、Sunar MS[3]提出基于角度算法和椭圆周长方程处理及VFR技术,实现动态测量各种人体尺寸。但此方法存在计算量大,测量速度慢的特点。Dan song[4]提出了语义参数化模型实现重构,通过比较PCA权重反映和三角形变形映射的x/y/z三个方向上的误差,得出了参数化的重构有更高的精度。但提出学习的机制不够完善,对身体参数重构有一定影响。Grant M.Tinsley[5]对比分析了四个商用三维光学扫描仪(FIT3D、NakedLabs、SizeStream和Styku)来确定人体成分估计的精度,并参考4分量(双能X射线吸收仪、空气体积、体积描记法、生物阻抗谱)模型,相比评估其有效性。得出结论是:所有扫描仪均存在不同幅度比例的偏差。Tan Xiaohui[6]通过深度相机来获取3D人体模型,然后通过测地距离的随机森林回归分析,自动提取3D人体焦点特征的方法,用于提取预定义的特征点和线,最后根据这些特征点和线计算出人体个体的大小。但此种方法在计算围度上精确度不够高。

目前,对人体尺寸测量的系统和方法可分为以下几个方面:

(1)根据用户输入的数据,建议所选服装的最佳合身尺寸或生成人体的3维模型,部分电商平台已经在使用这种方法[7]。

(2)通过深度运动传感器[8-9](例如Kinect),该传感器允许系统检测用户的身体。在虚拟环境中生成的3D模型,跟随用户运动,从而获得身临其境的体验。

(3)使用网络摄像头技术捕获用户的图像。用户选择衣服的图像将被覆盖在捕获用户图像的顶部,当覆盖衣服图像的尺寸和用户的图像相同时,可以确定最佳适合尺寸。

(4)通过激光雷达进行人体扫描,获取点云数据[10-12]。用深度学习对原始获取的点云进行处理,利用多层感知网络(MLPS)和最大池化操作获取点云的特征,根据点云进行尺寸计算。

本文基于以上研究,提出一种基于Python下,对完善的点云模型用PCL库拾取大量三维点坐标,采用改进的积分法计算尺寸。结果表明,所提方法测量三维尺寸的精确性较高。

1 测量技术路线及模型建立

测量方法具体结构如图1所示。对输入的图像进行仿射度量校正,校准若有偏差,需重新进行仿射校正,然后通过透视几何反推,实现点云重建[13]。重建模型输入到Geomagic Studio软件中进行降噪处理,处理后的模型基于PCL拾取三维点云坐标,对点云坐标进行转换和计算,求解出各部分的尺寸。

图1 Python下三维尺寸测量的系统框架Fig.1 System framework of 3D size measurement under Python

1.1 图像获取及校准

获取图像的硬件设备为手机自带的6 400万超感光摄像头。相比于一些专业的深度相机结构光(Structured-light)具有成本低、适用性更强的优点。获取的图像如图2所示。

图2 图像与棋盘格校准Fig.2 Image and checkerboard calibration

获取的图像手持棋盘格,棋盘格处于垂直地面的状态,肩部放松自由向下,这有利于测量校准相机图像世界坐标系,以及后期肩部长度距离的测量。

1.2 模型创建及特征点选择

对获取的图像经过处理后,得到完善的点云模型,如图3所示。该研究对特征点的选择采用基于代数的特征提取方法,将人体主要分割为3个部分:手臂、主要躯干、双腿,如图4所示。由得到的点云数据映射特征部位的最高点和最低点或投影点,直接利用代数的关系来确定部位的长度,此种方法更适合于对长度的测量。如人体身高的测量就可以按照建立的三维坐标系,以z坐标轴将点云数据从大到小进行排序,最大值即为头部PH(xH,yH,zmax),最小值为足底PF(xF,yF,zmin),则身高为:

图3 三维点云模型Fig.3 3D point cloud model

图4 特征部位分割Fig.4 Feature segmentation

2 三维尺寸测量方法实现

将上述完善好的点云模型输入到基于PCL实验平台上,得到大量的空间点云坐标。以z轴为参考轴,同一等高面上的点,按照平行于xo y面筛选排序的方法,把面上的所有点插入到一个链表中。当选取的特征点在某一高度上时,从链表中提取出所有z坐标值相同的点,组成一个点集,以平行于xo y面圆形模板法包裹点云面,最终可以确定围度的截面图,运用改进的积分法和特征顶点式,分别计算尺寸。

2.1 点云数据的转换

点云数据的量化方法[2]如下所述:

(1)获取视角值。相机的水平视角α和垂直视角β分别为57°和43°,如图5、图6所示。

图5 水平视角Fig.5 Horizontal perspective

图6 垂直视角Fig.6 Vertical viewing angle

(2)求取实际值x和y:

其中,xi和yi分别为实际物理空间里点在x轴方向和y方向上的坐标值;xi0和yi0分别为深度图像空间里的坐标值;nx和ny分别为摄像头的分辨率系数。

2.2 人体尺寸测量

转换后的点云基于PCL进行处理,获得点云数据点的坐标值。研究调查中,如果只获取关节处的三维坐标值用来实现人体尺寸的精确测量是远远不够的。该研究结合关节点和选取的特征点进行数据的融合和筛选,分别计算围度和长度。

长度的计算相对较为简单。获取关节处的空间点云信息后,表示出关节点的空间位置,两关节点之间的距离为长度。同时据上述特征点的选择方法,两特征点之间的距离计算长度,结合两方法多次计算的值求解协方差,最稳定的值为确定的尺寸。

对尺寸的测量采用了GB/T 5703-2010人体测量的基础项目测量术语作参考[14]。如本文重点测量的项目有肩宽:两肘部外侧面间的最大水平距离;胸围:在乳头水平位置测量的胸部围长;腰围:在最下肋骨和上髂嵴中间处的躯干水平围长。根据建立的坐标轴,左右手肘突出两点关节处坐标为p1(x1,y1,z1),p2(x2,y2,z2)故肩最大宽:

对人体周长的测量,依据[15-17]提到的算法进行改进。特征点所在的水平面与人体的交点集合为P={pi=(xi,yi,zi),i=1,2,…,n},由几何特征点确定水平截面,故特征面上的交点集z的坐标视为相等,其特征点集面如图7所示。特征截面与空间坐标系中xoy面平行,以腰围截面的几何中心为坐标原点建立坐标系,在坐标系中确定各个点的坐标为M={mi(xi,yi),i=1,2,…,n},那么点1与点2之间的长度计算可以采用改进的积分法。用类似的方法计算3与4之间长度,依此方法把每一次计算的结果实现累加。

图7 腰围截面点集Fig.7 Waist section point set

改进算法如下:

(1)从链表中筛选出位于腰围所在特征截面上的坐标点,以外围最远的点用圆面模板包裹,构成腰围点集面,确定相邻两点之间的坐标值。如获取点1与点2的坐标,在x轴上分别对应a、b;若当选择的1、2点处存在密集的点云时,采用线性回归方程y-=b x+a计算,选择最贴近直线的点计算。

(2)通过1、2之间无数的点拟合,确定曲线的函数f(x)。

(3)将区间[a,b]分割成n个子区间,每个子区间的弧长可以用公式(5)计算:

其中,xi为第i个区间内的任意一点,i=1,2,…,n。

(4)总长度等于各个子区间的和:

(5)当分割的区间n为很大时,点1与点2之间的距离为:

(6)依次计算点3,4…距离,得出测量结果。

3 实验结果分析

3.1 实验环境

此次实验在Ubuntu 16.04上进行,开发语言为Python2,OpenCV的版本为2.4.13.6,集成开发环境为PyCharm;硬件环境为CPU intel Core i5四核,主频2.40 GHz。

3.2 实验与分析

用XYB-1 88号人台,验证提出算法的有效性。分别测量胸围、腰围、总肩宽,操作过程如下:

(1)将实验的人台固定在操作台上,人台处于垂直于地面的水平面上,便于距离的校准。

(2)用相机获取人台的图像。对图片处理后输入到Geomagic Studio进行降噪处理,结果如图8所示。

图8 去噪处理后模型Fig.8 Model after denoising

(3)国标88号人台尺寸数据见表1。

表1 88号人台上半身立载标准尺码表Tab.1 The standard size chart for the upper body of the 88th person cm

(4)所提方法对人台进行测量后,得到数据见表2。

表2 本文方法测量的数据Tab.2 Data measured by this method cm

对88号人台模型进行多次试验测量,测出的数据和标准人台的尺码表进行对比,得出误差最大的是腰围1.28,误差最小的是肩宽0.16。显然所提方法精确性比较高,测量速度较快,可以适用于实际的测量。

基于人台模型测量的适用性,对15名男女进行了尺寸的实际测量。在Ubuntu系统下基于Python实现了上述算法,根据计算速度和人体尺寸精度考虑,每两点云坐标之间分割为20个子区间去计算。选取总共15名男女进行了三维尺寸的反复试验测量。同时利用基于Kinect测量技术,对15名男女进行三维尺寸的扫描测量,结果对比分析,两方法的测量值见表3~5。

表3 本文算法测量结果Tab.3 The measurement results of the algorithm in this paper cm

表4 Kinect扫描测量结果Tab.4 Kinect scan measurement results cm

表5 测量误差对比Tab.5 Measurement deviation comparison cm

经对比结果可以看出,最大偏差是腰围2.16 cm,最小偏差为臂长0.04 cm,平均的偏差为0.70 cm。综合来看,本文提出的方法测量三维尺寸效果较好。出现腰围误差比较大的原因是,根据特征点选择确定的腰围特征截面不准确、对两点云坐标之间的分割太少,以及人体表面结构的不规则,均会对测量的结果带来一定影响。

4 结束语

本文提出了一种基于Python下,对相机获取的图像经过一系列处理后,结合PCL和改进的积分法、特征顶点式,对人体三维尺寸的围度和长度测量计算。最后通过实验与Kinect扫描测量结果进行对比分析。结果表明,本文的方法有更好的适用性。进一步的研究将在尺寸测量算法的改进和选取合适特征点确定特征截面的方法进行。

猜你喜欢

腰围尺寸图像
CIIE Shows Positive Energy of Chinese Economy
选腰围 试戴半小时
A、B两点漂流记
佩戴腰围要注意什么
腰围佩戴有讲究
佳石选赏
佳石选赏
名人语录的极简图像表达
一次函数图像与性质的重难点讲析
趣味数独等4则