图片动漫化处理原理

1. 动漫化风格的特点

要想搞清楚怎么变成动漫化风格,首先就要明白动漫和普通照片的区别。主要的区别有三点:
(1)动漫中的细节相对少;
(2)动漫中的边缘轮廓更突出;
(3)动漫的色彩更鲜艳(相对于普通的、未经PS的照片);

2. 如何处理

(1)突出边缘线条

要想突出边缘,自然首先要找到边缘。有很多成熟的边缘检测算法,最常用的就是各种算子—— Sobel, Canny, Laplace 等等。利用这些算子进行边缘检测的本质就是将算子与图像进行空间二维卷积。具体的实现这里不再赘述,因为MATLAB中的edge函数可以很方便的实现边缘检测,用的就是这个原理。至于找到之后怎么突出?最简单的方法是从原图中减去边缘位置处的像素,这样边缘就变成了黑色,形成“描边”的效果。

(2)弱化与去除细节

所谓“细节”,从图像处理的角度看来就是图像中的高频成分。要想去除高频成分,自然而然就要用到滤波(filtering)的方法。常用的滤波器有均值滤波器、高斯滤波器、中值滤波器等。但是,这些常用滤波器都有一个共同的问题——会弱化所有的高频信息。而很不幸的是,图像中的边缘也属于高频信息(因为边缘意味着图像在这里产生了突变,突变就意味着高频)。因此常用滤波器会将我们本应突出的边缘一起弱化模糊。

这种情况下就要让双边滤波器(Bilateral filter)出场了。这种滤波器的特点是可以“保边滤波”(或者叫“区域平滑”,Region smoothing)。顾名思义,就是可以只模糊区域内部而保留清晰的边缘。为了搞明白双边滤波器为什么有这样的效果,首先来说一下高斯滤波器。高斯滤波器,或者说高斯滤波模板,其中的各个点的值仅与该点到模板中心点的空间距离有关,而并没有考虑各个点与中心点的相似度(即像素值的接近程度),这样就导致无论是变化不大的区域内部点,还是突变的边缘点,只要和中心的距离相同,那就同等对待。

而双边滤波器就是在高斯滤波器基础上加上了相似度权重,在高斯滤波模板的每个点上再乘以一个与中心点的相似度系数(即“相似度权重”),从而将边缘与内部区分处理。相似度权重计算方法和高斯滤波模板中各点值(可以称为“高斯权重”)的计算方法相同,只不过高斯权重是将该点到中心的距离代入高斯函数计算,而相似度权重是将该点与中心的像素相似度(比如该点像素值与中心像素值的欧氏距离,或者直接求二者的差值)代入高斯函数计算得到。

(3)让图像色彩更鲜艳

所谓的色彩鲜艳,其实就是高饱和度。颜色的饱和度高,就显得鲜艳;饱和度低,就显得灰暗。所以,要让图像色彩更鲜艳,就要提高饱和度。

3. 总结

总体上,把照片变成动漫化风格分以下几步:
(1)保边滤波(区域平滑)
(2)边缘检测,然后从原图中减去边缘像素,以突出显示边缘线条
(3)饱和度提升

你可能感兴趣的:(python)