APP下载

基于三维人体模型的尺寸测量和拟合

2019-04-12齐啸计忠平

现代计算机 2019年7期
关键词:人体模型胸围腰围

齐啸,计忠平

(杭州电子科技大学图形图像研究所,杭州310018)

0 引言

近年来三维人体扫描和模型重建技术越来越成熟,方法越来越多样化,在三维人体模型构建完成后,人体上的一些参数就成了衡量模型误差的重要标准,这些参数大致可以分为非封闭的长度数据和封闭的圆周数据两类,胸部和腰部数据作为同时涉及到这两类的参数,可以良好反映三维人体模型躯干部分的建模精确程度,而胸部和腰部数据的获取就涉及到三维人体测量学。三维人体测量是通过对人体模型各部位的尺寸和人体体型进行测量,进而研究人体的形态特征和技术方法[1]。三维人体测量技术出现于20 世纪80年代中期,它可实现非接触式测量,并应用于人体数据库建立、服装量体定制、人体工程学、医学及博物馆陈列等[2-4]。相比于传统的手工测量法[5]和照相测量法[6],该方法的显著优势在于测量过程自动化程度高、时间短、结果精确度极高[7]。按照测量方式的不同可分为主动式和被动式两大类[8],被动式是利用摄影成像技术,直接拍摄人体图像进行测量的方法[9];主动式是将图像转换为点云,然后在点云数据上利用算法进行测量,包括激光测量法[10]、莫尔条纹测量法[11]、TC2 分层轮廓测量法[12]、Loughborough 人体阴影扫描装置[13]、Cyber 全身扫描系统[14]、投影条纹测量法等[15]。近年来,由于Ki⁃nect 传感器设备的出现,通过光学三角测量得到真实世界的以毫米为单位的深度图像[16]来完成三维重建再进行测量的方法成为主流。Alexander Weiss 等[17]实现了基于单个Kinect 的家用型三维人体重建系统。宋诗超[18]基于单个Kinect 产生深度图像后,采用三角剖分算法进行粗略建模,再在三维人体上进行编码定义,实现了人体尺寸的自动化提取。Yi Chen 等[19]使用两台Kinect 设备,分别从受试者的正前方和正后方拍摄得到点云图像后测量,测量所需时间短,避免了受试者移动产生的误差,但数据精度较低。Jing Tong 等[20]使用三台Kinect 设备,两台扫描人体的上部分和下部分,一台从相对方向采集人体的中间躯干部分,再拼接配准,但是由于深度数据质量不高,会发生配准不成功的情况。Jun-Ming Lu[21]等将3D 图像分成2D 轮廓并进行分析,利用最小维度检测、灰度检测、人体等高线等方法获得标记点和标记线来测量人体,但是测量样本范围较小。目前获取人体尺寸数据的方法的通性多是先得到或者直接利用真实人体的图像数据或点云数据,再采用不同的算法策略进行测量,所以准确的数据来源是保证结果精确度的关键,本文采用权威的CAE⁃SAR 三维人体数据库作为数据来源,将重点之一放在测量算法上,在标准模板上选出测量点,实现数据库中三维人体模型胸围和腰围的自动化测量。

另外,2D 转3D 技术已经成为了新的研究热点,通过预设立体化参数,利用图像算法令双目图像产生视差信息并将其放大,使之成为立体信息产生3D 效果[22-23]。在人体建模方面,可以利用2D 人体正面照和侧面照产生一个目标三维人体模型,这就需要人体上一些部位的宽度和厚度数据来拟合出该部位的维度。在进行测量实验后我们已经得到了大量的人体尺寸(腰厚、腰宽、腰围、胸厚、胸宽、胸围)数据,由此可以运用线性回归和神经网络来预测人体非线性尺寸,通过仿真预算得到人体的腰围和胸围数据[24],这就是本文的另一个重点。该功能在服装量身定制[25]、虚拟服装设计[26]和建立人体数据库[27-29]上都发挥着重要作用。

1 计算重心坐标

1.1 数据集

