【关键词】剪纸图像 三维图像 OpenGL
1 引言
剪纸,又称刻纸,窗花或剪画等。区别
在于创作,有的用剪刀,有的用刻刀,虽然使
用的工具不同,但创作出来的艺术作品基本相
同。事实上,剪镂、刀刻的痕迹有一定的差异,
且用的技法也有难易之分,但是这些作品都是
一种镂空艺术,其在视觉上给人以夸张、透空、
抽象的感觉,其载体可以是纸张、金银箔、木
片、竹片、树叶、树皮、布、皮、革等片状材
料。随着计算机的出现剪纸艺术开始在新的领
域不断发展,尤其是动漫、广告、影视等行业,
而三维动画的出现使剪纸图像得到了进一步的
发展。如果将获得的剪纸图像快速转换成三维
图形,并应用于动漫等各个行业中,可以为这
些行业提供丰富的素材,减少一定的设计和制
作时间、提高效率是非常有意义的。
2 三维剪纸图形的生成
2.1 图像预处理
对于现实中的手工剪纸艺术作品来说,
要想变为计算机可存储、识别、处理的数字图
像,首先要把图像采集存储到计算机中,本文
所研究的将平面剪纸图像转化为空间三维剪纸
图形,需要使用到原始的数字图像,这些图像
可以通过照相机、扫描仪等物理设备来获取,
使其成为的数字图像,为后续进一步处理。
由于在采集图像过程中会产生一些不可
避免的噪声,如果直接使用图像去获取我们所
文/孙全亮1 张晓朋2 胡世洋1
剪纸是中国历史悠久的民间
传统艺术之一,其主观意象性强,
造型、风格独特。随着动漫产业
不断发展,剪纸艺术为动漫等行
业提供了很好的素材, 以剪纸为
素材的动画作品,其实际应用和
视觉效果深受人们广泛欢迎。当
前动漫设计向三维发展,将现有
的剪纸图像自动生成三维空间剪
纸图形,具有重要的研究意义,
可以为今后三维动漫设计提供素
材,提高工作效率。
摘 要
需要的信息,那么会受到噪声的干扰,影响处
理结果,因此,接下来需要进一步去噪处理。
图像裁剪的一个重要步骤是获取边缘,
它是后续剪纸图像向空间剪纸图形转化过程的
重要环节,决定着空间剪纸图形的重绘的形状,
有利于后续的边界坐标的线性追踪,如图2 所
示是对图1 二值图像,进行边缘提取得到的单
像素图像边缘。
2.2 OpenGL求值器及空间曲面的裁剪
复杂几何形状的分割,可以拆分为独立简
单的基本图元( 如:点、线、多边形,多面体等),
那么不同的几何形状也都可以再分成基本图
元。为了使做出复杂且光滑的曲线、曲面或几
何体,往往需要使用大量的基本图元来近似拟
合,这种做法虽然可以较好的实现复杂物体的
构建,但常常需要大量的计算时间和存储空间,
影响处理速度,且不够精确,对硬件要求也相
当高。虽然OpengGL 的辅助库中已经集成了
一些三维空间几何体的绘制命令,但在实际应
用中是远远不够用的。在实际生活中,我们可
以发现许多光滑的曲线和曲面物体具有这样的
特征,可以利用直线或网格线来简单描述,通
过增加少量的控制点对其控制可以实现曲线或
曲面的绘制,在科学计算中常常用到各种各样
的样条和样条曲面,如B 样条、曲线和
曲面就属于这一类,这些都在OpengGL 的求
值器命令中完美的体现出来。使用OpenGL 求
值器可以轻松地绘制曲面的边框图以及带有阴
影和光照的曲面。
贝塞尔()曲面
二维求值器,该曲面的计算类似于一维
求职器的情形,不同的是,二维求值器要使用
两个参数,即u 和v。贝塞尔曲面是双参数矢
量函数,即, 曲面
生成采用控制点描述如式(1):
(1)
其中基函数Bi 与Bj 的多项式表达式完全
与一维相同。Pij 为m×n 个控制点,可以表示
为物体的颜色、法向量、顶点或纹理坐标。
NURBS 曲线和NURBS 曲面在传统的绘
图图领域是不存在的,是为了使用计算机更好
的进行3D 建模而专门建立,即在3D 建模的
内部空间,用曲线和曲面来表现轮廓和外形。
OpenGL 的辅助库函数提供了NUEBS 接
口,它是建立在求值器基础上的一种高层函数
库。使用NURBS 绘制曲线和曲面的方法与使
用大量的基本图元来近拟合比较,不但简单、
效率高,而且也可以方便的处理光照模型和纹
●基金项目:本文系贺州学院2013 年度校级科研项目:“基于剪纸图像的剪纸设计研究”(编号:2013ZXZK14);贺州学院2013 年度项目:“基
于CDIO 的Photoshop 平面设计专业应用型人才培养模式研究”(编号:hzxyjg201342);贺州学院2014 年度科研项目( 编号:2014YBZK09) 的
研究成果。
图1:二值化的剪纸纹样图像
图2:提取边缘的剪纸纹样图像
96 • 电子技术与软件工程 Electronic Technology & Software Engineering
图像与多媒体技术 • Image & Multimedia Technology
理映射。
NURBS 编程的基本思想可简单描述如
下:
(1)对NURBS 曲面作光照处理,首先
要计算曲面的法向量,可调用函数自动生成,
也可自行计算。
(2)创建NURBS 对象的指针并初始化。
调用函数,theNurb=gluNewNurbsRenderer(),
创建NURBS 曲线曲面。
(3) NURBS 对象属性用户可以根据具
体需要进行相关的设置。
(4) 在glPushMatrix() 函数之后,调用
BeginCurve(),开始绘制曲线和曲面。
(5) 在glPushMatrix() 函数之后,调用
gluNurbsCurve(),生成和绘制NURBS 曲线和
曲面。
(6)在gluEndCurve() 或gluEndSurface(),
结束绘制曲线和曲面,调用glPopMatrix() 函
数结束所以的绘制。
当对剪纸图像边缘进行空间曲面图形裁
剪时,根据图形的取舍决定裁剪的方向,可以
利用glBeginTrim()、gluPwlCurve(theNurb…)、
glEndTrim() 函数来实现:如图3 所示边缘的
裁剪。
对于NURBS 函数库中定义的裁剪命令,
为保证裁剪的正确性,首先要确定图像边缘曲
线必须是闭合回路,且应当考虑裁剪图像边缘
曲线的方向性。如图3 所示灰色部分为保留区,
白色部分为镂空区,曲线A为逆时针闭合回路,
是NURBS 曲面外围边缘曲线;曲线B,C 为
图像内部边缘裁剪曲线。对于一个单连通区域
且以逆时针方向裁剪时,裁剪曲面内部保留( 如
图3:D 闭合曲线回路);以顺时针方向对图
像边缘裁剪的曲线内部被删除( 如图3:B 曲
线闭合回路)。
NURBS 裁剪曲线有两种类型,第一种:
即分段线性曲线,由gluPwlCurve() 函数调用,
它是以绘制的点为定点, 相邻两点之间以直线
连接,由计算机完成;第二种:即NURBS曲线,
是由gluNurbsCurve() 函数调用绘制,且曲线
必须位于参数空间(u,v) 的单位正方形内部,
NURBS 裁剪曲线常用的类型为GLU_MAP1_
TRIM2,其次为GLU_MAP1_TRIM3,此时坐
标齐次化为。