葛照君
(杭州师范大学钱江学院,浙江 杭州 310012)
随着计算机图形学的发展,非真实感绘制发展迅速,其在智能模拟、艺术领域、社会领域、娱乐领域等方面有着广泛的应用前景。传统水彩画作为以“水”和“彩”为特点的画种,水和色彩构成了水彩画语言的基础,借助水和色彩的相互作用,使画面产生独特的具有活泼的、偶然的、诗一般的艺术效果和情感意境。由传统水彩画的特征及绘制方法不难总结出非真实感水彩画的绘制目标:从艺术角度需要模拟出水彩画柔和、光亮等艺术特征,从绘制角度来看需要绘制出边缘的暗色化、颜料自由扩散、流动图案以及不同的纸张纹理产生的不同绘制效果。为了模拟出更好的水彩画效果,本文提出一种基于Canny边缘暗色化的水彩画模拟绘制方法。利用八邻域加权平均扩散算法来实现水彩颜料的自由扩散效果,利用形态学运算来实现水和色彩相互作用产生的流动图案,最后利用基于像素级的融合算法来实现纸张的纹理效果。水彩画模拟绘制流程图如图1所示。
图1 水彩画模拟绘制流程图Fig.1 Flow chart for simulation drawing of watercolor paintings
边缘暗色化是水彩画模拟绘制过程中一个非常重要的环节,可实现边缘颜色比内部颜色要深的特征效果。实现这一特征效果最简单的思路是先检测出图像的边缘,然后通过改变边缘线的颜色值达到边缘的暗色化。这个处理过程主要包括两项工作:一是精确的边缘检测,这个是实现边缘暗色化的基础;二是边缘暗色化处理。
图像的边缘检测算法有很多,如Robert,Sobel,Laplace,Prewitt,Canny等算子。Canny边缘检测将原图与高斯平滑滤波后得到图像进行卷积,计算平滑过的图像的一阶导数,可以得到图像的梯度值与梯度方向。通过高斯滤波平滑后产生的图像通常边缘上会有所扩散,通常使用非最大抑制来降低这种扩散对边缘检测效果的影响。图2为各类经典边缘检测的效果图。
图2 各经典边缘检测效果图Fig.2 Effect pictures of various classical edge detections
从效果图上看,各种边缘检测算法基本上都能检测出比较准确的边缘。Sobel算子和Prewitt算子的效果轮廓较为清楚,但是效果图中间噪声比较明显。对于非真实感水彩画绘制的边缘暗色化,只需要对图像大色块中的边缘进行暗色;而对于同一大色块中略微差别的边缘无需进行暗色化。因此,尽管这两个算法效果较好,但是,不是太适合水彩画的边缘暗色化。Robert交叉算子丢失部分细节信息,Laplace算子检测出来的效果比较模糊而且噪声偏多,因此,这两种算法也不适合水彩画的边缘暗色化。Canny算子效果适中,既能检测出比较完整的边缘信息,而且除了边缘之外没有多于的噪声;因此,本文中最后选择Canny算子最为水彩绘绘制的边缘检测算法。
在此通过Canny边缘检测完成对图像的边缘检测操作。所谓边缘暗色化就是对已经检测到的边缘像素的颜色值进行暗色化操作。对边缘像素值做特定的改变就可以得到暗色化的效果。本文选择在RGB颜色模型中进行暗色化效果的操作。在RGB空间模型中,每个像素的颜色值都是由R,G,B值来表示,三个值的范围为0~255,并且颜色从暗到亮依次变化。因此必须对三个分量分别进行处理本文中在边缘检测的基础上对图像的像素点一一进行判断,如果该像素点为边缘点,则对其进行亮度调暗操作,即对RGB三个分量值都进行同一参数值的调暗。实验证明,参数值为-40时的亮度调整产生较好的暗色化效果,效果如图3所示。
图3 边缘暗色化效果图Fig.3 Effect pictures of edge darkening
颜料颗粒自由扩散作为水彩画模拟过程中重要环节之一,是指在绘制过程中,颜料在水的作用下在纸张上的一些细微的自由扩散。本文采取一种基于图像处理的八邻域内的平均扩散算法,实现中心点向八邻域内随机产生的扩散点的自由扩散,扩散范围如图4所示。如果把随机生成的扩散方向处的像素值直接替换成中心点的像素值,将会使整个图片的颜色发生很大的变化,最后处理出来的图片将会严重的失真。为使扩散效果柔和、逼真,本文利用相邻像素平均色差的思想,即在利用随机函数产生出中心点的扩散方向后,该扩散点的颜色值不是单纯的由中心点的颜色值取代,而是由该点原来的颜色值加上中心点与该点原来颜色值色差的平均值来定。扩散的效果如图5所示。
图4 八邻域扩散范围Fig.4 Scope of eight-neighborhood diffusion
图5 八邻域内自由扩散效果图Fig.5 Effect pictures of eight-neighborhood free diffusion
流动图案的产生是指在水彩画绘制的过程中,颜料随水流动的方向产生的羽状效果。为了实现图像流动的效果,本文应用彩色形态学中的一些理论、原理来实现。实验过程中发现,结构元素的大小直接膨胀处理后的细节保留程度和颜色保留度与结构元素大小有关,结构元素越大,越容易破环原图的颜色和细节。图6a)、图6b)中分别列出了使用3×3菱形、5×5菱形结构元素进行膨胀运算后的效果图。从效果图中可以看出,在RGB空间中易于使用小的结构元素进行膨胀处理,因此,本文选择结构元素的尺寸大小为3×3。选定好结构元素以后,本文比较几种经典常用的基本的结构元素。最后根据效果图得出3×3结构元素尺寸中菱形结构元素具有最好的实现效果。
图6 膨胀效果图Fig.6 Pictures of expansion effect
传统的水彩画一般在宣纸上绘制。这类纸张表面粗糙、吸附能力强,因此纸张纹理的加入会使水彩画的模拟具有更加逼真的效果。本文采用图像融合的思想来实现纸张纹理效果的加入和彩色图片在纸张上绘制的效果。
本文中用到的融合原理图如图7所示。
图7 融合原理图Fig.7 Diagram of fusion principle
设B(x,y)表示B层的像素值,F(x,y)表示F层的像素值,R(x,y)表示最后融合得到的新像素值,其中x,y∈N,在空域中采用点处理的方式对每个像素进行运算,选择128×128的融合区域进行操作。在图像融合处理过程中,以矩形中心像素为起点,从里向外由背景图像逐渐地把像素值过渡到合成后的图像。假定把满足下式的函数作为图像融合函数:
式中:K是一个常数,表示融合因子,它是决定融合变化快慢的参数;D(x,y)决定融合时图像的渐变方式,是与位置有关的系数,也是合成后的图像像素值相对于合成前图像像素值的变化偏移量;在保持背景图像的连续性基础上函数最后加入B(x,y);在式中通常用从矩形区域内的点到矩形中心点的欧氏距离来代替系数D(x,y)。随着距离的增加,层F相对于层B的变化量权值逐渐增大,即背景图逐渐向前景图过渡。使用上式进行融合时,首先要选定常数K,K值决定了图像过渡的快慢。合成前后的像素偏移量相对于背景图的像素值B(x,y)的百分比越小,图像过渡越能达到自然柔和的效果。同时这个百分比选择又不宜太小,如果太小,将失去融合产生的效果。在实验多次融合效果的比较中,K=0.025 8时,图像具有较好的融合效果。本文把纸张纹理作为前景图F,把产生的流动图案作为背景图B,对于不同的纸张纹理产生的融合效果如图8所示。其中图8b)为图 8a)纸张对应的效果图,图 8d)为图 8c)纸张对应的纹理图。本文选择不同类型的图片进行水彩画模拟绘制,部分效果如图9所示。图9a)表示原图,图9b)表示效果图。从实验结果可知本文提出的水彩画模拟绘制方法具有较好的绘制效果。
图8 不同纸张纹理融合效果Fig.8 Texture fusion effects of different types of paper
图9 水彩画绘制效果Fig.9 Drawing effects of watercolor paintings
本文通过详细的分析和研究传统水彩画特征和基本绘制技法,从而引入对非真实感水彩画的绘制方法和目标。本文提出一种基于Canny边缘检测和八邻域加权平均扩散算法的水彩画模拟绘制方法,利用形态学运算来实现水和色彩相互作用产生的流动图案,最后提出基于像素级的融合算法来实现纸张的纹理效果。实验结果表明,所提方法具有较好绘制效果。