本发明涉及虚拟试衣技术,具体涉及一种虚拟试衣方法和系统。
背景技术:
随着电子商务的兴起,网购已经成为受大众,尤其是年轻一代,所喜爱的购物方式。在网购衣服中,通常只能选择衣服的尺寸,款式,颜色等,凭自身经验来判断衣服是否会合身,而无法直观地看到试穿该衣服的效果。这就影响了网购衣服的体验性,因为衣服的不合身而导致的退货问题也影响了消费者和商家双方的利益,“退货-再选合适尺寸-再发货”这种模式使得网购衣服的物流成本增高,耗时上也变长,影响到了网购衣服的进一步发展。不同于网购衣服,在服装实体店试穿然后购买衣服,虽然可以直观地看到衣服穿在身上的效果,但由于试衣者通常需要先脱去自身所穿的一些衣服,然后试穿所看中的衣服,整个过程较为繁琐并且耗时也较长。虚拟试衣,即在用户不需要实际试穿衣服的情况下,将“衣服穿到人身上”的这个效果展现给用户。这个技术的出现能够应对网购衣服和服装实体店试衣的一些弊端,提升用户试衣的体验性。虚拟试衣从发展之初开始,就受到了广泛的关注,众多科研机构以及企业都针对虚拟试衣提出了诸多方法。虚拟试衣所处理的对象主要包含人体和衣服,依据这些处理对象,可将虚拟试衣划分为2d的虚拟试衣和3d的虚拟试衣。其中,2d的虚拟试衣所处理的对象是2d的衣服和2d/3d的人体;3d的虚拟试衣所处理的对象是3d的衣服和2d/3d的人体。三维的衣服模型相比于二维的衣服模型,多了一个维度,通常是一个360°的在各个视角下都能看到衣服效果的模型,所以涵盖的信息量比较大,更具有优越性。而目前三维衣服模型的建立主要依赖的是利用三维建模仿真软件,如3dsmax,maya等,利用所提供的衣服样板,在软件的操作界面中绘制多个二维的衣服样片,每个样片再依据所定义的缝合关系缝合在一起,从而构造形成三维衣服模型。利用此种方法制作而成的三维衣服模型主要弊端有:衣服的颜色和纹理主要根据软件所提供的颜色和纹理调和而成,与实际衣服的颜色和纹理相差较大。此外,传统意义上的试衣,衣服和人是处在同一实际场地下,所以衣服和人所处的光照环境是一样的,而现存的虚拟试衣技术很少考虑到这一点,一般的方法都是单独对衣服和试衣者进行建模然后再将衣服模型和试衣者模型整合,即建立衣服模型的光照环境和建立试衣者的人体模型的光照环境通常是不一样的,这就会造成衣服相对于人体的亮度过高或过低,从而在试衣的效果上并不太理想。
技术实现要素:
本发明的目的在于提供一种虚拟试衣方法和系统,可以解决三维衣服模型与真实衣服在颜色和纹理上相差较多的问题,以及衣服和人体的光照效果不一致而导致的试衣效果真实感不强的问题。
一方面,本发明提供了一种虚拟试衣方法,所述方法包括下述步骤:
s1:获取穿衣标准人体和试衣者的彩色三维模型,未穿衣标准人体的三维模型或彩色三维模型,所述试衣者指的是能直观反映其身体轮廓的试衣者;
s2:由所述穿衣标准人体的彩色三维模型分割得到所述衣服的彩色三维模型;
s3:计算所述未穿衣标准人体的三维模型或彩色三维模型与所述试衣者的彩色三维模型之间的变换函数;
s4:利用所述变换函数将所述衣服的彩色三维模型整合到所述试衣者的彩色三维模型上,得到虚拟试衣模型。
进一步的,在所述步骤s4之上,还可以对所述虚拟试衣模型进一步处理:
s5:对虚拟试衣模型进行优化,所述优化包括对所述虚拟试衣模型进行所述衣服与所述试衣者的碰撞检测以及对所述衣服模型在空间结构上的进一步调整。
进一步的,所述步骤s2中的所述分割指:
根据所述穿衣标准人体的彩色三维模型,通过对所述衣服颜色的识别从而在三维空间上分割出所述衣服的彩色三维模型;
或者,将所述穿衣标准人体的彩色三维模型与所述未穿衣标准人体的三维模型或彩色三维模型进行相减操作从而分割出所述衣服的彩色三维模型。
进一步的,其特征在于,所述三维模型以及彩色三维模型是通过以下步骤获取的:
t1:利用至少一个3d传感器获取包含目标各个方向的深度图像以及彩色图像;
t2:根据所述深度图像得到各个方向的三维点云数据,经配准得到所述目标的360°的三维点云数据,并根据三维表面重建算法得到所述目标的三维模型;
t3:将所述深度图像与所述彩色图像进行配准,从而得到深度图像上各个像素的彩色信息;
t4:利用所述三维模型以及彩色信息得到所述彩色三维模型。
进一步的,所述步骤t1之前还包括下述步骤:
t11:设定所述3d传感器的标准光照参数;
t12:利用所述3d传感器检测当前测量环境下的光照参数,并与标准光照参数进行比较;
t13:根据比较结果利用照明灯补光或收缩通光孔径控制通光量。
进一步的,所述三维点云数据计算公式如下:
zdepth=depth(x,y)
其中,xdepth、ydepth及zdepth为深度图像中各个像素对应的三维点云数据的坐标值;ox_depth、oy_depth分别对应于所述深度相机原点的x轴和y轴坐标;fx_depth,fy_depth,分别对应于所述深度相机的x轴和y轴方向的焦距;depth(x,y)代表深度图像每一像素的值;
进一步的,所述深度图像与所述彩色图像的配准指的是建立所述深度图像中像素点与所述彩色图像像素点之间的映射关系,所述映射关系的计算公式如下:
prgb(xrgb,yrgb,zrgb)=r.pdepth+t
其中,pdepth为所述深度图像各像素的三维坐标pdepth(xdepth,ydepth,zdepth);r为旋转矩阵,rx,ry,rz分别为绕x,y,z轴的旋转分量;t为平移矩阵,tx,ty,tz分别为沿x,y,z轴的平移分量;prgb(xrgb,yrgb,zrgb)为所述彩色图像中各个像素的三维坐标;
其中,fx_rgb,fy_rgb,分别对应于所述彩色相机的x轴和y轴方向的焦距;ox_rgb,oy_rgb,分别对应于所述彩色相机原点的x轴和y轴坐标。
进一步的,所述3d传感器的数量至少为四个。
另一方面,本发明提供了一种虚拟试衣系统,包括至少一个3d传感器、衣服、标准人体和计算设备,所述计算设备包含的软件程序可利用所述3d传感器、衣服以及所述标准人体执行如上述所述的方法。
再一方面,本发明提供了一种包含计算机程序的计算机可读存储介质,所述计算机程序可使计算机执行如上述所述的方法
本发明的有益效果是:利用3d传感器对穿衣标准人体、未穿衣标准人体、试衣者进行拍摄,获取所述目标的三维模型或彩色三维模型。对所述穿衣标准人体的彩色三维模型进行分割得到衣服的彩色三维模型,或者对所述穿衣标准人体的彩色三维模型和所述未穿衣标准人体的三维模型或彩色三维模型进行相减操作得到衣服的彩色三维模型。通过计算未穿衣标准人体的三维模型或彩色三维模型与试衣者的彩色三维模型之间的变换函数,将所述衣服的彩色三维模型整合到所述试衣者的彩色三维模型上,得到虚拟试衣模型。利用所述方法建立的所述衣服的彩色三维模型与真实衣服在颜色和纹理上更具有相似性,所述衣服的彩色三维模型真实感更强;
本发明的一些优选方式还具有如下的有益效果:
利用所述方法获取的衣服的彩色三维模型和试衣者的彩色三维模型的光照环境一致,避免了衣服的彩色三维模型相对于试衣者的彩色三维模型亮度过高或过低,进一步增强了虚拟试衣的真实感。
附图说明
图1是本发明提供的虚拟试衣系统装置摆放图;
图2是本发明提供的虚拟试衣方法的流程图;
图3是本发明提供的虚拟试衣方法的时序图;
图4是本发明提供的虚拟试衣方法中步骤s2的子流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
实施例一
如图1所示的是本发明提供的虚拟试衣装置摆放图,详述如下:
1,2,3,4为4个3d传感器。具体的,所述3d传感器可为基于结构光技术的传感器、基于tof技术的传感器、基于双目视觉成像的传感器等等。本实施例采用的是基于tof技术的传感器。
5为目标对象,具体可为穿衣标准人体、未穿衣标准人体、试衣者。目标对象均以双脚直立,两腿之间微微张开,双手伸展的姿势被拍摄。
6为计算设备,具体为包含计算机程序的计算机设备。
所述4个3d传感器分别等距地面向所述目标对象,对应于所述目标对象的前后左右四个方向。每个传感器均用三脚架支撑,传感器的高度设置和与所述目标对象的距离的设置以能最大限度地将所述目标对象包含在所述3d传感器的相机画面中为标准,4个3d传感器的高度设置一致。
4个3d传感器可以有线或无线的方式连接到计算机设备上,本实施例采用的是以符合usb3.0协议的数据线将4个3d传感器连接到计算机设备上。usb3.0的最大传输带宽达到5.0gbps,从而能高效地将3d传感器所拍摄的数据传到计算机设备上。
如图2和图3所示是本发明提供的虚拟试衣方法的流程图和时序图,为了便于说明,仅示出了与本发明实施例相关的部分,详述如下:
s1:获取穿衣标准人体和试衣者的彩色三维模型,未穿衣标准人体的三维模型或彩色三维模型,所述试衣者指的是能直观反映其身体轮廓的试衣者;
本实施例采用4个3d传感器同步对所述目标对象进行拍摄,但不排除利用单个3d传感器从多个角度对所述目标对象进行拍摄。所述三维模型以及彩色三维模型是通过以下步骤获取的:
t1,利用至少一个3d传感器获取包含目标各个方向的深度图像以及彩色图像;
t2,根据所述深度图像得到各个方向的三维点云数据,经配准得到所述目标的360°的三维点云数据,并根据三维表面重建算法得到所述目标的三维模型;
t3,将所述深度图像与所述彩色图像进行配准,从而得到深度图像上各个像素的彩色信息;
t4,利用所述三维模型以及彩色信息得到所述彩色三维模型。
所述试衣者指的是能直观准确反映其身体轮廓的试衣者,如以穿紧身衣遮盖隐私部位的试衣者。所述穿衣标准人体指的是在所述未穿衣标准人体上穿上所要拍摄的真实衣服,或者在和所述未穿衣标准人体的其他外形一致的假人上穿上所要拍摄的真实衣服。每个3d传感器都内置深度相机和彩色相机。4个3d传感器拍摄得到的原始数据主要由两部分组成:深度图像、彩色图像。深度图像上每一个像素的值对应于深度相机与所述目标对象表面每一个采样点的真实距离。对每个3d传感器内置的深度相机和彩色相机进行相机的标定,获取得到深度相机的内部参数,彩色相机的内部参数,深度相机相对于彩色相机的外部参数。深度相机的内部参数主要由fx_depth,fy_depth,ox_depth,oy_depth组成,其中fx_depth,fy_depth,分别对应于深度相机的x轴和y轴方向的焦距,ox_depth,oy_depth,分别对应于深度相机原点的x轴和y轴坐标。彩色相机的内部参数主要由fx_rgb,fy_rgb,ox_rgb,oy_rgb组成,其中fx_rgb,fy_rgb,分别对应于彩色相机的x轴和y轴方向的焦距,ox_rgb,oy_rgb,分别对应于彩色相机原点的x轴和y轴坐标。深度相机相对于彩色相机的外部参数主要由r,t组成,其中r为旋转矩阵,rx,ry,rz分别为绕x,y,z轴的旋转分量,t为平移矩阵,tx,ty,tz分别为沿x,y,z轴的平移分量。
进一步的,在每个3d传感器对所述目标对象拍摄得到的数据主要由目标对象和背景两部分数据组成。将所述目标对象与背景进行分割从而得到所述目标对象的数据主要可以采用两种方式进行:基于彩色图像、基于深度图像。由于所述目标对象与背景在深度值上相差较大,可通过设定深度阈值将所述目标对象与背景分割出来。进一步的,所述3d传感器有人体骨架识别功能,利用此人体识别功能可将所述目标对象与背景进行分割,得到仅包含所述目标对象的数据。
所述深度图像上每一个像素点与相对于深度相机三维坐标空间的三维点云的计算公式如下:
zdepth=depth(x,y)(3)
其中,depth(x,y)代表深度图像每一像素的值,x,y代表深度图像上每一像素的x轴,y轴坐标。pdepth(xdepth,ydepth,zdepth)代表深度图像上每一个像素点在三维空间的点。
相对于所述深度相机的三维空间点与相对于所述彩色相机的三维空间点具有如下的映射关系:
prgb(xrgb,yrgb,zrgb)=r.pdepth+t(4)
其中prgb(xrgb,yrgb,zrgb)为每个彩色点在三维空间的坐标。每个三维空间的彩色点与所述彩色图像上的像素点具有如下的映射关系:
经由步骤(1)-(3)可得到不包含颜色信息的三维点云数据;经由步骤(1)-(6)可得到包含颜色信息的三维点云数据。
进一步的,在获取所述目标对象的不包含或包含颜色信息的三维点云数据后,根据多个3d传感器的位置关系,可将多个视角的点云数据融合,得到所述目标对象的360°点云数据。本实施例采用icp算法融合多个视角的点云数据。
进一步的,在获取所述目标对象的不包含或包含颜色信息的360°点云数据后,利用三维表面重建算法可得到所述目标对象的三维模型或彩色三维模型。本实施例采用泊松表面重建算法处理所述目标对象的不包含或包含颜色信息的360°点云数据以得到所述目标对象的三维模型或彩色三维模型。
s2:由所述穿衣标准人体的彩色三维模型分割得到所述衣服的彩色三维模型;
进一步的,所述步骤s2中的所述分割指:根据所述穿衣标准人体的彩色三维模型,通过对所述衣服颜色的识别从而在三维空间上分割出所述衣服的彩色三维模型;或者,将所述穿衣标准人体的彩色三维模型与所述未穿衣标准人体的三维模型或彩色三维模型进行相减操作从而分割出所述衣服的彩色三维模型。
进一步的,在进行步骤s2之前,需要对仅包含所述穿衣标准人体的彩色图像进一步处理,处理的操作为图像分割,即从彩色图像上进一步分割出衣服的图像。所述图像分割主要由两部分组成:颜色的量化与空间的分割。在颜色的量化中,使用聚类的方法将图像分割成一系列颜色类别。在空间的分割中,使用区域生长法对细分为多个颜色类别的图像进行分割。对于已分割后的图像,去除除衣服之外的其他区域,从而保留下仅含有衣服的图像。
进一步的,利用穿衣标准人体的彩色三维模型和未穿衣标准人体的三维模型或者彩色三维模型做相减操作得到衣服的彩色三维模型主要包含以下步骤:第一,对所述穿衣标准人体的彩色三维模型和未穿衣标准人体的三维模型或彩色三维模型进行配准;第二,对所述穿衣标准人体的彩色三维模型上的每一个点,通过映射关系,找到其在未穿衣标准人体的三维模型或彩色三维模型上的对应点;第三,计算两个点之间的距离,设定距离阈值,当大于距离阈值时,保留所述穿衣标准人体的彩色三维模型上的点,当小于距离阈值时,则删除穿衣标准人体的彩色三维模型上的点。经由以上步骤,在配准精度足够高的情况下,可以利用所述方法得到衣服的彩色三维模型。
s3:计算所述未穿衣标准人体的三维模型或彩色三维模型与所述试衣者的彩色三维模型之间的变换函数;
本实施例采用的是径向基函数用于所述两个模型的变换关系。首先在未穿衣标准人体的三维模型或者彩色三维模型上选取人体特征点,并在试衣者的彩色三维模型上选取对应的参照点;然后经由径向基函数的计算得到两个模型之间的变换关系。
s4:利用所述变换函数将所述衣服的彩色三维模型整合到所述试衣者的彩色三维模型上,得到虚拟试衣模型。
进一步的,在所述步骤s4之上,还可以对所述虚拟试衣模型进一步处理:
s5:对虚拟试衣模型进行优化,所述优化包括对所述虚拟试衣模型进行所述衣服与所述试衣者的碰撞检测以及对所述衣服模型在空间结构上的进一步调整。
在将整合衣服的彩色三维模型和试衣者的彩色三维模型上,存在两个模型融合时问题,亦即两个模型的碰撞,衣服的彩色三维模型的某些表面可能穿入试衣者的彩色三维模型表面,从而造成人体皮肤表面在外而衣服表面在内的问题。为此,需要进一步对所述虚拟试衣模型进行处理,处理的方法为:对所述衣服的彩色三维模型和试衣者的彩色三维模型的碰撞检测,以及将穿入所述试衣者的彩色三维模型表面的所述衣服的彩色三维模型的部分进行空间坐标的重新计算使所述衣服的穿入部分被调整到所述试衣者的表面外部,调整的方式可依据所述试衣者的彩色三维模型的表面法向量进行。
实施例二
当试衣者与穿衣标准人体、未穿衣标准人体所处的光照环境不一致时,还包括以下子步骤:
t11:设定所述3d传感器的标准光照参数;
t12:利用所述3d传感器检测当前测量环境下的光照参数,并与标准光照参数进行比较;
t13:根据比较结果利用照明灯补光或收缩通光孔径控制通光量。
作为一种实施方式,4个3d传感器可以增加光敏元件,动态的检测试衣者周围的光照参数。当试衣者与穿衣标准人体、未穿衣标准人体因为异地或拍摄时间不同,所处的光照环境不一致时,可以根据预先获取的穿衣标准人体、未穿衣标准人体的拍摄图像的光照参数,或者实时检测穿衣标准人体、未穿衣标准人体所处的光照参数。将所述光照参数与试衣者的光照参数进行对比,根据对比结果,利用3d传感器的照明灯补光,或者采用收缩相机通光孔径的方式控制通光量。
以上内容是结合具体/优选的实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,其还可以对这些已描述的实施方式做出若干替代或变型,而这些替代或变型方式都应当视为属于本发明的保护范围。