我们的数据来源于以美国和欧洲地区平民为基础的人类学资源项目(CAESAR)。CAESAR 项目收集了数千个来自美国或者欧洲地区的志愿者的全身扫描数据,如图1 所示,这些志愿者的年龄分布在18-65 岁之间。为了扫描的精确性,每名受试者仅穿着灰色紧身运动短裤和乳胶帽,女性受试者还需穿着灰色运动胸罩。扫描之前,每名受试者身上被放置74 个标记点,标记点多置于关键骨骼点处(参见图2)。此外,CAE⁃SAR 还记录了受试者的年龄、体重、种族等信息。数据集中每个个体的数据形式为obj 文件,每个文件包含19347 个网格点的三维坐标和12893 个三角网格面的索引,这些网格点和网格面构成了一个三维人体模型。CAESAR 是目前为止关于人体模型方面最大的商业可用数据集,包含丰富的人体样本,我们获取了其中4307 个人体作为测量目标。

图1 CAESAR数据集部分人体的全身扫描

图2 CAESAR项目受试者

1.2 点列选取

采用MeshLab 的功能来完成胸部和腰部点列的选取工作。MeshLab 是一个开源软件,主要用于三维三角网格的呈现和编辑。我们需要在数据库中选择某一个人体模型作为点列模板,在经过多次试验后,发现身材过胖和过瘦的人体模型作为模板时,会造成计算出的其他人体模型的腰围点列不水平,结果误差较大,为防止这种情况出现,我们选用身材较为标准的人体模型作为模板,该模型序号为CSR0013A。在MeshLab中导入CSR0013A 模型并运用Wireframe 将其网格化显示,结果如图3。运用PickPoints 在模型腰部的水平一圈进行点选取,记录每个点的世界坐标,在选定某个点的同时,运用Get Info 获取该点所在三角网格的面索引、顶点索引和顶点世界坐标,按照选取顺序将这些点的相关信息记录在点列文件中。胸部的点列选取略有不同,在人体正面两乳头之间的部分不做选取。腰部测量点数量为98,胸部测量点数量为96。对于腰厚点列即选取人体模型腰部正面和背面各一点,腰宽和胸宽点列即选取人体模型相对应部位的左右两侧各一点。胸厚点列选取人体模型正面两乳头和胸腔三个点,背面选取这三个点水平对应的点,按照点列文件格式记录点信息。

图3 CSR0013A模板人体

1.3 重心坐标

读取腰部和胸部点列文件,由于记录了点坐标,可以利用海伦公式计算三角网格面积Square_ABC,同时计算模板测量点P 与P 所在三角网格顶点形成的三角形的 面 积Square_PBC、Square_PAC 和Square_PAB。运用Square_PBC/Square_ABC、Square_PAC/Square_ABC 和Square_PAB/Square_ABC 获取P 的重心坐标(kA,kB,kC),同时记录点P 所在三角网格索引。按照上述方法,即可得到腰宽、腰厚、腰围、胸宽、胸厚和胸围的点列重心坐标。

2 计算人体尺寸

2.1 数据核对

为保证点列的准确性和可靠性,需要对点列文件中的数据进行核对。读取CSR0013A 模型原始数据,以面索引为依据将点列文件中的顶点索引和坐标与原始数据进行一致性核对,发现不一致即跳出程序,并显示出现错误的点列序号与错误处,之后立即对点列文件进行修改并重新执行重心坐标计算程序。另外,需要检验重心坐标的准确性,由于点坐标是浮点数,所以设置重心坐标和的上限为1.001,即1<=kA+kB+kC<=1.001,若大于上限,表示该点P 不在所记录的网格内,需要重新选取。

2.2 计算人体尺寸

CAESAR 数据库中所有人体的相对部位拥有相同的三角网格面索引(不同的是顶点坐标,所以才会有不同的体型),即不同模型同一部位的三角形具有线性映射关系,利用这个特性可以计算所有模型的人体尺寸。依次读取CAESAR 数据库每个人体模型数据,依据腰围点列的三角网格面索引计算每个新点,至此得到了待测量模型的腰围和胸围点列,相邻两点计算欧氏距离,即得到该人体模型的腰围和胸围长度。腰宽、腰厚、胸厚同理。对于胸宽,需要计算三个正面和背面对应点的均值。需要注意的是,计算出的人体尺寸是模型按身高2 米被等比例扩展或缩放后的以三维世界坐标为单位的尺寸值。

