基于单幅图片的唐代服饰三维重建
2015-02-27朱耀麟刘雅琪杨宇峤
朱耀麟,刘雅琪,杨宇峤
(1.西安工程大学 电子信息学院, 陕西 西安 710048;2.长安大学 建筑学院,陕西 西安 710061)
·信息科学·
基于单幅图片的唐代服饰三维重建
朱耀麟1,刘雅琪1,杨宇峤2
(1.西安工程大学 电子信息学院, 陕西 西安 710048;2.长安大学 建筑学院,陕西 西安 710061)
针对传统建模方法的局限性和对唐代服饰进行建模自身的特点,提出了一种将数字建模和物理建模相结合的基于单幅图片的唐代服饰的三维重建的方法。由于唐代历史悠久,遗留的下来的服装文物基本为二维水彩画,陶俑等,能从中提取的信息及其有限,因此利用OpenCV的自动扫描技术和根据服装横截面近似椭圆的特性计算得出服装大致的数字模型,而数字模型只有服装的大致轮廓,无法呈现逼真的三维服饰,则再将数字模型的数据数据输入三维建模软件Maya中进行细节修改,并对其添加动力学特性,纹理贴图渲染。仿真结果显示三维重建出的唐代服饰模型,不仅逼真,而且效率高。
单幅图片;唐代服饰;自动扫描;OpenCV;Maya;MEL
唐代服装,承载了盛唐时期的历史文化,是中国和世界文化遗产的不可缺少的一部分。然而,随着时间的流逝唐代服装经历了不可避免的逆向变化。比如,被挖掘的墓藏服装遇空气会失去鲜艳的色彩,实物服装不易保存,某些服装款式失传等。而现代三维计算机数字集成技术又为此提供了一个新的重要手段和应用数字保存和发扬唐代服装文化将具有非常重要的意义。目前有很多人在对三维重建技术进行研究[1-13]。
这些建模方法都只能对一些简单而规则的物体进行三维重建,对一些复杂的物体进行三维建模时失真比较严重而且算法也过于复杂。本文针对传统建模方法的局限性,提出了一种基于单幅图像的唐代服饰的三维重建方法,这种方法将数字建模和物理建模相结合,取长避短,既避免了单独使用物理建模时,其操作复杂、建模时间长的缺点,也避免了只利用数字建模会使复杂模型易失真的的缺点,此方法利用了数字建模直接获取服装的三维数据轮廓,节省建模时间,提高建模效率,同时利用物理建模手动修改轮廓细节,添加纹理贴图渲染,使模型更为逼真。
1 三维重构原理
基于单幅图像的唐代服饰的三维重构方法的原理如图1所示。输入的图像首先经过简单的图像预处,使图片更加清晰易于信息的提取,其次利用OpenCV的自动扫描功能,对图像上标记的部分进行信息采集并将采集到的信息输出,然后将输出的信息输入Maya三维建模软件中,最后对获得的模型进行细节部分的修改。
图1 基于单幅图像的唐代服饰的三维重构原理Fig.1 Based on single image three dimensional reconstruction principle of the tang dynasty costumes
图像预处理的目的主要是改善图像质量,使图像便于识别、易于处理。主要方法有图像色彩平衡、图像增强等。
数字化处理是根据图像灰度信息和二维坐标信息建立图像中物体的数字化模型的过程,即利用计算机视觉和图像处理技术,从载入的图像中获取物体表面的三维形状信息的过程。
将数据输入建模软件中的目的是为了对模型进行实体重建,以便于对模型进行修改完善。
2 数字化模型的建立
怎样从图像中获取被研究物体表面的三维信息是进行三维重构的基础和关键。本文利用OpenCV的自动扫描功能,将服装数据进行采集,根据图片中的服装有无褶皱将图片分为两种。对于这两种情况,对服装进行信息提取的方法略有差异。对于无褶皱的服装,只需要利用二维坐标通过一定的算法得出深度坐标即可,而对于有褶皱的要在此基础上添加灰度值。得到三维坐标后,将坐标按一定顺序排列,便可得到大致的数字模型。
2.1 OpenCV的自动扫描功能
OpenCV 图像处理算法库在 VC++编译环境下运行,为数字图像的处理、计算机视觉技术应用提供了极大的方便。它不仅是完全免费的开源软件而且它包含非常丰富的各类图像处理及识别的函数。其中InitLineIterator这个函数是初始化直线迭代器,调用此函数可以进行直线扫描,函数的使用格式为
int cvInitLineIterator[14](const CvArr* image, CvPoint pt1, CvPoint pt2, CvLineIterator* line-iterator, int connectivity=8,int left-to-right=0)。
参数img用以获取直线的图像;pt1为线段的第一个端点;pt2为线段的第二个端点;line-iterator 指向直线迭代状态结构体的指针;connectivity表示直线的邻接方式,为4邻接或者8邻接; left-to-right 标志值,指出扫描直线是从pt1和pt2外面最左边的点扫描到最右边的点(left-to-right≠0),还是按照指定的顺序,从pt1到pt2(left-to-right=0)。函数cvInitLineIterator初始化直线迭代器返回两个端点间点的数目。两个端点都必须在图像内部。在迭代器初始化以后,所有的在连接两个终点的栅栏线上的点,可以通过访问CV-NEXT-LINE-POINT点的方式获得。在线上的这些点使用4-邻接或者8-邻接的Bresenham算法计算得到。
Bresenham算法是计算机图形学领域使用最广泛的直线扫描转换方法。该算法不必计算直线的斜率,因此不做除法。不用浮点数,只用整数,只作整数加减运算和乘2运算,而乘2运算可以用移位操作实现,因此Bresenham算法的运算速度很快,并适于用硬件实现。
该算法的优点在于可以采用增量计算,使得对于每一列,只要检查一个误差项的符号,就可以确定该列所求的像素。由于显示直线的像素点只能取整数值坐标,可以假设直线上第i个像素点坐标为(xi,yi),它是直线上点(xi,yi)的最佳近似,并且xi=xi(假设m<1),如下图所示。那么,直线上下一个像素点的可能位置是(xi+1,yi)或(xi+1,yi+1)。
图2 Bresenham算法Fig.2 Bresenham algorithm
由图2可知,在x=xi+1处,直线上点的y值是y=m(xi+1)+b,该点离像素点(xi+1,yi)和像素点(xi+1,yi+1)的距离分别是
d1=y-y1=m(xi+1)+b-yi,
(1)
d2=(yi+1)-y=(yi+1)-
m(xi+1)-b。
(2)
这两个距离差为
d1-d2=2m(xi+1)-2yi+2b+1。
(3)
我们来分析公式(2)-(3):
1)当此值为正时,即d1>d2,说明直线上理论点离(xi+1,yi+1)像素较近,下一个像素点应取(xi+1,yi+1);
2)当此值为负时,即d1 3)当此值为零时,说明直线上理论点离上、下两个像素点的距离相等,取哪个点都行,假设算法规定这种情况下取(xi+1,yi+1)作为下一个像素点。 因此只要利用(d1-d2)的符号就可以决定下一个像素点的选择。为此,进一步定义一个新的判别式 pi=Δx×(d1-d2)=2Δy×xi- 2Δx×yi+c (4) 式(4)中的Δx=(x2-x1)>0,因此pi与(d1-d2)有相同的符号;这里 Δy=y2-y1, c=2Δy+Δx(2b-1)。 将式(4)中的下标i改写成i+1,得到 pi+1=2Δy×xi+1-2Δx×yi+1+c。 (5) 将式(5)减去(4),并利用xi+1=xi+1,可得 pi+1=pi+2Δy-2Δx×(yi+1-yi)。 (6) 再假设直线的初始端点恰好是其像素点的坐标,即满足 yi=mxi+b。 (7) 由式(4)和式(7)得到pi的初始值 pi=2Δy-Δx。 (8) 这样,我们可利用误差判别变量,得到如下算法表示 pi=2Δy-Δx。 初始 yi+1=yi+1, xi+1=xi+1, 当pi≥0时:pi+1=pi+2(Δy-Δx) (9) yi+1=yi, xi+1=xi+1, 否则:pi+1=pi+2Δy。 从式(2-9)可以看出,第i+1步的判别变量pi+1仅与第i步的判别变量pi以及直线的两个端点坐标分量差x和y有关,运算中只含有整数相加和乘2运算,而乘2可利用算术左移一位来完成,因此这个算法速度快并易于硬件实现。 2.2 三维深度信息的计算 由于唐代文物图片都均为二维平面图,因此无法直接对服装的深度信息进行提取,本文根据服装形状的特性,将服装的横截面近似为椭圆,利用以上的过程中扫描出服装标记处的二维坐标来计算出横截面的深度值。 椭圆公式如下 x2/a2+y2/b2=1。 (10) 设(x1,y1),(x2,y2)为一条线段的两个端点,若线段为水平时y值不变,只利用x值,因此通过公式计算出的y0值则为深度值 a=(x2-x1)/2, b=3*a/5, (11) 若线段为竖直时x值不变,只利用y值,因此通过公式计算出的x0值则为深度值 a=(y2-y1)/2, b=3*a/4, (12) 对于无褶皱的服装,三维坐标就直接为(x,y,y0)/(x,y,x0)(横/竖);而对于有褶皱的服装,则深度值要再加上灰度值。灰度值得计算公式为 Gray=(R*38+G*75+B*15)≫7。 (13) 式中的R,G,B值是在扫描线段二维坐标的过程中同时获得的,则其三维坐标为(x,y,y0+Gray)/(x,y,x0+Gray)(横/竖)。 2.3 三维数据的输出 本文最后是在Maya中完成服装的三维重建,因此利用OpenCV扫描计算得到的三维数据需要以Maya可以识别的格式输出。MEL(Maya埋入式语言)为Maya提供了基础。Maya界面的几乎每一个要点都是在MEL指令和脚本程序上建立的。MEL语言是Maya功能的基础。用户可以使用MEL命令来创建自己的用户界面,访问高级功能。对于特殊的场景,可以创建与之匹配的界面,或者对于某个特殊的项目,可以改变默认的参数设置。对于某些使用Maya界面不容易改变的属性,可以使用MEL为其输入精确的数值。另外,用户还可以创建MEL程序和脚本,来完成自定义的建模、动画、动力学和渲染任务。所以数据输出时,是以MEL的文件格式输出。在Maya的脚本编辑器中写source+文件名(例:sourcetangzhuang)便可调用该文件将数据输入。这样既降低了建模难度,也节省了建模时间。 MEL作为Maya的嵌入式语言,MEL 脚本语言的程序和指令为图形用户界面化的Maya 软件的每一步的工作提供了基础。Maya对于MEL的完全开放性,使得在定制和扩展Maya 方面变得较为自由。通过利用MEL脚本语言,还可以进一步深度开发Maya制作软件,使其为 项目创建出新颖而独特的动画特效和工作环境。通过Maya软件可以比较直观的观察到结果,便于对其进行修改。利用MEL脚本语言可以提高建模效率并节省时间。 本文利用MEL来实现三维数据文件的调用,并对服装进行一些放样和命名等操作。部分实例程序源代码如下: source qunzhuang1; select yxcurve1; select-add yxcurve2; select-add yxcurve3; select-add yxcurve4; select-add yxcurve5; select-add yxcurve6; select-add yxcurve7; select-add yxcurve8; loft; rename yx1; 服装轮廓出现后,再在Maya中对服装进行细节的修改,然后利用UV编辑器对模型进行贴图,完成服装建模。 对于传统的只利用数字建模的建模方式,只能对简单的物体进行三维重建,重现的效果也只是物体的轮廓重现,而对于物体的物理特性,纹理贴图等这些细节问题无法展现。如图3所示,图3(a)为输入的花瓶图像,图3(b)为三维重构的效果。利用这种建模方法三维重构的效果只出现了花瓶的一半的轮廓,没有任何其他的信息,而对于一些物体结构比较复杂和三维重现的要求较高的物体,例如需要展现物体全貌、颜色和纹理等,利用这种方法就无法实现。 图3 花瓶的三维重建Fig.3 The vase 3D reconstraction 为检验将数字建模和物理建模相结合的基于单幅图像的唐代服饰的三维重构效果,本文以一件典型的唐代歌舞伎服式为例,此服是临自1955年6月的《美术》杂志所刊载的唐陶俑[15]。如图4所示,图4(a)为做了直线标记的无褶皱服装图片,图4(b)为得出三维数据后服装横截面的曲线,图4(c)为在Maya中的服装三维模型雏形,图4(d)为贴图后完成的服装三维模型。 图4 服装的三维重建Fig.4 3D model clothing 由上述实验可得,利用这种方法对二维唐代服饰图片进行三维重现,能够较为精确地恢复服装原有的风貌,避免了利用传统建模方式对复杂物体进行三维恢复时出现严重失真的情况,而且在建模过程中,不需要较高的建模基础,易于操作,降低了建模难度,提高了效率。 针对传统的三维重构方法在对复杂物体进行三维恢复时出现严重失真的问题,本文综合运用计算机视觉、图像处理及Maya三维建模的理论与技术,提出了一种实用的基于单幅图像的唐代服饰的三维重构方法。应用实例表明,与传统的三维重构技术相比,本文采用的数字建模和物理建模相结合的方法有效解决了传统建模方法不能协调建模时间和模型精细度的问题。 [1] 孙宇阳. 基于单幅图像的三维重建技术综述[J]. 北方工业大学学报,2011,23(1):9-13. [2] 蔡钦涛. 基于图像的三维重建技术研究[D].杭州:浙江大学,2004. [3] 朱庆生,罗大江,葛亮,等. 基于多幅图像的三维重建[J]. 计算机工程与设计,2010,31(10):2351-2353. [4] 张娟. 基于多视图几何三维重建[D].南京:南京航空大学,2012. [5] 赵璐璐,耿国华,王小凤,等. 基于未标定多幅图的三维重建算法[J]. 计算机应用,2012,32(10): 2802-2805. [6] 何理想. 基于SFS方法的单幅图像的三维原型重建的研究[D]. 沈阳:沈阳工业大学,2009. [7] 高欣健,张旭东,高亚捷,等. 基于单幅灰度图像的快速三维重建方法研究[EB/OL]. http://www.cnki.net/kcms/detail/11.2187.TH.20130813.1354.016.html,2013-08-13. [8] 彭如. 基于自阴影处理的SFS三维重建算法研究[D].南昌:南昌航空大学,2011. [9] 仇开金. 基于单幅图像明暗恢复形状算法设计[J]. 计算机与现代化,2010,6(6):58-59. [10] 吴凤和,张晓峰,施法中. 基于单幅图像数据的三维重构方法研究[J]. 中国机械工程,2007,18(17):2071-2075. [11] 高月芳,罗飞,曹建忠. 由单幅二维灰度图像重构物体表面形状[J]. 计算机应用研究,2007,24(8):195-197. [12] HSIEH Jun-wei,LIAO MARK Hong-yuan, KO Ming-tat, et al.Wavelet-based shape from shading[J]. Graphical Models and Image Processing,1995,57(4):1077-3169. [13] ELHABIAN S, MOSTAFA E, RARA H, et al. Non-Lamebrain model-based facial shape recovery from single image under unknown general illumination[C]. Conference on Computer and Robot Vision,Toronto:IEEE,2012:252-259. [14] 秦小文,温志芳,乔维维. 基于OpenCV的图像处理[J]. 电子测试,2011,7(7):39-41. [15] 黄辉. 中国历代服制服式[M].南昌:江西美术出版社,2011:114-164. (编 辑曹大刚) Three-dimensional reconstruction of the Tang Dynasty costumes based on single images ZHU Yao-lin1, LIU Ya-qi1, YANG Yu-jiao2 (1.College of Electronic & Information, Xi′an Polytechnic University, XI′an 710048, China; 2.College of Architecture,Chang′an University, XI′an 710061, China) To overcome the limitations of traditional modeling methods, considering the specific feature of modeling of the Tang Dynasty costumes, this paper proposes a method based on single images of three-dimensional reconstruction of the Tang Dynasty costumes, combining digital modeling and physical modeling. Due to the long history of the Tang Dynasty, clothing artifacts left down are mainly the basic two-dimensional watercolor, pottery, etc., the information that can be extracted is limited, so this, research uses using OpenCV automatic scanning technology and the characteristics of the approximate oval cross-section calculated in accordance with clothing digital model of the clothing generally, and the digital model only shows the general outline of clothing, can not render realistic three-dimensional apparel, then the data are input in the Maya 3D modeling software and then carried out the digital model changes and add dynamics to its texture. Combining digital modeling and physical modeling improves the modeling efficiency, shortens modeling time, and reduces the distortion of the model as well. single image; Tang Dynasty costumes; automatically scan; OpenCV; Maya; MEL 2014-03-16 陕西省科技厅国际合作基金资助项目( 2013KW04-02);西安社科规划基金课题(14L06) 朱耀麟,副教授,博士,从事数字媒体及三维可视化技术研究。 TP391 :ADOI:10.16152/j.cnki.xdxbzr.2015-03-0073 在Maya中进行三维重现
4 实 例
5 结 语