摘要:随着时代与科技的发展,越来越多的科技元素融入到我们的生活中来。在人机交互方面,虚拟试衣系统为人们提供了便捷可靠的全新试衣模式,免去了在购物时的不便与烦琐。本文回顾了到目前为止国内外最新的虚拟试衣技术,并在此基础上展开自己对所完成的虚拟试衣系统的技术点的论述。
关键词:深度摄像头;虚拟试衣;人机交互
中***分类号:G642.0 文献标志码:A 文章编号:1674-9324(2015)35-0212-02
一、绪论
(一)项目提出的背景及研究意义
就目前而言,人们大多采用的试衣方式是:先在店中选中自己喜欢的衣服而后逐一试穿,试衣者耗费了大量体力和时间。现如今凡事都追求快速高效,若是能在更少的时间内达成自己的诉求,必会获得广大消费者的青睐。
随着类似于微软Kinect等可以检测出深度的摄像头的出现以及三维建模技术的成熟,为虚拟试衣系统的诞生提供了可能。该系统界面简洁友好,使消费者不用阅读说明书就能较快上手,完成自己的试衣。
(二)国内外研究及应用现状
虚拟试衣最先是以网页2D虚拟替身类型出现的,这种类型的特点是成本低、开发时间短、技术手段相对成熟,仅需对真实模特和服装的照片或者效果***进行简单处理即可。2D类型的虚拟试衣虽然操作简单,对网络带宽和终端设备要求较低,一般仅能提供虚拟替身正面与背面两组视角的试穿效果,因此对于服装上身效果的细节并不能很细致地体现。
而之后发展出来的3D虚拟试衣在操作方式上与2D类似,都需要在试衣前选择并设置用户替身的身材比例,然后从网页列表中选取并试穿服装或者配饰后在预览窗口中进行浏览。所有的服装模型均为三维模型,因此可提供360度全方位的视***浏览。它的视角比2D虚拟试衣更为灵活,但是就用户真实度和体验感来说而言仍是差强人意,原因是在3D虚拟试衣中每件服装、配饰和虚拟模特都要进行三维构建。其次,三维服装属于柔体模型,易变形,达不到体验者对美观的要求。
基于增强现实AR(Augmented Reality)技术的服装虚拟试衣是目前最新的应用类型,其高效、直观、真实的优势十分明显,也是沉浸感和体验效果最优的一种虚拟试衣体验类型。
二、基于深度摄像设备的人体姿态的捕捉与识别
(一)彩流的获取
首先进行人体信息的提取。Kinect有两类摄像头,近红外摄像头和普通的视频摄像头。视频摄像头提供了一般摄像头类似的彩色影像。这种数据流是三种数据流中使用和设置最简单的。因此我将他作为Kinect数据流介绍的例子。
使用Kinect数据流也有三步。首先是数据流必须可用。一旦数据流可用,应用程序就可以从数据量中读取数据并对数据进行处理和展现。一旦有新的数据帧可用,这两个步骤就会一直进行。我们使用Kinect彩摄像头获取视频流信息,即看到的人像与背景。使用红外摄像头来获取人体的骨骼信息与深度信息。
为了实现实时播放视频流数据,在Kinect_ColorFrameReady方法中,我们首先通过打开或者获取一个frame来提取Frame数据。ColorImageFrameReadyEventArgs对象的OpenColorImageFrame属性返回一个当前的ColorImageFrame对象。这个对象实现了IDisposable接口。调用CopyPixelDataTo方法可以填充像素数据,然后将数据展示到image控件上。这样在屏幕上就会出现一个实时录制现实场景的视频。
(二)手势识别
对于Kinect来说,目前可以使用的有8个通用的手势:挥手(wave)、悬浮按钮(hover button)、磁吸按钮(magnet button)、推按钮(push button)、磁吸幻灯片(magnetic slide)、通用暂停(universal pause)、垂直滚动条(vertical scrolling)和滑动(swipping)。我们的系统里采用了push button,vertical scrolling和swipping。
打开程序,进入界面,在kinect摄像头前挥手,机器自动识别出手势并映射在界面上。此时不进行任何操作。
1.确认选择的Push Button。下压按钮(Push Button)。手掌张开向前,在形式上有点像动态鼠标。下压命令执行的结果就是用户选择的衣服将试穿在用户身上。
2.用于浏览的Vertical Scrolling与Swip。左边衣物选择栏使用的是垂直滚动条(Vertical Scrolling)。当抬起或者放下手臂时会使得屏幕的内容垂直滚动,滚动的方向和大小由手臂和水平方向的夹角来确定。
使用划动手势(Swip)进行操作。SwipeTime和SwipeDeviation分别提供了划动手势经历的时间和划动手势在y轴上的偏移阈值,在一定阈值范围内对手部骨骼数据进行实时跟踪。检测出划动手势时滚动条将进行相应的响应。(如***1)
3.用于抓取的握拳手势。当使用者在浏览衣橱的时候,需要上拉或者下拽。在使用者将手握拳抬起或者放下手臂时会使得屏幕的内容垂直滚动,是便于使用者确定浏览抓取点的设计。
三、虚拟衣物模型的建立
(一)衣物模型的选择与建立
将衣物进行分类,分为上装、下装和全身装。基本衣物的建模过程如下:
一些简单的无袖裙装、高跟鞋、短裤等,可以先建立一个类似的长方体,根据具体需要修改参数(包括长、宽、高,以及长宽高上的分段数),然后将整体转化为可编辑多边形;之后选中不需要的面片删掉,剩下的即基本形状。然后用合适的、方便操作的选取方法选中所需要调整的关键点,进行位移上的推拉。除此之外,还可以使用修改器中的球形化、挤出、弯曲、扭曲、噪波等。
修改器调整好整体形状以后,需要通过细化、网格平滑、nurms细分等来使得对象更加平滑,适当地增加迭代次数可以达到更加满意的效果,但迭代次数太高会导致电脑功率加大造成负担;最后可以适当地在裙装上采用松弛修改器来增加垂坠感。
(二)解决衣物与试衣者紧密贴合问题
在使用者试衣的过程中,一定会移动或者旋转身体来体验所试的衣服穿上身的效果。所以衣物与身体的贴合度的解决方案是将所建的模型进行截***,并按照旋转角度分帧来进行***片的保存。在与Kinect结合的时候预先对使用者的身体转向进行判断,然后使用相对应的***片对使用者相应的身体部位进行贴***处理。(如***2)
四、基于深度摄像头的虚拟试衣系统的设计
(一)衣物的分类及它们与控件之间的对应关系
首先将衣服分为三类:TOPS,PANTS,TOPS,分别表示裙装、下装、上装。KinectRegion里面不同的KinectTileButton代表不同的衣服,通过按钮上的LABEL属性获取当前用户选择的衣服类型,三种不同的衣服属性分别对应三张待替换的***片IMAGE控件。
(二)衣服与待替换的***片的关系
PANTS以hipcenter的坐标为参考点,即PANTS***片的左上角与hipcenter的映射坐标对齐。
TOPS和DRESS以shoulderLeft的坐标为参考点,即TOPS和DRESS***片的左上角与shoulderLeft的映射坐标对齐。
另外,当选中某一衣服时,程序通过获取属性类型,调用后台准备好的相应的衣物说明信息,当用户试穿该衣服时,衣服信息将通过WPF相关组件的功能显示在屏幕右方的一块panel上。至此为止衣物信息获取结束。
(三)用户状态信息获取
当前用户状态的判断方法:Joint类型可以获取用户骨骼的坐标信息。
根据左右肩膀骨骼Z值,来判断此时人体究竟是左侧更靠近屏幕还是右侧更靠近屏幕,即向右转还是向左转。判断结果将影响我们从界面里看到的所试穿衣服的角度。
当用户选择要试用的衣物时,衣服就会以适当的角度准确舒适地贴合人体,达到良好的试衣效果(如***3)。
五、总结与展望
随着科技的进一步发展与人们更快节奏的生活,我们项目小组的同学都认为虚拟试衣这个课题还有很大的发展空间。为人们提供更加高效便捷的购物环境与全新的生活方式。
参考文献:
[1]余涛.Kinect应用开发实战:用最自然的方式与机器对话[M].北京:机械工业出版社.
转载请注明出处学文网 » 基于深度摄像头的虚拟试衣系统