3 尺寸拟合

3.1 线性回归拟合

在已经拥有大量人体厚度值和宽度值后,可以通过建立回归模型计算围度值。观察腰部数据分布规律,从表1 中可以看出,腰宽、腰厚和腰围大致呈线性关系,进行线性相关性计算结果如图4,线性相关性达到了0.9,可以建立二元一次线性回归模型,方程如式(1)。

其中a0为截矩,an为回归系数,Yw为腰围值,Ww为腰宽值,Tw为腰厚值。

按照test_size=0.2 的比例划分训练集和测试集,运用LinearRegression 模型进行多元线性回归函数训练和拟合,得到a0为0.011094417094,a1为1.70886346862,a2为1.55042564867。

表1 CAESAR 数据库部分人体腰部数据

图4 腰部数据线性相关性

同理观察胸部数据分布规律,如表2 所示,进行线性相关性计算发现胸宽与胸厚的相关性没有达到0.9以上,这是由于没有采用性别区分,但二者与胸围的相关性依旧在0.9 以上,如图5 所示,可以建立二元一次线性回归模型,方程如式(2)。

其中a0为截矩,an为回归系数,YC为胸围值,WC为胸宽值,TC为胸厚值。

按照test_size=0.2 的比例划分训练集和测试集,运用LinearRegression 模型进行多元线性回归函数训练和 拟 合,得 到 a0为-0.0254382799935,a1为1.67964939782,a2为1.8704409841。

表2 CAESAR 数据库部分人体胸部数据

图5 胸部数据线性相关性

3.2 神经网络拟合

为进一步提高拟合精度,运用神经网络MLPRe⁃gressor 类多层感知器实现建立非线性回归模型。使用反向传播算法进行训练,按照test_size=0.2 的比例划分训练集和测试集,运用StandardScaler 将数据集标准化,CAESAR 在模型数量方面属于小数据集,所以设置solver=’lbfgs’。

对腰部数据的拟合设置两层隐藏层,第一层设置5个神经元,第二层设置2 个神经元,训练后得到三个系数矩阵,对应三层网络,如式(3)-(5)所示。

对胸部数据的拟合设置两层隐藏层,第一层设置7个神经元,第二层设置4 个神经元,训练后得到三个系数矩阵,对应三层网络,如式(6)-(8)所示。

4 实验结果及比较

4.1 拟合函数预测结果

将腰部数据测试集代入腰围最佳拟合线性函数中得到预测数据,运用数据可视化将预测集和测试集进行对比,随机取其中100 个实验结果,如图6 所示,横轴为人体模型,纵轴为腰围值,绿色表示通过重心坐标系法测量得到的人体腰围值,即测试集,红色表示预测集。从图中可以看出,与测量出的腰围值相比,腰围线性函数预测效果良好,点重合率很高,在正常体型上预测误差较小,但是在过胖或者过瘦的体型上会出现误差较大的情况。

图6 腰围线性回归拟合结果对比图

将胸部数据测试集代入胸围最佳拟合线性函数中得到预测数据,运用数据可视化将预测集和测试集进行对比,随机取其中100 个实验结果,如图7 所示,横轴为人体模型,纵轴为胸围值,绿色表示通过重心坐标系法测量得到的人体胸围值,即测试集,红色表示预测集。从图中可以看出,与测量出的胸围值相比,胸围线性函数预测效果良好。但与腰围线性回归拟合结果相比,点重合率稍低,同样在正常体型上的误差较小,但在胸围较大或较小的体型上误差略大,一是由于胸围形状相对于腰围形状更趋于不规则,二是由于未作性别区分。

图7 胸围线性回归拟合结果对比图

4.2 神经网络预测结果

