本开发方案属于图像处理和虚拟现实技术领域,具体涉及一种虚拟试衣镜的实现方法。
背景技术:
随着物联网的发展,网络虚拟购物已经成了时代潮流。国内商家对于虚拟试衣技术不断尝试创新,以积极的态度迎接虚拟显示技术时代的到来,但是现有的在线的试衣系统,或是基于移动终端的试衣软件,其显示效果仍然无法与实物相提并论,也因此影响了虚拟试衣镜的发展与推广。
技术实现要素:
本发明的目的在于克服现有技术存在的问题,提供一种虚拟试衣镜的实现方法。
为实现上述技术目的,本发明采用如下技术方案:
一种虚拟试衣镜的实现方法,包括如下步骤:
S1服装建模,并对服装根据身材类型分类,包括Y型、A型、H型和X型;
S2用户人体图像数据采集;所述用户人体图像数据为二维数据或三维数据;
所述二维数据获取方式包括:采用LibSVM训练进行数据训练,获取训练模型;LibSVM训练的训练集数据包括用户身高体重、四围信息和身材类型信息;所述四维信息包括胸围、腰围、臀围、肩围;
用户上传标准全身照片和身高体重数据,对用户上传标准全身照片进行图像处理,提取四围信息,将身高体重数据和四维信息导入训练模型,获取身材类型分类;
S3将人体图像数据和服装建模数据关联并显示。
用户不在现场的时候,可以由用户提供影像采集二维数据,在软件上显示试衣效果;用户在现场时,可以采集三维数据。所述三维数据基于kinect体感机通过骨骼识别定位获取。
本发明的方法,所述S2中,LibSVM训练方法如下:
将单个用户的数据作为一个样本,表示为Di(xi,yi),其中yi为样本标签,xi为六维的数据点xi(x身高+x体重+x肩围+x臀围+x胸围+x腰围),设所求SVM空间的超平面方程为g(x)=
设核函数形式为K(xi,x),则所求的超平面形式变化为:
LibSVM训练选择的svm类型为c_svm类型,核函数为多项式核,迭代次数选择3,gamma选择0.166667,分类类别数为60,获取训练模型。
用户上传图像数据的处理步骤包括:
S2.1用户上传标准全身照片,包括正面标准照,背面标准照和侧面标准照;
S2.2对标准照片进行图像分割,将图划分为背景和前景两部分,前景即为用户人体图像数据;
S2.3对用户三围进行定位,包括胸部、腰部、臀部定位,从用户人体图像数据中提取三围信息;并对用户肩部进行定位。
所述S2.2中,采用GrabCut算法对标准照片进行图像分割。
所述S2.3中,基于分割后的用户背面标准照获取胸部定位,识别出手臂后,对手臂下方位置,占人体高度5%长度的位置处取得人体宽度信息取均值,计算得到胸部位置宽度Bo:
其中Bo为胸部位置宽度,Ho为人体高度,Bp为检测到胸部位置的水平高度,Bwi为所在行人体宽度;
识别出手臂后,通过宽度检测,检测到第一个宽度最小值时将其作为腰部中点,对上下取人体高度5%长度取平均值:
其中Wo为腰部位置宽度,Wp为检测到腰部位置的水平高度,Wwi为所在行人体宽度;
在识别出腰部所在位置后,向下检测至第一个宽度峰值,将其定位为臀部中心点;根据人体高度5%长度的位置取得人体宽度信息取均值,计算出臀部宽度信息Co:
其中Co为臀部位置宽度,Cp为检测到臀部位置的水平高度,Cwi为所在行人体宽度。
所述S2.3中,基于人体轮廓信息定位肩部:
S2.2.1基于人体轮廓线检测人体宽度,从上至下扫描前景图,扫描线宽度大小第二个峰值处为肩部,扫描线宽度大小第一个谷值处为脖颈;
S2.2.2对人体轮廓线计算斜率,取如下轮廓线:
斜率绝对值接近于零;
向肩部定位下方检测到手臂,斜率开始增加直到接近于正无穷;
向肩部定位上方检测到脖颈,斜率开始增加直到接近于正无穷;
取满足上述要求的轮廓线,限制肩部定位点范围,确定肩部定位。
所述S3中,根据模型训练后确认的身材类型,选择对应身材类型的服装;服装模型的长度与宽度确定方法为:
服装长度cL=(sH-Cp)/(ho/Ho);服装宽度bW=(fB+Co)/2;
其中cL为合成图中服装长度,sH为合成图中肩部高度,Cp为图中臀部高度,ho为用户真实身高,Ho为图中人体身高;bW为图中服装宽度,fB为图中正面胸部宽度,Co为图中胸部位置宽度。
所述S2中,所述三维数据基于kinect体感机通过骨骼识别定位获取。
所述S3中,还包括手势控制,所述人体图像数据采集过程中,利用LibSVM进行特征训练,实现手势识别;或通过kinect体感机进行指尖判定,实现手势识别。
本发明的方法可以方便实现虚拟试衣,并在用户到场或不到场两种情况下均可以实现,并且操作方便,尺寸匹配效果好,显示效果好。
具体实施方式
实施例1
本实施例用于说明本发明方法的具体技术方案。
本发明的方法包括如下步骤:
1)服装建模;
采用已有建模软件,如3DMAX对服装进行建模;并对服装根据身材类型分类,包括Y型、A型、H型和X型;
2)人体图像数据采集;
采集二维数据或三维数据的人体图像数据;
用户不在现场的时候,可以由用户提供影像采集二维数据,用户在现场时,可以采集三维数据。其中,所述二维数据基于SVM分类和图像处理获取。所述三维数据基于kinect体感机通过骨骼识别定位获取;
所述二维数据获取方式包括:采用LibSVM训练进行数据训练,获取训练模型;LibSVM训练的训练集数据包括用户身高体重、四围信息和身材类型信息;所述四维信息包括胸围、腰围、臀围、肩围;
用户上传标准全身照片和身高体重数据,对用户上传标准全身照片进行图像处理,提取四围信息,将身高体重数据和四维信息导入训练模型,获取身材类型分类;
LibSVM训练方法如下:
将单个用户的数据作为一个样本,表示为Di(xi,yi),其中yi为样本标签,xi为六维的数据点xi(x身高+x体重+x肩围+x臀围+x胸围+x腰围),设所求SVM空间的超平面方程为g(x)=
设核函数形式为K(xi,x),则所求的超平面形式变化为:
LibSVM训练选择的svm类型为c_svm类型,核函数为多项式核,迭代次数选择3,gamma选择0.166667,分类类别数为60,获取训练模型。
本发明中在核函数的选择中,分别试验了线性核,多项式核,RBF核,sigmoid核,参数gamma均为0.166667,在用测试样本进行检验时,发现平均召回率分别为82.121%,80.7%,8.65%,8.575%。同时发现,在使用原始样本代回测试时,召回率分别为99.1%,100%,100%,8.4%。因此选择使用多项式核作为核函数。本发明的SVM分类平均准确率可达82。
所述S2中,用户上传图像数据的处理步骤包括:
S2.1用户上传标准全身照片,包括正面标准照,背面标准照和侧面标准照;
标准照基于如下标准:
正面标准照:用户身体直立,手臂自然下垂;
背面标准照:用户身体直立,手臂水平伸展;
侧面标准照:用户身体直立,手臂自然下垂。
S2.2采用GrabCut算法对标准照片进行图像分割,将图划分为背景和前景两部分,前景即为用户人体图像数据;
S2.3对用户三围进行定位,包括胸部、腰部、臀部定位,从用户人体图像数据中提取三围信息;并对用户肩部进行定位。
首先,基于分割后的用户背面标准照获取胸部定位,识别出手臂后,对手臂下方位置,占人体高度5%长度的位置处取得人体宽度信息取均值,计算得到胸部位置宽度Bo:
其中Bo为胸部位置宽度,Ho为人体高度,Bp为检测到胸部位置的水平高度,Bwi为所在行人体宽度;
识别出手臂后,通过宽度检测,检测到第一个宽度最小值时将其作为腰部中点,对上下取人体高度5%长度取平均值:
其中Wo为腰部位置宽度,Wp为检测到腰部位置的水平高度,Wwi为所在行人体宽度;
在识别出腰部所在位置后,向下检测至第一个宽度峰值,将其定位为臀部中心点;根据人体高度5%长度的位置取得人体宽度信息取均值,计算出臀部宽度信息Co:
其中Co为臀部位置宽度,Cp为检测到臀部位置的水平高度,Cwi为所在行人体宽度。
基于人体轮廓信息定位肩部:
S2.2.1基于人体轮廓线检测人体宽度,从上至下扫描前景图,扫描线宽度大小第二个峰值处为肩部,扫描线宽度大小第一个谷值处为脖颈;
S2.2.2对人体轮廓线计算斜率,取如下轮廓线:
斜率绝对值接近于零;
向肩部定位下方检测到手臂,斜率开始增加直到接近于正无穷;
向肩部定位上方检测到脖颈,斜率开始增加直到接近于正无穷;
取满足上述要求的轮廓线,限制肩部定位点范围,确定肩部定位。
为实现通过手势控制进行衣服的筛选,在人体图像数据采集过程中可,利用SVM进行特征训练,实现手势识别;或通过kinect体感机进行指尖判定,实现手势识别;
S3将人体图像数据和服装建模数据关联,在显示器上显示;
根据模型训练后确认的身材类型,选择对应身材类型的服装;服装模型的长度与宽度确定方法为:
服装长度cL=(sH-Cp)/(ho/Ho);服装宽度bW=(fB+Co)/2;
其中cL为图中服装长度,sH为图中肩部高度,Cp为图中臀部高度,ho为用户真实身高,Ho为图中人体身高;bW为图中服装宽度,fB为图中正面胸部宽度,Co为图中胸部位置宽度。
当服装的匹配效果出现误差或者不符合用户的意图时,可以手动微调服装位置与大小。
服装与人体的肩部定位点的区域大小不一致的,因此本发明中对用户调整的范围进行了限制,以防止用户的误操作。限定方法是:用户对服装的位置进行调节时两者的匹配区域必须有重合区域,否则不能调整。对于服装的大小可以通过手指对屏幕的触控调整。