基于OpenCV、OpenGL与3d Max的个性穿搭人体模型构建

    张颖 段萌萌 康磊 叶金中 熊露洁

    

    

    

    摘要:该文基于Android Studio平台,首先通过用户输入的身材信息和OpenCV对人体照片的分析,判断人体身材类型,然后通过3d Max创建不同人体身材类型的穿搭人体模型,最后通过OpenGL图形库导入3d Max创建的穿搭人体模型,最终在应用程序上实现个性化三维虚拟试衣的效果。

    关键词:OpenCV;OpenGL;3d Max;人体模型;虚拟试衣

    中图分类号:TP391? ? ? 文献标识码:A

    文章编号:1009-3044(2021)18-0216-04

    开放科学(资源服务)标识码(OSID):

    Construction of Personalized Wearing Mannequin Based on OpenCV, OpenGL and 3d Max

    ZHANG Ying, DUAN Meng-meng, KANG Lei, YE Jin-zhong, XIONG Lu-jie

    (College of Engineering and Design, Hunan Normal University, Changsha 410000, China)

    Abstract: This paper is based on Android studio platform. Firstly, through the analysis of user's body information and OpenCV on human photos, we can judge the type of human body. Then, we can create different types of wearing mannequins through 3d Max. Then, we can import the wearing mannequins created by 3d Max through OpenGL graphics library. Finally, we can realize the effect of personalized 3D virtual fitting on the application program.

    Key words: OpenCV; OpenGL; 3d Max; Manikin; virtual fitting

    1 背景

    如今的線上购物平台在展示衣物时采用的依旧是平面模特试穿的二维图片,但平面模特的试穿效果有时并不十分有代入感,导致大家依然难以想象衣物穿在自己身上是什么感觉,难以完成购买决策。因此随着时代的发展和互联网技术的更新,一款可以构建个性穿搭人体模型,帮助大家完成虚拟试衣需求的应用程序十分有现实意义,可以有效提升人们关于衣物是否合适自己的线上购物体验[1]。

    OpenCV (Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库,可实现图像处理和计算机视觉方面的许多通用算法[2]。OpenGL(Open Graphics Library)是美国高级图形和高性能计算机系统公司SGI所开发的三维图形标准库,可以较好地渲染2D、3D矢量图形[3]。OpenCV和OpenGL都是可以跨平台编程接口,因此可以在Android Studio上流畅使用。3d Max是一款常用的三维动画制作软件,具有十分强大的三维建模功能[4],本项目通过导出OBJ和MTL文件,可以实现3d Max建模与Android Studio平台的完美结合。

    2 实验过程

    2.1 判断人体身材类型

    判断人体身材类型的依据主要有两部分,一部分是根据用户输入的身高体重信息计算的BMI值,另一部分是通过OpenCV识别人体轮廓,椭圆拟合后计算出的长宽比。这就要求用户提供真实的身高体重信息,并且提供的照片尽量背景简单且穿着贴身,有利于提高判别的精准度。

    通过OpenCV识别人体模型主要通过以下几步:

    1)通过使用函数GaussianBlur()对图像进行高斯滤波去噪[5]。

    2)通过使用函数cvtColor()将图像变成灰度图像。

    3)通过使用函数threshold()将图像变成二值化图像,减少数据量,凸显目标轮廓[6]。

    4)运用形态学原理中的开运算,对图像先腐蚀后膨胀,滤除多余毛刺,获得比较平滑规整的图像。如下图1(a)(b)为两张清晰的不同体形的人体照片,下图1(c)(d)为经过前四步图像处理后的图片,可以看到图片的轮廓边缘比较清晰分明,噪声清理得比较干净。

    5)使用函数findContours()查找轮廓,ellipse()画出拟合的椭圆并获得长宽,如图1(e)(f)所示。

    同时我们通过大量实际操作,将对图片的身材判断和输出的数据进行比对,得到结论如下:

    椭圆长宽比的比值越大,代表人物比例越纤细,比值越小,代表人物比例越粗壮。

    当输出的比值结果小于3时,照片中人物一般处于偏胖的O型。当输出比值结果大于4时,照片中人物一般处于偏瘦的H型。当输出的比值在3—4之间时,一般属于身材较为匀称的X型或A型。

    由于单凭照片判断或许结论有些偏颇,因此我们根据用户输入的身高体重信息计算出BMI值,结合照片识别的数据综合判断。BMI(体质指数)值=体重(kg)/身高(m)的平方而得。

    1)当BMI值在18.5-24.9之间时,属正常范围。这时若椭圆长宽比小于3,则为A型;3-4之间则为X型;4以上则为H型。

    2)当BMI值大于25时,属于超重。这时若椭圆长宽比小于3,则为O型;大于3,则为A型。

    3)当BMI值小于18.5时,属于偏瘦。这时若椭圆长宽比小于3,则为A型;大于3,则为H型。

    2.2 创建穿搭人体模型

    3D人体建模是利用三维软件构建出具有立体感的物体模型,在本次项目中我们采取两种形式同时建模,MATLAB和3d Max同时构造人体模型。在年轻女性三维模型的建构中,根据我们需要模型的性质、形状、特点、材质我们发现3d Max功能更齐全,建模效率更高。而对于服饰模拟,初期预想是通过3d Max进行服装建模,但是不能体现面料真实自然的垂落感,学习过程中发现CLO Standalone软件更适合服装3D的虚拟效果。

    1)建立人体模型

    本项目的四种人体基本身材模型采用3d Max软件建造,通过提取人体的体型及脸部特征点分类计算三维数据,并结合实际测量数据适当调整,主要提取的人体体型特征有肩围、臂围、胸围、腰围、臀围、大腿围、小腿围,根据以上特征将女性体型分为X型,H型,A型和O型。如图2(a)(b)所示。

    ①人体头部模型的建立。利用圆滑命令将初建立的盒子呈圆形状,利用鏡面对称将其删除一半,将其周围边缘化后使其更加光滑,同时利用挤压,连接,切割、填充的命令给头部设置合适的五官,并对细节特征进行提拉、填充。最后采用多边形网格的方式去将已建造的基础的三维多边形低模的点线面进行编辑和修改,完成它的一个逼真的效果,如图3(a)(b)(c)所示。

    ②四种基本身材类型的建立。根据不同身材数据设计所需构建模型数据。X型身材线条明显,俗称沙漏型身材:肩围=臀围=胸围>腰围+20cm;H体型体态匀称肩围=臀围<=20cm+腰围 胸围平;A型体型上半身窄,肩宽:肩围胸围和臀围5cm以上。对于上述过程中已经构造出的基本X模型,在身高条件一致的情况下,以166cm为标准,根据不同身材的体态特征去将肩、臀、胸、腰、大小腿的围度在3d Max中对标准模采取挤压、缩放、移动的命令来绘制模型。X模型计算特征数据时将人体剖面看作椭圆形计算周长,若用a表示椭圆长半轴的长,b表示椭圆短半轴的长(a>b>0),则根据椭圆周长定理,椭圆周长公式:为L=2πb+4(a-b) 身体的围度利用公式求得。在3d Max测量中,找到肩部外边的最凸点围绕一圈,人模的体态保证双臂下垂,抬头挺胸,胸围采取胸部最高处围成一圈,腰围以及臀围腿围的测量同理找到最凹或最凸点围绕一圈去测量,形如下图4(a)(b)(c)(d)所示。

    2)虚拟服饰模拟

    四种身材模型进行打包后利用CLD Standalone软件进行服装3D的制作。根据服装尺码数据通过富怡CAD软件制作服装裁片导出DXF格式,导入要模拟贴合的服装裁片DXF文件(如图5(a))进行缝合,如图5(b);然后进行模拟,如图5(c);进行面料预设和渲染效果,如图5(d)。

    最后再导入3d Max内进行材质的贴图和渲染,对人体模型的肤色采取RGB248 197 183在材质编辑器中双击漫反射去修改,选中整个物体将其添加编辑器进行UVW展开,期间要将模型的位置进行调整,头部XYZ轴分别为1.1、7.0、0.0。头与脚的距离为14.0;左右和右手的距离为5.0,人模位置需要与Z轴平行,垂直于X\Y轴,如图6(a)(b)(c)所示。

    2.3 导入穿搭人体模型

    模型展示在Android Studio[7]中的实现,需要OBJ文件及MTL文件同时读取,并创建两个实体类分别保存文件信息。代码解析OBJ文件和MTL文件过程中,将OpenGL纹理贴图映射到Android Studio中,在OpenGL自己的线程中调用相关api,对所绘制的实体类进行渲染。渲染前后对比如图7(a)(b)所示。

    2.4 App界面展示

    3 总结

    本文主要研究了基于OpenCV、OpenGL与3d Max的个性穿搭人体模型构建,主要完成了以下几方面的工作:

    1)通过用户个人数据及OpenCV识别人体轮廓,从而简单判定用户身材类型;

    2)应用3d Max构建人体模型及贴图、渲染;

    3)应用CLD Standalone进行虚拟服饰模拟;

    4)在Android Studio中实现3D模型的导入及展示。

    本款App的设计还存在功能不够完善、数据库较小的问题。综合看来,可以基本实现对年轻女性不同身材的判定及服饰的展示。

    参考文献:

    [1] 徐俊,普园媛,徐丹,等.基于款式变换和局部渲染相结合的虚拟试衣研究[J].太原理工大学学报,2021,52(1):98-104.

    [2] 蒋丹妮,史瑞鹏,方青.基于OpenCV和OpenGL的720°全景场景构建方法研究[J].测绘与空间地理信息,2021,44(2):68-72,76.

    [3] 吕珍,谢倩,祝双武,等.OpenGL 导入3DS 模型模拟服装试穿[J].西安工程大学学报,2014,28(4):440-444.

    [4] 李怀功.关于3Dmax建模的方法分析和技巧探讨[J].电脑知识与技术,2017,13(21):128-129.

    [5] 张艺,匡毅,王梅,等.基于OpenCV的人体轮廓检测算法[J].计算机技术与发展,2020,30(8):81-85.

    [6] 王甜.基于OpenCV在Android移动终端的图形识别[J].电子制作,2020(23):63-65.

    [7] 叶纪委.适于移动端的三维鞋款选配展示App开发与实现[D].西安:陕西科技大学,2017.

    【通联编辑:谢媛媛】