将胸部数据测试集代入腰围神经网络回归模型中得到预测数据,运用数据可视化将预测集和测试集进行对比,同样随机取其中100 个实验结果,如图8 所示,横轴为人体模型,纵轴为腰围值,绿色表示通过重心坐标系法测量得到的人体胸围值,即测试集,红色表示预测集。从图中可以看出,与测量出的腰围值相比,腰围线性函数预测效果良好,点重合率高,误差较小,相对线性回归函数的预测要更准确,并且在极端情况下,误差要小很多。

图8 腰围神经网络拟合结果对比图

将胸部数据测试集代入胸围神经网络回归模型中得到预测数据集,运用数据可视化将预测集和测试集进行对比,随机取其中100 个实验结果,如图9 所示,横轴为人体模型,纵轴为腰围值,绿色表示通过重心坐标系法测量得到的人体胸围值,即测试集,红色表示预测集。从图中可以看出,与测量出的腰围值相比,胸围线性函数预测效果良好,误差较小,相对胸围线性回归函数的预测要更准确。与腰围神经网络回归拟合结果相比,点重合率稍低。

图9 胸围神经网络拟合结果对比图

4.3 拟合结果与真实数据对比

为直观反应预测模型在实际人体上的准确度,我们依照量体裁衣的标准手动测量了6 个真实人体的腰部、胸部数据和身高。由于CAESAR 数据库中的所有人体模型等高2 米,所以在将实际数据投入拟合函数之前需要扩展2 米/受试者身高的比例,计算获得的预测结果后也要还原该比例。图10 为真实人体的腰宽值和腰厚值代入腰围最佳拟合线性函数后获得的结果与该人体实际腰围值对比图,图11 为真实人体的腰宽值和腰厚值代入腰围神经网络回归模型中获得的结果与该人体实际腰围对比图,观察可得人体趋于正常体型下,神经网络回归模型的准确度更高,当体型较胖或较瘦时,线性回归模型的误差更小,其最大误差不超过3cm。以服装定制为参考依据的话,两种回归模型的预测误差都在成衣放松量范围内,正常体型下可以达到高定放松量范围。

图10 真实人体腰围线性回归拟合结果对比图

图11 真实人体腰围神经网络拟合结果对比图

图12 为真实人体的胸宽值和胸厚值代入胸围最佳拟合线性函数获得的结果与该人体实际胸围值对比图,图13 为真实人体的胸宽值和胸厚值代入胸围神经网络回归模型中获得的结果与该人体实际胸围对比图,观察可得两种回归模型预测的误差都不超过3 厘米,两种回归模型的预测误差都在服装定制的成衣放松量范围内。腰围的预测效果相对胸围的预测效果更精确,除个体shan 外,其余每个个体胸围值与预测值均存在大于1 厘米的误差,可以看出胸围回归模型受性别影响较大。

图12 真实人体胸围线性回归拟合结果对比图

5 结语

本文提出了一种对三维人体模型的躯干相关数据进行测量的方法,以及两种根据宽度值和厚度值计算维度值的回归模型。通过选定标准模板的腰部和胸部的测量点列,计算每个测量点的重心坐标,通过重心坐标系自动计算数据库中其他模型的腰宽值、腰厚值、胸宽值、胸厚值、腰围值和胸围值。在得到大量数据后,分别通过线性回归和神经网络训练得到两种回归模型,将测试集投入模型中,并将其与重心坐标系法获得的测量数据进行对比。之后测量真实人体的腰部和胸部数据并投入到回归模型中,与真实人体的腰围值和胸围值对比。实验表明,两种回归模型对比,线性回归模型的总体误差较小,但是在正常体型范围内神经网络模型的精确度更高。在未来的工作中,我们将对人体按照性别、体型等特性进行分类后再训练,让回归模型更加准确。

图13 真实人体胸围神经网络拟合结果对比图

猜你喜欢

人体模型胸围腰围
探讨假体凸度对假体隆乳患者术后胸围及罩杯的影响
选腰围 试戴半小时
佩戴腰围要注意什么
腰围佩戴有讲究
成年酉州乌羊体尺长与体质量的关系
丰田汽车碰撞测试新增儿童模型
Family makes 45—foot icicle in front yard
体验创新:3D人体扫描仪测三围
幸而今天买了胸衣
人体模型内置摄像头为数据收集