强调显著性区域的铅笔画生成算法 ①
2021-01-13周华平汪晓燕桂海霞
周华平, 汪晓燕, 桂海霞
(安徽理工大学计算机科学与工程学院,安徽 淮南 232001)
0 引 言
非真实感绘制(Non-photorealistic rendering,简称NPR)是自1995年开始逐渐形成的一项技术,发展至今已经成为计算机图形学领域的一个热点[1]。NPR通常是将自然图片转换为铅笔画、油画、水粉画或钢笔画等风格。与真实感绘制(Photorealistic rendering)强调将原图中所有细节展现出来不同的是,非真实感绘制以突出原图欲传达的重点为目标,必要时会舍弃一些细节以便更好得突出原图主体。铅笔画的生成是NPR最为常见的一种表现形式,也是近年来学者研究的重点。遗憾的是,众多学者都将目光放在轮廓图和色调图的生成两个部分,而忽视了NPR突出重点区域这一特点,而这正是非真实绘制区别于真实绘制的最主要的特点。针对这个问题提出了一种改进的自然图像生成铅笔画算法,用一种以频率作为筛选条件的算法提取原图的主体,将原图分为主体区域和背景区域,对不同的区域进行不同的参数设置,以突出原图的主体,使生成的铅笔画更符合NPR定义。
1 相关工作
1.1 铅笔画生成技术
铅笔画生成技术以其广大的应用场景与经济价值,吸引着国内外众多学者对其生成过程进行不断探索与改进。Lu等人[1]结合线条与纹理生成铅笔画的方法比较经典,通过卷积运算生成笔画图S,调整色调结合纹理生成色调纹理图T,最后将图S与图T融合,该算法生成效果自然。黄志勇等人[2]为追求更多细节,在Lu的算法的基础上,生成不同的层次与尺度,进行不同的笔画模拟,使原图中所有细节被清晰展现。文献[3]在生成纹理步骤中进行改进,提取边缘图后通过运动模糊处理得到纹理图,以获得与手绘风格比较接近的素描图。文献[4]分区域对小块图形进行纹理模拟,首先对原图做霓虹处理后反相得到轮廓图,将轮廓图划分为若干个子区域,最后在每个子区域内用LIC生成纹理图,将处理过的子图合并得到输出图片。
可以发现:分步生成线条轮廓图与色调纹理图,再将二者结合生成铅笔画是比较常用的方法。
1.2 显著性区域检测技术
摄影学中将人们感兴趣的事物称为主体,计算机图形学将主体所在区域定义为显著性区域(Saliency area,简称SA)。为突出主体,应对显著性区域做特殊处理,这就要求提取原图的显著区域。显著性区域的提取可分为两大类方法,一类是做视觉仿真,另一类是计算对比度,而对比度又可细分为局部和全局两种。
IT模型[5]是第一个较为完善的显著性检测算法,Itti仿真人类搜寻显著物体的过程,提取方位、颜色和灰度三个特征的拓扑图,计算显著区域,由于提出时间早,后人在此模型上做出了许多改进。AC算法[6]通过计算颜色与灰度的局部对比度确定显著区域,计算简单,但忽略了全局结构。LC算法[7从颜色的全局对比度出发,由于采用线性表达式,导致存在稀有色调时对判断结果影响较大。RC算法[8]同时考虑颜色和空间关系的影响,但由于在预处理阶段对原图进行了分割,加大了计算时间,且输出结果没有明显的边界。
选用了频率协调(Frequency-tuned,简称FT)算法,FT算法[9]将频率作为筛选条件,以颜色与亮度作为影响显著性的因素。该算法输出的图片不损失分辨率,保留了图形边界,且计算准确率最高。因此显著性区域的提取借鉴了该方法,以便突出主体。
2 提取显著性区域
现有的显著性提取算法存在:1.检测不全面;2.显著图缺失边界;3.计算复杂;4.输出图分辨率过低等问题。下面将会从上述问题产生的原因给出选择FT算法的原因以及参数设置的依据。
FT模型通过设置一定的频率范围作为满足显著的条件,计算亮度、颜色与灰度均值的欧几里得距离判断显著与否。假设fh为高频截止值,fl为低频截止值。因为主体过大时处于低频域,导致问题1的出现,因此,应将fl设置得足够低。边缘处于高频域,fh足够大即可解决问题2。为了避免噪声被检测到,需将频域内的最高值剔除掉。至此,初步确定了一个带宽为[fl,fh]的有限区间,为使检测效果最好,不设置固定的范围。
为解决问题3,选择Matlab中可直接调用的高斯差分函数(Difference of Gaussians,简称DoG)作为带通滤波器。DoG公式定义为:
G(x,y,σ1)-G(x,y,σ2)
(1)
(1)式中,σ1和σ2是DoG算子的标准差,当σ1>σ2时,为获得满足条件的fl和fh,将σ1设置为无穷大,σ2无穷小(反之亦成立)。以颜色和亮度作为特征值计算显著性,由于Lab模式比RGB模式多一个亮度通道“L”,故需将平滑后的图像由RGB模式转化为Lab模式。通过计算Lab模式下每个点与灰度均值的欧几里得距离判断其视觉重要性,表达式如下:
S(x,y)=‖IA-G(x,y)‖
(2)
(2)式中,IA为图像平均灰度值,G(x,y)是平滑后点(x,y)处的Lab信息,其中G(x,y)=[LG,aG,bG]T,║║表示第二范数。
文献[1]为减少计算量,向下取样对图片进行压缩,严重缩小了图片分辨率,导致问题4的出现。而FT算法完整保留了原图分辨率,输出图片与原始图片保持相同尺寸,效果如图1。
a.输入图像 b.显著性区域检测 c.显著性区域提取
3 强调显著性区域的铅笔画生成
画家在绘制铅笔画的时候,通常先用简单线条完成整体轮廓,然后添加聚集的弧线来表示颜色和纹理。在生成铅笔画的时候采取同样的方法,分步生成线条图与色调纹理图。
3.1 提取边缘与生成线条图
为生成铅笔画轮廓,许多算法与文献[4]一样对图片依次进行霓虹处理,反相和灰度化得到轮廓。但是,这样生成的只是原图的边缘,而边缘与素描画的轮廓并不相同。边缘线条是连续圆滑的,而素描画的轮廓线条是断开的、交叉的。因此,本模型并不直接使用边缘图,而是由边缘卷积生成轮廓笔画。
对于边缘线条的提取,选择Canny算子[10],因为它在抑制噪声方面优于差分运算、Sobel算子、Prewitt和Roberts等边缘提取算法,且输出清晰。Canny算子的原理:用高斯函数平滑噪声后计算其梯度,结合微分性质抑制梯度信息里的非极大值,最后用一组阈值剔除非边缘点,留下边缘点将其连接成边缘图。因前文在提取显著性区域时已经利用高斯平滑函数对图片进行降噪处理,故本阶段省略了降噪步骤,直接使用高斯平滑后得到的图作为输入图像,计算梯度提取边缘。
为生成具有人类手绘风格,断开、交叉的轮廓线条,借鉴了文献[1]中生成轮廓图的方法。首先以22.5°为间隔将二维空间分为八个参考方向,经过多次试验,选择以输入图片长度的1/30作为线条长度,生成八个方向的短线段。判断边缘图中的线段属于哪个方向的判别式为:
Ei=Li*E
(3)
式(3)中Li为第i个方向的短线,其中i∈{1,2,…,8}。沿着8个方向对边缘图E进行卷积,将响应的线段定义为Ei。利用判别式对线段进行组合,其表达式为:
(4)
式(4)中,p表示像素,将响应第i个方向上所有短线的像素赋值给Bi,以组合形式输出,接着对下一个方向进行同样的操作,一直到所有的Ei都被分类。值得注意的是此时只是根据卷积运算将图像边缘图分成了8个方向的子图,为获得素描画特有的线条图,还需将Bi与Li再次进行卷积:
(5)
将Bi中的曲线沿着方向i卷积成短的、交叉的直线,合并后得到轮廓线条图。采用此方法生成轮廓图,效果生动,贴近人类手绘风格,为方便理解,给出图2所示步骤图。
a.输入图 b.提取边缘 c.反相操作 d.卷积生成具有手绘风格的线条图
图2 根据边缘图生成的线条图过程
a.输入图片 b.文献[1]效果 c.改进后效果
图4 背景区域填充纹理与显著区域填充纹理
根据NPR定义,为使主体能在整幅图中引起视觉关注,做出如下的设置:显著区域线条粗细为2、长度为区间[6,9],背景区域线条粗细为1,长度为区间[10,13]。[6,13]是经过各种不同尺寸输入图片测试效果最佳的线条长度范围,具体的数值大小随输入图片大小改变。由于计算能力过强,文献[1]中原始图片中虚化区域的线条也被计算出,这并不符合NPR定义。为解决这个问题,根据区域的显著与否设置不同的参数,强调主体,同时对背景稍加抑制,得到主次分明的铅笔画,效果如下。
3.2 色调映射与纹理模拟
Lu等人[1]发现用灰度图直接生成色调并不科学,因为灰度图的曲线呈中间高两边低趋势,而铅笔画直方图只有在到达高亮度区域的某一个临界值时呈爆发式增长。这种分布规律是因为在铅笔画中黑色像素很少,空白区域所占比例较大,而且与线条的亮度值差距很大,导致在亮区域的某一临界值,曲线会陡然上升。根据这个特点分别用拉普拉斯分布、均匀分布和高斯分布表示铅笔画的阴影层、中间层和高光层,最后使用参数模型对色调进行调整,表达公式如下:
(6)
(7)
(8)
其中p1(r),p2(r)和p3(r)分别表示阴影层、中间层和高光层,r为色调值,σa决定阴影区域峰值,根据观察设为9,ua和ub确定了中间层的色调范围,分别为105,205,将高斯分布中的比例参数σb设为11,ν为阴影层平均值,一般为90。将定义好的色调模式映射到铅笔画中,公式如下:
(9)
式(9)中,wi为pi(r)所对应的权重,N为归一化因子,值为3。原文作者对于w1:w2:w3给出的一组参考数据为11:37:52。发现将w1,w2和w3设置为可调整输出效果更好,例如:输入图片的中间色调分布较多,在映射色调的时候可以将w2设置的大一点。
为突出主体,需要加深显著区域的色调,同时对背景区域的色调做适量削弱。设置方法为加大显著性区域w2和w3所占比例,使颜色变亮、加深,同时减小背景区域w1所占比例,画面变白在视觉上有变淡的效果。按照定义的公式,用组映射规则(group mapping law,简称GML)对原始图片的色调值进行规定化处理。
根据观察,画家在绘制铅笔画的时候,背景区域一般采用平行的、方向一致的弧线快速填充,与之相反的是主体部分往往是经过精雕细琢绘制的。因此,对于纹理的模拟,根据区域选择不同的纹理图进行填充。选择图4左图填充背景区域,右图用来填充显著性区域,由于个人绘画习惯不同,可将左图旋转获得不同方向的纹理。
4 实验与分析
本实验硬件环境为第四代英特尔酷睿i5-4210U双核处理器(1.7G赫兹,睿频可达2.7G赫兹),32G内存,硬盘500GB,2GB独立显存,Windows10 64位操作系统,软件环境为MatlabR2016b版本。本模型生成的铅笔画在建筑、植物、人物等风格中表现效果都很好,筛选了部分生成的铅笔画展示如下:
图5 部分铅笔画生成效果展示
a.原始图片 b.文献[1]效果 c.改进后效果
生成铅笔画的模型借鉴并改进了文献[1],取得了更好得结果:(1)在生成线条图时文献[1]使用差分运算提取边缘信息,替换成Canny算子提取的边缘更清晰、完整,且有较好的抗噪能力;(2)模拟色调时,文献[1]中w1:w2:w3提供固定值以供选择,实验发现将色调值设为可调使铅笔画色彩更明艳;(3)在模拟纹理时,文献[1]用共轭梯度求解法设置不同密度纹理,为简便实验过程,选取了不同的纹理直接填充不同区域,方法更为简单,且效果贴合素描画的特点。通过改进,生成了更为符合NPR定义的铅笔画,实现了突出主体且贴近人类手绘风格等要求,如图6所示。
5 结 语
针对目前非真实感绘制存在有悖NPR定义的情况,提出改进算法,根据NPR强调突出主体这一特点,将输入图片划分为显著性区域与背景区域。并借鉴经典算法,分别生成轮廓线条图与色调纹理图。根据所属区域的视觉重要性设置不同粗细与长短的线条,填充不同密度、色调与方向的纹理,突出原图重点。通过大量实验对比发现改进的方法更为符合NPR的定义,主体明显,且绘制的线条清晰生动,纹理十分接近手绘风格。由于改进的方法不依赖机器学习,对各种风格的图片都有较好的兼容性,故在各个领域都具有较强的使用价值。但本方法也存在不足,即参数设置较为繁琐,接下来的工作将致力于解决这个问题,并尝试将之运用到视频当中,生成动画风格的视频。