2. 常州市图形图像与骨科植入物数字化技术重点实验室, 江苏 常州 213022
2. Changzhou Key Laboratory of Digital Technology on Graphics and Orthopaedic Implants, Changzhou Jiangsu 213022, China
浮雕是指在物体表面(平面或曲面上)雕刻出凹凸起伏形象的一种造型方法,是介于雕塑和绘画之间的艺术表现形式。由于具有很强的艺术表现力,浮雕被应用在生活的各个方面,如场馆墙壁、家居、硬币、装饰等[1]。随着计算机技术的飞速发展,如何利用计算机软件或算法来协助实现浮雕模型的设计,也受到学术界广泛关注。近年来,尽管三维造型、计算机驱动雕刻机和三维打印技术已经有了一定的发展,但是浮雕模型设计大部分仍由艺术家来完成[2],如果存在一种实时交互的浮雕模型构建软件或算法,必定会大大提高艺术家们的创作效率。近些年,在计算机图形学领域提出了许多自动生成曲面或平面浮雕的算法。Cignoni等[3]指出了将三维模型看作选定视角下的高度场,浮雕生成实质上就是如何对高度场进行合理的压缩以满足浮雕的特性;Weyrich等[4]对梯度采用对数函数进行非线性压缩,并提出将梯度值分成多个频率来处理的方法;何会珍等[2]为了将三维物体紧密地贴合在曲面上,首先分别提取三维模型及其所依附曲面的高度场,并把它们转换为各自的梯度场,将压缩后的物体梯度场与不压缩的曲面梯度场进行矢量运算,得到曲面浮雕的梯度场,最后通过积分求解得到曲面浮雕的高度场;李博等[5]采用Canny算子在梯度域定位内外轮廓,获得连续梯度域,并压缩梯度幅值实现形状压缩,通过双边滤波算子来保持和增强浮雕细节,最终求解积分函数恢复曲面浮雕。以上这些算法虽然能在一定程度上生成保持细节的曲面浮雕,但是每次生成浮雕效果都需要求解一次大型稀疏矩阵方程,因此类似工作均很难实时呈现浮雕生成效果,难以满足艺术家们及时调整不良浮雕效果的需求。
李博等[1]基于三维模型拉普拉斯分解原理将三角网格分解为光顺后的基础网格、拉普拉斯算子及更高次算子,并对不同部分进行压缩,以获得具有细节保持效果的浮雕,该方法不需要求解大型稀疏方程;周世哲等[6]基于GPU图形硬件提出了一种实时的浮雕算法。以上两项工作虽然都提高了平面浮雕生成速度,但并未涉及浮雕网格在目标模型上拼接的实时交互过程,对于艺术家来说,单层网格的浮雕模型很难用于实际的加工制造,只有浮雕网格和目标模型的完美结合才是他们创作的目标。
刘胜兰等[7]提出了一种浮雕曲面粘贴算法,首先求解基网格的参数化平面,利用重心坐标建立2.5D浮雕网格顶点和该参数化平面三角形对应,再将对应关系映射到基网格的三维空间上;该方法效果依赖于基网格的参数结果,不好的参数化结果会导致粘贴后浮雕在三维空间上严重变形。本文提出的基于网格求交的浮雕纹理映射算法是直接在基网格的三维空间上计算浮雕深度图顶点和基网格表面顶点的对应,因此可避免不好的参数化结果导致的浮雕变形;另外,在三维空间上操作比在参数化平面上操作更加直观清晰,更容易得到用户需要的浮雕效果。
Ji等在文献[8]中采用法向图编辑的方法来生成浮雕,通过图像编辑工具将来自不同模型的法向图进行叠加,再通过求解方程恢复叠加后模型的高度场,整个过程都在法向图空间进行操作;而本文提出的纹理映射算法是在三维空间进行操作,交互更简单自然,浮雕效果修改更方便。Ji等在文献[9]中通过提取单个输入场景高度场生成基本浮雕,并借助法向图增强浮雕细节,通过GPU实现生成平面浅浮雕;而本文研究一种实时交互的浮雕纹理模型的构建方法,输入生成浮雕的源模型(或源图像)和一个目标模型,用户得到的最终浮雕纹理模型是由源模型(或源图像)生成的浮雕深度图贴在目标模型表面上形成的,并可通过三维空间上的移动、旋转、缩放等交互操作改变浮雕生成效果。本文提出的基于网格求交的浮雕纹理映射算法,使得目标模型上可以实时显示浮雕效果,满足艺术家实时创作的需求,实验效果表明,本文方法能快速构建凸浮雕、凹浮雕、多浮雕等效果,生成的浮雕模型可直接用于加工制造。
1 方法概述本文方法流程如图 1所示。总体分为两大步骤:
1) 生成表面连续的浮雕深度图。用输入的3D源模型或2D源图像生成初始深度图,通过梯度域的压缩和过滤,去除初始深度图中垂直阶跃,最后通过求解线性方程重建出新的浮雕深度图。
2) 实时交互及浮雕模型构建。本文提出基于网格求交的浮雕纹理映射算法,将浮雕深度图实时映射到目标模型表面,并生成浮雕纹理效果,通过移动、旋转、缩放等交互可以修改浮雕效果,交互结束后对目标模型进行网格重建,输出带浮雕纹理的三维模型,简称为浮雕纹理模型。
2 整体连续的浮雕深度图生成 2.1 初始深度图生成为了在交互过程中在目标模型O表面上能实时呈现浮雕效果,本文把浮雕网格当成深度图来处理,这有利于降低交互过程中的计算量。浮雕生成来源可以是2D源图像或3D源模型,以下围绕不同来源分别阐述生成初始浮雕深度图的方法。
当输入的是一张RGB图像时,借鉴Photoshop中彩色图转灰度图的一种方法[10]:先将原始图像转换为Lab颜色模式,然后在Lab模式下去色,使a、b通道值均为零,并依此生成一个RGB对应灰阶,最后再根据该灰阶转换到灰度空间,该灰度空间即z0(x, y)∈[0, 1]。具体计算公式如下,实验证明,该方法对图像颜色较敏感,对于亮度适中的图像,生成深度图凹凸效果明显。
$\begin{array}{l} Gray\left( p \right) = {\left( {r{{\left( p \right)}^\gamma } \times wr + g{{\left( p \right)}^\gamma } \times wg + b{{\left( p \right)}^\gamma } \times wb} \right)^{1/\gamma }}\\ {z_0}\left( p \right) = 1 - Gray\left( p \right)/255.0 \end{array}$ |
其中:p=(x, y)(0≤x<Width, 0≤y<Height,Width和Heigth表示深度图的宽和高,用顶点个数表示)表示深度图上点的二维坐标;参数γ决定灰度图上像素间整体差异性,γ越小,差异性越大,更能恢复图像上浮雕细节;参数wr、wg和wb表示RGB三个通道各自对应权值。根据实验分析,能较好恢复浮雕效果的参数取值为:γ=0.22,wr=0.2973,wg=0.6274,wb=0.0753。
当输入为一个完整三维模型时,借助Opengl深度缓存区来恢复初始浮雕深度图。当Opengl在渲染三维模型时,深度缓存区记录当前视图每个像素的深度值。Opengl只会渲染当前视角下三维模型前面的顶点,被遮挡的顶点会被忽略,因此深度缓存区的深度值有序排列后,正是z0(x, y)。
2.2 梯度域优化处理及深度图重建前面生成的初始深度图仍存在一些缺陷,如真实浮雕区域边界存在垂直阶跃、区域内部起伏较大等,需要对初始深度图作进一步优化处理,才能生成整体连续的浮雕深度图zrelief(x, y)。参考文献[4]的方法,先将初始深度图转换成初始梯度图Grad0(x, y);再对初始梯度图进行过滤和压缩,得到新的梯度图Gradnew(x, y)。过滤是为了去除初始深度图中垂直阶跃,压缩是为了让真实浮雕区域过渡更加平坦自然。
$\left\{ {\begin{array}{*{20}{l}} {Gra{d_0}\left( {x,y} \right) = \nabla {z_0}\left( {x,y} \right) = \left[ \begin{array}{l} {z_0}\left( {x,y} \right) - {z_0}\left( {x - 1,y} \right)\\ {z_0}\left( {x,y} \right) - {z_0}\left( {x,y - 1} \right) \end{array} \right]}\\ {Gra{d_{{\rm{new}}}}{\rm{ = }}\left\{ {\begin{array}{*{20}{c}} {\frac{{{\rm{lg}}\left( {1 + \alpha \times Gra{d_0}} \right)}}{\alpha },0 \le \left\| {Gra{d_0}} \right\| < \delta }\\ {0\begin{array}{*{20}{c}} {} & {} & {} & {\begin{array}{*{20}{c}} {} & {} & {\delta \le \left\| {Gra{d_0}} \right\|} & {} \end{array}} \end{array}} \end{array}} \right.} \end{array}} \right.$ | (1) |
其中:参数α表示梯度图压缩程度,值越大,最终重建的浮雕越扁平;函数(1) 通过参数δ的设定来过滤掉垂直阶跃,δ一般取较大的正数,如1000000。
接着,通过求解以下线性方程来从新梯度图中重建出新深度图znew(x, y):
${\nabla ^2}{z_{{\rm{new}}}}\left( {x,y} \right) = {\rm{div}}\begin{array}{*{20}{c}} {Gra{d_{{\rm{new}}}}\left( {x,y} \right)} & {} \end{array}$ |
该线性方程的几何意义是:重建前后梯度图的散度尽量保持一致,才能较好恢复浮雕深度图细节。
进一步,重建出的深度图还可以通过调整线性函数(2) 来丰富浮雕深度图[11]的效果,以实现浮雕深度图的厚度调整和镜像。
${z_{{\rm{relief}}}}\left( {x,y} \right) = \lambda {z_{{\rm{new}}}}\left( {x,y} \right);\lambda \in {\bf{R}}$ | (2) |
其中:参数λ为深度图拉伸因子,当λ<0时,会得到镜像之后的浮雕深度图;0≤x<Width, 0≤y<Height。
3 实时交互及浮雕模型构建本文的目标是将优化后的浮雕深度图zrelief(x, y)贴在目标模型O表面,并通过用户交互生成带浮雕纹理[12]的模型。
3.1 基于网格求交的浮雕纹理映射算法在实时交互的过程中,要实现浮雕在目标模型表面游走的效果,需要将浮雕深度图zrelief(dx, dy)上每一个二维顶点映射到目标模型表面某一区域(称为浮雕显示区域RDR)内的三维顶点,这个过程称为浮雕纹理映射,用函数f:R2→R3表示。实时交互生成浮雕纹理网格Mf计算公式如下:
${M_f} = {S_f} + {z_{{\rm{relief}}}}{N_f}$ | (3) |
如图 2(a)所示,深色矩形区域是浮雕纹理网格Mf,其在目标模型表面的投影区域是RDR;深度图zrelief(dx, dy)上的每个点都可以通过函数f:(dx, dy)→(x, y, z)唯一映射到RDR上的一个三维点,Sf={si(dx, dy)}是所有三维点坐标构成集合,Nf={ni(dx, dy)}是所有三维点的法线构成集合,其中0≤i<Width×Height。如图 2(b)所示空心圆点为RDR上三维点,将这些三维点在法线方向上延伸相应二维浮雕深度zrelief距离,就构成浮雕纹理网格Mf的顶点,如图 2(c)所示。
为了实现映射函数的效果,本文采用方法分两步:网格求交和均匀点采样。如图 2(a)所示,假如已知RDR某一个三维点si,通过其局部坐标系Oxiyizi可以构建求交平面YPlanei(si, xi)或XPlanei(si, yi),借助这些平面与目标模型求交,就可以得到一系列相交曲线,如图 2(a)平面与网格相交曲线所示。如图 2(c)所示,假设其中一条相交曲线为L,设起始采样点为s0,从s0出发每间隔d距离采样一个点,采样点如图 2(c)曲线L上的空心圆点所示,直到达到采样总数,这些采样点就是f映射的目标三维点。其中,d表示两采样点在模型表面的测地距离,初始值为1.0/max(Height, Width),可通过缩放操作进行修改,详见3.2节。由于RDR所需的Width×Height个采样点分布在不同的行和列,本文采用RDR中心点s0向外扩展求交的方式,如图 2(b)所示,先沿局部+y和-y方向得到求交路径,通过点采样得到s1s2…sn, s-1s-2…s-n,再以s1s2…sn, s-1s-2…s-n作为求交路径起始点,沿着+x和-x方向分别求交、点采样,直到获得Width×Height个采样点。在某一求交路径上,为了提高求交速度,只用当前面片的一邻域面片参与下一次求交计算,而不是遍历所有面片。
3.2 交互方式及目标模型网格重建本文提供三种浮雕交互操作:移动、旋转、缩放, 如图 3所示。交互初始状态和结束状态对浮雕纹理网格Mf采用高分辨显示,方便查看实际效果,如图 3(a), (c), (d), (e)所示;而为了在交互过程中保证场景渲染实时性,对浮雕纹理网格采样低分辨率显示,如图 3(b)所示,因为交互目的是为了确定参数,可以容忍低分率渲染效果。因为先前的映射函数f:(dx, dy)→(x, y, z)已经建立了二维点到三维点的映射,所以要降低三维点的分辨率,只要降低二维深度图的分辨率即可。
如图 2(b)、图 3(b)所示,移动操作改变的是浮雕纹理网格中心点s0的位置,通过屏幕点发射线与目标模型求交得到s0坐标以确定求交的起点;旋转操作改变的是以s0为原点的局部坐标系的z轴为旋转轴的旋转角度以确定求交的方向;如图 2(c)所示,缩放改变的是采样点间距d,间距越大,浮雕就会从中心点越往外扩散,从而放大浮雕纹理网格。
交互结束后需要将浮雕纹理网格真实地贴在目标模型上,对目标模型进行网格重建。重建步骤分两步:1) 删除RDR内所有三维点所在面片,将浮雕纹理网格Mf作为填补网格;2) 将浮雕纹理网格边界和目标模型空洞边界依次进行三角形连接,坚持顶点邻近和三角形封闭原则。
4 实验结果与分析以下将通过实验来验证本文算法的有效性,并讨论不同参数对曲面浮雕的影响。实验在一台CPU为Intel Core i5-4210H 2.90 GHz,内存为4 GB,显卡是NVIDIA GeForce GTX 850M的PC上进行。实验过程为:选取3D源模型或者2D源图像并生成优化后的浮雕深度图,然后使用该浮雕深度图与目标模型进行交互,在交互完毕后即可生成最终浮雕纹理模型。实验分四部分进行,分别讨论本文算法中参数对生成的浮雕纹理模型的影响、交互效果、算法实时性以及3D打印效果。
对式(1) 中压缩因子α进行测试,控制λ=1不变。图 4所示将松鼠贴在茶壶表面,即输入3D源模型是松鼠,目标模型是茶壶。实验表明,参数α反映了松鼠在茶壶表面的整体梯度大小。对于同一松鼠初始深度图,转换成梯度图也是一致的,但随着α的增大,对原始梯度图压缩就越大,即梯度值会越小,则从压缩后的梯度图重建得到的新深度图整体就越平坦。由图 4可以看出,α对浮雕模型的压缩并不是线性的,是对整体梯度的压缩,进而使浮雕深度减小。
对式(2) 中深度拉伸因子λ进行测试,控制α=1不变。如图 5所示将兔子Bunny贴在杯子表面,输入3D源模型是兔子,目标模型是杯子。由图 5可以看出,|λ|越大,兔子浮雕在杯子法线方向拉伸幅度就越大,并呈线性拉伸趋势;当λ为负数,就可以生成凹浮雕纹理模型。和压缩因子α不同的是,λ是对深度图直接缩放,因此更容易产生浮雕拉伸效果,但λ过大也容易导致浮雕变形太大,效果不好,如图 5(d)中λ=2时兔子身体会过度凸起。
控制α=1,λ=1不变,对移动、旋转、缩放等交互操作进行测试,结果如图 6所示。图 6第一行的输入源模型是Armadillo,生成优化的浮雕深度图之后,在目标模型上进行交互操作;目标模型是带三个角曲面的螺旋物体,三个曲面朝向各不相同,使用本文提出的基于网格求交的浮雕纹理映射方法,可以很容易地将Armadillo浮雕深度图分别贴在三个角曲面上,并且通过交互,三个Armadillo都朝向目标模型空洞。图 6第二行的输入源模型是狮子,目标模型是一个笔筒,先将放大的狮子浮雕贴在笔筒左侧,再将缩小后的狮子贴在笔筒右侧,细节的放大效果如图 6(d)所示。经过调研,并未看到类似将多个浮雕同时贴在一个模型上的工作,而文献[2]基于梯度场合成再重建的曲面浮雕生成方法,由于生成浮雕朝向、大小不可控等因素,也很难得到精准的浮雕效果。
本文也测试了输入源图像的浮雕构建效果,如图 7所示,输入的是一张山水图像,目标模型是一个相框模型,通过图像生成浮雕深度图后贴在相框上,生成的浮雕山水纹理模型(图 7(b))效果逼真,可清楚看到水纹效果(图 7(c))。
人眼视觉残留的相关研究表明,物体在快速运动时, 当人眼所看到的影像消失后,人眼仍能继续保留其影像约1/30≈0.033 s左右,也就是说,如果浮雕交互过程出现卡顿并被人眼识别到,说明算法中浮雕纹理网格计算超过0.033 s。为了验证多大规模的算法输入会造成渲染的卡顿,本文使用不同分辨率的2D源图像作为浮雕输入对象,对浮雕纹理网格计算耗时进行统计,结果如表 1所示。其中,目标模型是Bunny模型,约3.3万个顶点,6.6万个面片,面片密集并规则,能保证足够的网格求交计算量。从统计数据可看出,输入分辨率约为200×200的图像时,算法计算时间到达不卡顿的极限。也就是说,当计算超过4万个采样点的浮雕纹理网格,就有可能出现卡顿。但是,为了进一步提高算法输入规模,可以在交互过程中只采用1/10的顶点计算和渲染,因此,本文方法理论上可处理2000×2000的浮雕网格计算。
采用本文方法重建的浮雕纹理模型无需经过其他后处理,便可以直接应用于3D打印,图 8所示为本文方法构建的浮雕模型打印效果。实验采用桌面级FDM 3D打印机,打印高度均约7 cm。由图 8可见,虽打印模型整体高度不大,但浮雕区域仍较好地保持了源模型的细节特征,说明本文方法生成的浮雕模型能较好适应3D打印,具有一定应用潜力。
本文研究了一种实时交互的浮雕纹理模型构建方法,通过梯度域优化和重建方法将输入的3D源模型或2D源图像转换为整体连续的浮雕深度图,借助基于网格求交的纹理映射算法实现了浮雕深度图在目标模型上的实时显示,通过移动、旋转、缩放等交互操作修改浮雕效果,最终对目标模型进行网格重建得到浮雕纹理模型。该方法通过一定的人工交互,可以较容易地在一个目标模型上生成多浮雕、凹浮雕、凸浮雕等效果,具有较强的实用价值。但是其仍存在不足地方:本文生成初始深度图的方法是通过Opengl深度缓存值或灰度公式计算得到的,但Opengl深度缓存值并不能完全表现三维模型的表面特征,而灰度公式也只是粗略生成深度图,因此优化得到的浮雕深度图的真实性有一定欠缺。所以,在今后的工作中可以考虑利用源模型的真实三维数据或源图像的梯度变化信息来提高生成浮雕的真实性。由于本文的浮雕纹理映射算法是基于网格求交,对目标模型网格质量依赖性较大,在较破碎的网格上映射效果具有一定误差,这也有待进一步研究改进。
[1] | 李博, 刘胜兰, 张丽艳, 等. 基于三维模型拉普拉斯分解的浮雕生成算法[J]. 计算机集成制造系统, 2011, 17(5): 946-951. (LI B, LIU S L, ZHANG L Y, et al. Bas-relief generation algorithm based on Laplace operator decomposition of 3D model[J]. Computer Integrated Manufacturing Systems, 2011, 17(5): 946-951.) |
[2] | 何会珍, 杨勋年. 曲面浮雕生成[J]. 计算机辅助设计与图形学学报, 2010, 22(7): 1132-1137. (HE H Z, YANG X N. Relief generation on surfaces[J]. Journal of Computer-Aided Design & Computer Graphics, 2010, 22(7): 1132-1137.) |
[3] | CIGNONI P, MONTANI C, SCOPIGNO R. Computer-assisted generation of bas-and high-reliefs[J]. Journal of Graphics Tools, 1997, 2(3): 15-28. DOI:10.1080/10867651.1997.10487476 |
[4] | WEYRICH T, DENG J, BARNES C, et al. Digital bas-relief from 3D scenes[C]//SIGGRAPH' 07:Proceedings of ACM SIGGRAPH 2007. New York:ACM, 2007:Article No. 32. |
[5] | 李博, 刘胜兰, 张丽艳. 细节保持的曲面浅浮雕算法[J]. 计算机辅助设计与图形学学报, 2012, 24(6): 799-807. (LI B, LIU S L, ZHANG L Y. Detail-preserving bas-relief on surface from 3D scene[J]. Journal of Computer-Aided Design & Computer Graphics, 2012, 24(6): 799-807.) |
[6] | 周世哲, 刘利刚. 实时数字浮雕建模[J]. 计算机辅助设计与图形学学报, 2010, 22(3): 434-439. (ZHOU S Z, LIU L G. Realtime digital bas-relief modeling[J]. Journal of Computer-Aided Design & Computer Graphics, 2010, 22(3): 434-439.) |
[7] | 刘胜兰, 汤正翔, 李博, 等. 基于法矢调整的浮雕曲面粘贴算法[J]. 计算机应用, 2011, 31(1): 33-36. (LIU S L, TANG Z X, LI B, et al. Relief pasting algorithm based on normal vector adjustment[J]. Journal of Computer Applications, 2011, 31(1): 33-36.) |
[8] | JI Z, MA W, SUN X. Bas-relief modeling from normal images with intuitive styles[J]. IEEE Transactions on Visualization and Computer Graphics, 2014, 20(5): 675-685. DOI:10.1109/TVCG.2013.267 |
[9] | JI Z, SUN X, LI S, et al. Real-time bas-relief generation from depth-and-normal maps on GPU[J]. Computer Graphics Forum, 2014, 33(5): 75-83. DOI:10.1111/cgf.12433 |
[10] | 张琪, 张志明, 冯坤, 等. 一种运用Photoshop实现彩色图像灰度化方法[J]. 计算机与数字工程, 2010, 38(12): 124-127. (ZHANG Q, ZHANG Z M, FENG K, et al. Use photoshop to achieve a kind of gray-scale method for color image[J]. Computer & Digital Engineering, 2010, 38(12): 124-127. DOI:10.3969/j.issn.1672-9722.2010.12.034) |
[11] | 赵沁平. 虚拟现实综述[J]. 中国科:信息科学, 2009, 39(1): 2-46. (ZHAO Q P. Virtual reality review[J]. Science China:Information Sciences, 2009, 39(1): 2-46.) |
[12] | 荣国栋, 孟详旭. 基于浮雕纹理贴图的复杂模型快速显示[J]. 系统仿真学报, 2001, 13(S2): 55-57. (RONG G D, MENG X X. A relief-texture-mapping based fast display method of complex models[J]. Journal of System Simulation, 2001, 13(S2): 55-57.) |