发明内容
本发明目的在于提出一种人体模型自动创建方法及三维试衣系统,以解决上述现有技术存在的在构建人体模型时因为人体衣着有宽松的衣服而导致构建的人体模型准确性不高的技术问题。
为此,本发明提出一种人体模型自动创建方法,包括以下步骤:
S1:获取人体第一姿势下的第一RGBD图像;
S2:识别所述第一RGBD图像中人体衣着的宽松部位以及人体的紧凑部位;
S3:指引人体做出能够使得宽松部位变成紧凑部位的至少一个预定的第二姿势,并获取至少一幅第二RGBD图像;
S4:根据所述的第一RGBD图像以及至少一幅第二RGBD图像中提取人体净模型的特征参数;
S5:根据所述特征参数创建人体净模型。
优选地,本发明还可以具有如下技术特征:
进一步地,步骤S2中包括以下步骤:
S21:根据所述第一RGBD图像中的人体肤色RGB数据识别出人体的紧凑部位;
S22:根据所述第一RGBD图像的深度信息识别出人体衣着的宽松部位。
进一步地,步骤S4中包括以下步骤:
S41:获取所述第一RGBD图像以及第二RGBD图像中人体的紧凑部位在第二姿势下的特征数据;
S42:根据所述特征数据通过变形的逆变换恢复出该紧凑部位的特征参数。
进一步地,步骤S5中包括以下步骤:
S51:建立标准参数化人体模型;
S52:根据所述特征参数将标准参数化人体模型经变形后获取人体净模型。
进一步地,还包括以下步骤:
A1:提取所述第一RGBD图像中的RGB信息;
A2:利用该RGB信息的服装RGB数据,运用机器学习分类识别出所衣着的衣服的种类,获取当前人体衣着的衣服的厚度数据;
A3:根据所述厚度数据对创建的人体净模型做进一步优化。
或可包括:
B1:提取所述第一RGBD图像中的RGB信息和深度信息;
B2:根据RGB信息中的肤色RGB数据和服装RGB数据识别出人体的穿衣部位和未穿衣部位;
B3:根据所述穿衣部位和所述未穿衣部位的深度信息之差确定人体衣着的衣服的厚度数据;
B4:根据所述厚度数据对创建的人体净模型做进一步优化。
进一步地,步骤S22中包括以下步骤:
S221:根据所述第一RGBD图像的深度信息获取人体深度图像的平滑数据;
S222:将该平滑数据与预设的平滑阈值进行对比,若该平滑数据超过平滑阈值,则判定为宽松部位,反则不是。
进一步地,所述变形的逆变换包括:
S421:获取第二姿势下的紧凑部位的点云数据,根据点云数据获取网格模型M=(V,E);其中,V=(v1,v2,…,vn)T表示由模型中各个顶点的三维坐标构成的矩阵,E表示模型中所有的边;
S422:计算用于描述网格模型中各个点云之间相对关系的标准矩阵S=CV;其中,C=(I-D-1B)为变换矩阵,I为单位矩阵,D为对角矩阵,对角线上的元素Dii=di,di为与点Vi相邻的顶点数目,B矩阵可由下式表示:
S423:获取多个约束点,构建新的变换矩阵C′,利用V′=C′-1S求解变形后的坐标,修正得到变换后第一姿势下的网格模型M′=(V′,E)。
进一步地,所述变形逆变换为利用机器学习中的回归算法拟合变形前后的关系,得到经验公式用于进行变形逆变换处理。
另外,本发明还提供了一种三维试衣系统,包括存储器,用于存放程序;处理器,运行所述程序,以用于控制所述三维试衣系统执行三维试衣方法,所述三维试衣方法包括:
T1:根据任一所述的人体模型自动创建方法创建人体净模型;
T2:创建衣物模型;
T3:将衣物模型与人体净模型合成后展示试衣效果。
再次,本发明还提供了一种包含计算机程序的计算机可读存储介质,所述计算机程序可操作来使计算机执行任一所述的人体模型自动创建方法。
本发明与现有技术对比的有益效果包括:本发明公开的人体模型创建方法,针对现有的人体模型构建的过程中无法克服由于人体穿着宽松衣服导致构建模型不够准确的问题,本发明采用在根据包含深度信息的RGBD图像创建人体模型的过程中,先对人体衣着的宽松部位以及人体的紧凑部位进行识别,再根据预定的第二姿势指引人体对应动作,使得宽松部位变成紧凑部位,并获取该第二姿势下的RGBD图像,然后通过RGBD图像提取人体净模型的特征参数,通过获得特征参数进行人体净模型的创建;本发明的人体模型创建方法可实现较为准确的模型,可以构建出360度的人体净模型,更重要的,本发明可以通过预定的多个特定姿势(第二姿势)来准确地获取人体特征参数,因而可以避免宽松衣物带来的人体模型误差,克服了现有的三维人体模型构建时穿衣问题的困扰,进而可满足正常的消费级需求,同时,一般按照预定的全部特定姿势,也可以完成对人体净模型的创建,但由于人体的某些部位存在未覆盖衣服的可能,所以无需采用全套特定姿势来对人体净模型进行创建,本发明因为在获取特征参数之前存在一个人体宽松部位和紧凑部位识别的步骤,所以无需人体做出全部预定特定姿势(第二姿势),只需做一部分即可,提高方法处理的效率,减低运算量,可避免人体某些部位已经是紧凑部位。
优选方案中,采用人体肤色RGB数据来对人体的紧凑部位进行识别,通过深度信息识别人体衣着的宽松部位,这样可以准确的识别出紧凑部位与宽松部位进行识别,提高运算速度。
进一步地,因为特定姿势下与正常姿势(第一姿势)下的紧凑部位存在变形,利用变形的逆变换可以获取该特征参数。
实施例一:
本实施例提出一种人体模型自动创建方法,如图1所示,包括以下步骤:
S1:获取人体第一姿势下的第一RGBD图像;
S2:识别所述第一RGBD图像中人体衣着的宽松部位以及人体的紧凑部位;
S3:指引人体做出能够使得宽松部位变成紧凑部位的至少一个预定的第二姿势,并获取至少一幅第二RGBD图像;
S4:根据所述的第一RGBD图像以及至少一幅第二RGBD图像中提取人体净模型的特征参数;
S5:根据所述特征参数创建人体净模型。
本实施例中,人体RGBD图像是包括深度信息的深度图像,该深度图像可以通过深度相机进行获取,深度相机可以是基于结构光三角法、时间飞行法或者双目视觉原理的深度相机。
本实施例中获取RGBD图像可以通过单独的深度相机来获取也可以通过多个深度相机进行获取。
采用单独的深度相机为了获取目标物体没有时差的RGBD图像,主要采用以下两种方式:
一是分别利用深度相机和RGB相机独立获取深度图像以及RGB图像,其次根据深度相机以及RGB相机的位置关系以及各自的内部参数,如焦距、分辨率、图像传感器尺寸等,来进行配准以消除两个相机之间的视差,从而获取目标物体的RGBD图像。
二是利用RGB-IR的图像传感器,该图像传感器采用四种不同的滤光单元组成,分别可以通过R、G、B以及IR光分量,优选的,四个光分量的比例为R(25%):G(25%):B(25%):IR(25%),相机中图像传感器获取了各个分量(如R、G、B、IR)的信息之后,由于每一信息都只占有部分的像素,因而需要通过插值的方式恢复每个像素上的其他三种分量的强度信息,从而最终实现同步获取RGB图像以及IR图像。插值的方法有多种,比如加权平均等,获取的IR图像用来计算出深度图像,从而可以获取没有视差的RGBD图像。
采用第一种方式需要校准,采用第二中方式不需要校准,本实施例中,不对RGB图像的获取方法加以限定,视实际情况而定,在下文的说明中以“RGBD相机”的表述来代表可以用来获取RGBD图像的采集装置。
本实施例中,是为了获取人体360度的模型,通过单个RGBD相机实现360度的模型可以采用下述方法:被测人体通过转动一周的方式让单个RGBD相机获取包含人体360度信息的多幅RGBD图像。利用图像注册算法根据多幅RGBD图像可以提取出人体的整体三维点云和/或彩色数据。这种方法难以实现实时的人体整体三维数据获取,优点在于成本较低。
通过多个RGBD相机进行数据的获取包括通过不同角度的多个RGBD相机同步地获取反映人体所有三维信息的多幅RGBD图像,最后利用多幅RGBD图像进行注册后得到人体的整体三维点云和/或彩色数据。这种方法实质上是利用相机数量上的优势来解决无法实时性提取的问题。
另外,RGBD图像的注册需要耗费较多的计算资源,数据要求越精确,系统的实时性就会越差。为了解决实时性且测量精度的问题,本实施例可以采取从RGBD相机获取的人体RGBD图像中提取能够准确反映人体部位的特征信息,根据特征信息创建出虚拟的能反映人体三维特征的人体净模型。一旦建立人体净模型之后,后续在试衣过程中的实时显示则无须逐帧进行计算,只需逐帧提取人体骨架,由骨架驱动人体净模型的姿势以达到实时性的要求。
本实施例中,如图2所示,步骤S2中包括以下步骤:
S21:根据所述第一RGBD图像中的人体肤色RGB数据识别出人体的紧凑部位;
S22:根据所述第一RGBD图像的深度信息识别出人体衣着的宽松部位。
在获取人体特征时,由于不同的测量对象会穿着不同宽松程度的衣服,有针对性地根据当前测量对象的衣着来执行相应的姿势将会提升人体特征获取的效率。
在本实施例中,主要依靠以下方式进行宽松部位进行识别。首先利用RGB图像进行肤色识别,对于人体肤色的部位被认定为紧凑部位。其次利用RGBD图像中的深度数据的表面轮廓来判断。比如,一般衣服宽松部位的褶皱比较多,而紧凑部位的表面轮廓则比较平滑且呈一定的柱形及球形形状。根据这一特征,创建一个表面轮廓衡量模型,然后将人体需要测量特征的部位进行匹配识别,从而识别出宽松部位以及紧凑部位。
本实施例中,如图3所示,步骤S4中包括以下步骤:
S41:获取所述第一RGBD图像以及第二RGBD图像中人体的紧凑部位在第二姿势下的特征数据;
S42:根据所述特征数据通过变形的逆变换恢复出该紧凑部位的特征参数。
假如最终要得到的某一预设姿势下的人体净模型,预设姿势一般选取人体正常直立时的姿势。所述的第一姿势与第二姿势可以为任意姿势,在这些姿势下获取的特征数据都可以通过变形的逆变换恢复出在预设姿势下该紧凑部位的特征参数,最后再通过这些特征参数得到所述预设姿势下的人体净模型。优选地,在本实施例中,第一姿势即为预设姿势。容易想到的是,步骤S42中则无需对第一RGBD图像中的紧凑部位的特征数据进行变形的逆变换,换句话说,对第一姿势下的变形逆变换为0。
人体穿着宽松衣服时,身体中有许多部位会被衣服所遮盖,被遮盖的部位分两种,一种为贴身遮盖,一种为非贴身遮盖。在这里默认贴身遮盖(紧凑)部位的模型为实际的人体净模型,而非贴身遮盖(宽松)部位的模型则与人体净模型相差甚远。
值得注意的是,可以通过不同的姿势动作让非贴身遮盖变成贴身遮盖,比如双手叉腰则可以让腰部变成贴身遮盖、抬起小腿可以让小腿肚变成贴身遮盖、抬起一只手向侧面弯腰则可以让胸部侧边变成贴身遮盖等等。
因而,事先设定好能够反映所有人体特征的姿势或动作,让被测人体逐个做姿势就可以获取所有人体净模型需要的人体特征数据了。
下表列举了部分可能的第二姿势,包括:
序号 |
姿势 |
贴身部位 |
1 |
直立 |
肩膀 |
2 |
双手叉腰 |
腰部横向尺寸 |
3 |
抬起大腿 |
大腿 |
4 |
抬起小腿 |
小腿 |
5 |
举手、向侧面弯腰 |
胳膊、胸部及腰部侧面 |
6 |
向前面弯腰 |
背部、屁股 |
7 |
挺胸 |
胸部、腹部 |
|
… |
… |
人体的特征数据一般包括:身高、肩高、肩宽、腰围、胸围、大小腿轮廓、手臂轮廓等等。
另外还包括各个部位的特征点,即关节点。关节点的提取可以基于类似kinectSDK中骨架提取的算法,即先通过定位头部以及人体主干,然后利用深度学习(K-Tree)算法定位出其他骨骼关节点位置。
本实施例中,如图5所示,步骤S5中包括以下步骤:
S51:建立标准参数化人体模型;
S52:根据所述特征参数将标准参数化人体模型经变形后获取人体净模型。
根据提取的人体特征的特征参数获取人体净模型可以看成是人体的参数化建模。
本实施例中,是根据一个标准人体模型,然后根据得到的实际人体特征的特征参数修改该标准人体模型从而得到能反映实际人体的人体净模型。
本实施例中,一种简单的标准人体模型可以按照先验知识具有一定比例的形状规则的网格化人体模型,对该标准人体模型进行变换主要有三种情形:长度变形、宽度变形以及周长变形。当获取的人体特征与标准模型对应的特征不一致时,就需要进行长度、宽度或周长变形。具体的变形原理为轴变形原理,这里所谓的轴变形原理即是将模型上待变形的点与长度、宽度或周长对应的轴建立一一映射关系,当轴变化时,对应的变形点的坐标也发生变化,计算出新的坐标后重新创建模型。
本实施例中可以利用目前一些精度更加高的人体模型,比如SCAPE模型等。由SCAPE模型获取人体净模型的过程可以看成是对SCAPE模型的一次次迭代,即建立用于衡量人体特征差距的性能函数,通过将SCAPE模型的一次次修改迭代直到性能函数取值达到一定的阈值范围。
前一种人体净模型算法简单,系统的实时性较高,缺点是精度较差;后一种算法较复杂,精度高,缺点是实时性较差,往往需要GPU的并行处理来解决实时性的问题。
本实施例中对人体净模型的获取方法不加以限制。
本实施例中,尽管上述方法可以构建较为准确的净模型,但是尽管如此,还是不能完全克服因为衣服遮盖的问题,可以采用获取人体衣着的厚度数据进行估计的方式,来优化人体净模型,如图5所示,所以还可包括以下步骤:
A1:提取所述第一RGBD图像中的RGB信息;
A2:利用该RGB信息的服装RGB数据,运用机器学习分类识别出所衣着的衣服的种类,获取当前人体衣着的衣服的厚度数据;
A3:根据所述厚度数据对创建的人体净模型做进一步优化。
其他实施例中也可以为如图6所示的步骤:
B1:提取所述第一RGBD图像中的RGB信息和深度信息;
B2:根据RGB信息中的肤色RGB数据和服装RGB数据识别出人体的穿衣部位和未穿衣部位;
B3:根据所述穿衣部位和所述未穿衣部位的深度信息之差确定人体衣着的衣服的厚度数据;
B4:根据所述厚度数据对创建的人体净模型做进一步优化。
通过上述厚度估计可以利用获取的厚度数据对净模型进行进一步优化,以更加接近人体真实体型的情况,采用机器学习的方法可以通过多次训练得到的分类库对衣服进行分类识别。
本实施例中,如图7所示,步骤S22中包括以下步骤:
S221:根据所述第一RGBD图像的深度信息获取人体深度图像的平滑数据;
S222:将该平滑数据与预设的平滑阈值进行对比,若该平滑数据超过平滑阈值,则判定为宽松部位,反则不是。
所述变形的逆变换包括:
S421:获取第二姿势下的紧凑部位的点云数据,根据点云数据获取网格模型M=(V,E);其中,V=(v1,v2,…,vn)T表示由模型中各个顶点的三维坐标构成的矩阵,E表示模型中所有的边;
S422:计算用于描述网格模型中各个点云之间相对关系的标准矩阵S=CV;其中,C=(I-D-1B)为变换矩阵,I为单位矩阵,D为对角矩阵,对角线上的元素Dii=di,di为与点Vi相邻的顶点数目,B矩阵可由下式表示:
S423:获取多个约束点,构建新的变换矩阵C′,利用V′=C′-1S求解变形后的坐标,修正得到变换后第一姿势下的网格模型M′=(V′,E)。
还可以为,所述变形逆变换为利用机器学习中的回归算法拟合变形前后的关系,得到经验公式用于进行变形逆变换处理。
例如以大腿而言,该经验公式可以是下蹲后大腿多个横截面周长与正常站立姿势下周长之间的关系。由于不同人群的腿部轮廓不同,变形也会不同,因而要想准确地获取所要的关系,还需要对不同身高、体重、性别的人群进行采样,记录变形前后周长的变化情况,利用机器学习中的回归算法比如最小二乘回归算法、逻辑回归算法等拟合出变形前后的关系,将此关系作为经验公式。
一般地,首先对标准站立姿势的人体模型进行试衣,这一步可以看成是静态试衣;其次当实际人体姿势变化时的实时试衣,可以看成是动态试衣。其中动态试衣实际上是静态试衣在时间上的延伸。因而接下来主要说明静态试衣。
根据建立的人体净模型,进行三维试衣,目前比较成熟的衣物仿真模型为质点-弹簧模型,建立衣物仿真模型后需要将衣物与人体净模型进行注册。一般认为衣物背面的最高点与人体后颈部的中心,据此可以实现衣物与人体模型的初步配准;然后根据人体当前的骨架信息实现各个部分的局部配准。在注册配准之后,还可以进行质点的力的计算、衣物碰撞检测等,以模拟出更加真实的衣物显示效果。
在后续的实时性显示过程中,只要通过识别出人体的骨架信息,然后根据该骨架信息进行局部的配准即可以实现实时的3D试衣。
本实施例还提出了一种三维试衣系统,包括存储器,用于存放程序;处理器,运行所述程序,以用于控制所述三维试衣系统执行三维试衣方法,所述三维试衣方法包括:
T1:根据上述的人体模型自动创建方法创建人体净模型;
T2:创建衣物模型;
T3:将衣物模型与人体净模型合成后展示试衣效果。
同时,本实施例还提出了一种包含计算机程序的计算机可读存储介质,所述计算机程序可操作来使计算机执行所述三维试衣方法。
本领域技术人员将认识到,对以上描述做出众多变通是可能的,所以实施例仅是用来描述一个或多个特定实施方式。
尽管已经描述和叙述了被看作本发明的示范实施例,本领域技术人员将会明白,可以对其做出各种改变和替换,而不会脱离本发明的精神。另外,可以做出许多修改以将特定情况适配到本发明的教义,而不会脱离在此描述的本发明中心概念。所以,本发明不受限于在此披露的特定实施例,但本发明可能还包括属于本发明范围的所有实施例及其等同物。