而色彩鲜艳这一点从本文开头的两幅图对比就可以看出来。这些特征就是动漫风格的一般特征,也是我们要着重处理的三个部分。2. 如何处理(1)突出边缘线条要想突出边缘,自然首先要找到边缘。有很多成熟的边缘检测算法,最常用的就是各种算子—— Sobel, Canny, Laplace 等等。利用这些算子进行边缘检测的本质就是将算子与图像进行空间二维卷积。
具体的实现这里不再赘述,因为MATLAB中的edge函数可以很方便的实现边缘检测,用的就是这个原理。至于找到之后怎么突出?最简单的方法是从原图中减去边缘位置处的像素,这样边缘就变成了黑色,形成“描边”的效果。(2)弱化与去除细节所谓“细节”,从图像处理的角度看来就是图像中的高频成分。要想去除高频成分,自然而然就要用到滤波(filtering)的方法。
常用的滤波器有均值滤波器、高斯滤波器、中值滤波器等。但是,这些常用滤波器都有一个共同的问题——会弱化所有的高频信息。而很不幸的是,图像中的边缘也属于高频信息(因为边缘意味着图像在这里产生了突变,突变就意味着高频)。因此常用滤波器会将我们本应突出的边缘一起弱化模糊。这种情况下就要让双边滤波器(Bilateral filter)出场了。
这种滤波器的特点是可以“保边滤波”(或者叫“区域平滑”,Region smoothing)。顾名思义,就是可以只模糊区域内部而保留清晰的边缘。为了搞明白双边滤波器为什么有这样的效果,首先来说一下高斯滤波器。高斯滤波器,或者说高斯滤波模板,其中的各个点的值仅与该点到模板中心点的空间距离有关,而并没有考虑各个点与中心点的相似度(即像素值的接近程度),这样就导致无论是变化不大的区域内部点,还是突变的边缘点,只要和中心的距离相同,那就同等对待。
而双边滤波器就是在高斯滤波器基础上加上了相似度权重,在高斯滤波模板的每个点上再乘以一个与中心点的相似度系数(即“相似度权重”),从而将边缘与内部区分处理。相似度权重计算方法和高斯滤波模板中各点值(可以称为“高斯权重”)的计算方法相同,只不过高斯权重是将该点到中心的距离代入高斯函数计算,而相似度权重是将该点与中心的像素相似度(比如该点像素值与中心像素值的欧氏距离,或者直接求二者的差值)代入高斯函数计算得到。