python图像处理-滤镜的算法原理实现

早过忘川 提交于 2020-11-21 04:18:24



前言

本系列课程是针对无基础的,争取用简单明了的语言来讲解,学习前需要具备基本的电脑操作能力,准备一个已安装python环境的电脑。如果觉得好可以分享转发,有问题的地方也欢迎指出,在此先行谢过。

前言

上一篇文章我们利用PIL自带的路径方法实现了一些滤镜的效果,单纯从使用的角度来说已经够我们使用了,但是如果能够弄清楚它们背后的原理,相信应该是会对我们更有帮助的。

在正式讲解之前,有一些基本的概念还是要在重新了解一下。图片是由一个个像素组成的,每个像素又是由RGB三种颜色数值组成的(这里指的是RGB模式图片),灰度图是由0-255单个数值组成的。所有的图片处理,本质上都是对像素值进行处理。

灰度滤镜实现

灰度图我们知道是由单一数值0-255组成的,一张RGB三种颜色组成的图片要变成灰度图,需要将它们的三种颜色值设为相同即可。由于人眼对绿色的敏感度最高,红色次之,对蓝色的敏感度最低,因此,当权值 G > R > B时,所产生的灰度图像更符合人眼的视觉感受。

所以将颜色的RGB设置为相同的值即可使得图片为灰色,一般处理方法有:

1、取三种颜色的平均值 2、取三种颜色的最大值(最小值) 3、加权平均值:L = 0.299R + 0.587G + 0.114*B

黑白滤镜实现

黑白效果实现和滤镜有点类似,只不过这里需要自己设定一个阈值,将每一个像素点的平均值与阈值100(这个不是固定的,可以自己尝试调整)对比,如果大于这个值就将其设为255白色,否则就设为0黑色。

反色滤镜实现

反色实现就比较简单了,将对应像素点的值设置为255减去原来的值就可以了,黑的就会变白,白的就会变黑。

素描画风格滤镜

素描滤镜的处理关键是对边缘的查找。通过对边缘的查找可以得到物体的线条感。在对图像进行灰度化处理后,我们首先需要确定一个阈值,这个需要根据自己去调整,这里我选用了10。我们知道素描主要强调的是明暗度的变化,绘制时是斜向方向,通过经验,我们将每个像素点的灰度值与其右下角的灰度值进行比较,当大于这个阈值时,就判断其是轮廓并绘制。

想法拓展

上面实现了常见的几种滤镜效果,当然还有很多方法没有去实现,但是核心原理都是更改像素点的值,如何让效果更加好,和算法和参数设置有关系,比如像模糊滤镜会用到高斯模糊,也就是正态分布密度函数,更多的其实是理解原理和数学公式的应用,最后将实际问题与数学公式联系到一起。

(全文完)


欢迎转载,转载请注明出处!

欢迎关注公众微信号:叶子陪你玩编程 分享自己的python学习之路


往期精彩回顾




python图像处理-滤镜处理
python图像处理-个性化头像
python图像处理-字符画风格图片
python图像处理-实现验证码图片(上)


长按二维码,

加关注!

叶子陪你玩




本文分享自微信公众号 - 叶子陪你玩编程()。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!