![566a4c925ebe1a5236eb9e5e585e1f75.png](https://i-blog.csdnimg.cn/blog_migrate/8e11eadee06da33d93b0c61ea27ce5b5.jpeg)
要把一张照片变成动漫风格一共有三步,分别是
(1)双边滤波得到一张色块分离的图片 [后面详细介绍原理]
(2)边缘提取得到描线图
(3)合并步骤1,2中的结果
这三步可以用三行代码实现:
fi_img
测试三行代码,下面测试静物以及人像
![bd5e0693011604848f38ea8e796f19e9.png](https://i-blog.csdnimg.cn/blog_migrate/469d637865e8c2cc4302213e6e9233f4.jpeg)
![273bd22ebba95e7bdf303526e71b05ff.png](https://i-blog.csdnimg.cn/blog_migrate/67d1a20f378ecfaf0cee0486c5a1e51a.jpeg)
![6e331da53de39be89fc56e0ddb4835e9.png](https://i-blog.csdnimg.cn/blog_migrate/805ae1d4d4dd71b05b4ee944fe4a198e.jpeg)
MATLAB~ 硬是用出了Photoshop的感觉
其中双边滤波是最有趣的部分
可能大家比较熟悉的是高斯滤波,高斯滤波是把周围的像素给加权平均到当前像素,权重取决于离当前像素的距离。
高斯权重的表达式是这个样的,其中k和l是当前像素的索引,i和j是图片上任意一点的像素索引。所以图片上i和j所在点对应的权重是:
而双边滤波对应的双边权重:
把像素点的值考虑了进来,在取权重的时候不仅仅考虑像素点到所在滤波点的距离,还考虑对应像素的值,如果某一个像素和滤波像素的值比较相近,那么,权重就会大一点。
这样做有一个好处,就是可以保留原有的边缘:
![c1869f9d7d9308951bdae76135a5dfba.png](https://i-blog.csdnimg.cn/blog_migrate/78d2b2bd5ef40d2da4af51f2cf2ca682.jpeg)
市面上大部分美颜的所谓【磨皮】,就是双边滤波。
这里用到双边滤波是想得到一种带点模糊,又保留边缘的效果,所以甚妙啊。
=========
Pjer内容分类:
精选 射电 编程 科研工具 太阳物理