引言

首先我承认自己标题党了,我就想提升点阅读量我容易么我,前几天的篇纯技术文阅读量都扯着蛋了。

毕竟阅读量太低实在是没有写下去的动力,我只能用点小手段偶尔提升下阅读量。

很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:1097524789

这篇文章我转换下套路,先放结果,感兴趣的接着往下看,不感兴趣的直接左上角,就当是我把你们骗进来的。

结果

然后直接放源码:

import cv2 as cvsource = cv.imread("zhaopian.jpg")
dst = cv.bilateralFilter(src=source, d=0, sigmaColor=30, sigmaSpace=15)cv.imshow("source", source)
cv.imshow("dst", dst)cv.waitKey()
cv.destroyAllWindows()

好了,本文结果部分介绍结束,想进一步了解一下原理的同学可以接着往下看了,没啥兴趣的可以左上角了。

双边滤波原理

上面的图片美颜效果其实使用的是 OpenCV 中为我们提供的双边滤波器,是一种图片降噪算法。

对其他图片降噪或者图像滤波器感兴趣的可以参考前面的内容 「Python 图像处理 OpenCV (7):图像平滑(滤波)处理」 。

如果没看过的同学十分建议先行阅读,最少要把最后一部分的高斯滤波看一下,否则下面介绍的双边滤波会很难理解。

双边滤波(Bilateral filter)是一种非线性的滤波方法,本质是基于高斯滤波。

前面的文章介绍过,高斯滤波的方式会造成边缘模糊化,这是没办法的事情,这是高斯滤波过滤方式而导致的。

而双边滤波就是在高斯滤波的基础上,对高斯滤波的方式加以改进,结合图像的空间邻近度和像素值相似度的一种折处理,同时考虑 空域信息(domain) 和 值域信息(range) ,达到保边降噪的目的。

说人话就是双边滤波在进行滤波的过程中,不光要考虑周围像素值与中点像素值的大小之差,还需要考虑空间上的距离,进而确定该点对中间点的影响因子。

比如在一张图像中,相邻的像素点的颜色会非常相近,但是如果在边缘区域,相邻元素点的颜色变化会非常的大。

高斯过滤器的过滤过程中就是因为没有考虑边缘区域而导致过滤后图像边缘模糊,而双边滤波由于在过滤的过程中考虑到了周围像素值与中点像素值的差值大小,从而会确定一个影响因子,从而实现图片的保边降噪。

具体的实现原理如下:

希望你们的高中数学没有都还给你们的数学老师

整个双边滤波的算法分为两部分,一个是颜色值的相似度(值域核),公式如下:

$$

r(i, j, k, l) = exp( - \frac{||f(i, j) − f(k, l)|| 2}{2{\sigma 2_r}} )

$$

另一个是计算空间距离的相似度(空域核),也就是说,离得越近,相似度越高,公式如下:

$$

d(i, j, k, l)=exp( - \frac{(i−k)^2 + (j−l) 2}{2{\sigma 2_d}})

$$

上面的逻辑还是很清晰,千万不要被一堆符号弄晕了。

这里 (i, j) 代表的是要处理的像素点的坐标点,而 (k,l) 则是要处理的范围内,可能影响到其值的像素点的坐标。

最终的权重系数 w(i,j,k,l) 取决于空域核和值域核的乘积,公式如下:

$$

w(i,j,k,l)=d(i,j,k,l) ∗ r(i,j,k,l) = exp( - \frac{(i−k)^2 + (j−l) 2}{2{\sigma 2_d}} - \frac{||f(i, j) − f(k, l)|| 2}{2{\sigma 2_r}})

$$

下面是一个经典的双边滤波的原理示意图:

从这个图中可以看出,在图(b)空域核上,每个像素的权重是符合高斯分布的,而在图(c)的值域核上,由于像素取值相差过大,不同颜色的权重系数相差也很大,双边过滤过滤完成后,边缘两侧的像素点保留了原有的色彩值。

接下来还是看下双边滤波的原函数:

def bilateralFilter(src, d, sigmaColor, sigmaSpace, dst=None, borderType=None)
  • src:原图
  • d:像素邻域的直径。如果这个值设为非正数,那么 OpenCV 会从第五个参数 sigmaSpace 来将它计算出来。
  • sigmaColor:颜色空间滤波器的 $\sigma$ 值。这个参数的值越大,就表明该像素邻域内有更宽广的颜色会被混合到一起,产生较大的半相等颜色区域。
  • sigmaSpace:坐标空间中滤波器的 $\sigma$ 值,坐标空间的标注方差。他的数值越大,意味着越远的像素会相互影响,从而使更大的区域足够相似的颜色获取相同的颜色。当 d > 0 , d 指定了邻域大小且与 sigmaSpace 无关。否则, d 正比于 sigmaSpace 。使用过程中我发现这个值越大,图像的过渡效果越好。

源代码我就不放了,实际上只有那一行代码,不过希望看到本文的各位除了知道双边滤波能对图像进行美颜以外还是能稍微了解下原理。

Python 在线免费批量美颜,妈妈再也不用担心我 P 图两小时啦相关推荐

  1. Python 在线免费批量美颜,不比某秀秀方便好用一些吗!

    引言 首先我承认自己标题党了,我就想提升点阅读量我容易么我,前几天的篇纯技术文阅读量都扯着蛋了. 毕竟阅读量太低实在是没有写下去的动力,我只能用点小手段偶尔提升下阅读量. 这篇文章我转换下套路,先放结 ...

  2. 推荐几款Python编程类游戏,妈妈再也不用担心我的学习了

    自学过编程的小伙伴都知道,在学习的过程中,不仅仅要记下很多的知识点,而且那些知识点,都是非常的干,很干,很干,没有一点乐趣的感觉..... 所以在很多人学习Python的人,也许他的基础知识还没有学好 ...

  3. AWVS批量扫描-妈妈再也不用担心我不会用awvs批量扫描了

    详细信息:https://www.acunetix.com/blog/news/acunetix-v13-release/ 直接下一步安装就可以了: 1.wvsc.exe覆盖到"C:\Pro ...

  4. python绘制横向柱状图 妈妈再也不用担心我不会画图了

    python绘制横向柱状图 妈妈再也不用担心我不会画图了 前言 实现代码 成果 前言 事情要从一次画图开始说起 当我开开心心搞到一堆数据,以为能够休息的时候,这时候我突然想起来,是不是绘制成柱状图更直 ...

  5. 妈妈再也不用担心别人问我是否真正用过redis了

    1. Memcache与Redis的区别 1.1. 存储方式不同 1.2. 数据支持类型 1.3. 使用底层模型不同 2. Redis支持的数据类型 3. Redis的回收策略 4. Redis小命令 ...

  6. ERC721:全生命周期精析,妈妈再也不用担心我不会玩NFT合约啦

    ERC721:全生命周期精析,妈妈再也不用担心我不会玩NFT合约啦 由于篇幅有限,本博客将围绕ERC721核心展开介绍,文章内容尽量做到通俗易懂,但其中不可避免地可能涉及一些新手不友好的概念,您可以查 ...

  7. Java实现印刷体转手写体—妈妈再也不用担心我被罚抄作业了

    Java实现印刷体转手写体-妈妈再也不用担心我被罚抄作业了 文章目录 Java实现印刷体转手写体-妈妈再也不用担心我被罚抄作业了 缘起 开始开发 测试效果 开源地址和总结 郑重声明 因本文中涉及到爬虫 ...

  8. 妈妈再也不用担心我的公式写不出来了:一款公式输入神器实测

    本文推荐一个公式输入神器,只要截图就能识别公式,手写的公式都能识别.经过实测,几乎没有识别不出的公式,并可以输入到word.markdown.latex文件. 一.前言 写论文.博客,技术文档,公式输 ...

  9. 人工智能AI解奥数题,妈妈再也不用担心我的学习啦

    人工智能AI解奥数题,妈妈再也不用担心我的学习啦 原创 小智 大话人工智能 用人工智能求解奥数题 ▲▼◆■★ x ▽=★■◆▼▲   其中▲.▼.◆.■.★和▽ 分别是自然数.求▲.▼.◆.■.★和▽ ...

最新文章

  1. CSS3如何实现0.5边框
  2. RocketMQ主机磁盘空间有限,如何无限期延长消息存储?
  3. git add后取消_Python 命令行之旅:使用 click 实现 git 命令
  4. 如何估算代码量_没有量杯,没有称,如何估算碳水化合物?
  5. Spark源码分析之HashShuffle读写流程
  6. pc端字体大小自适应几种方法
  7. 物联网服务器Domoticz自带的消息推送到QQ邮箱
  8. 防护器件TVS管基础知识
  9. python除法运算定律有哪些_小学数学最重要的7个运算定律,都在这里了
  10. 仿9GAG制作过程(三)
  11. 手机是如何做到精准定位的
  12. python matplotlib 万花筒画板
  13. 利普希茨连续(Lipschitz continuity)和利普希茨常数(Lipschitz constant)
  14. u盘的大小在计算机无法显示,将U盘插入Win10计算机后不显示可用容量,无法打开无法读取,如何解决...
  15. 全国31个省份农产品进口出口额省级数据2001-2021
  16. poj2976 01分数规划
  17. red hat enterprise linux yum,Red Hat Enterprise Linux7.x(RHEL7.x)更换CentOS YUM源
  18. O - 鸣人和佐助(BFS)
  19. 大学生利用Python做了一个答题助手!别人自己搜,他的全自动!
  20. 立思辰扫描仪G4060F+驱动程序和客户端-银河麒麟V10 sp1版本

热门文章

  1. Linux中配置文件复制粘贴格式错乱
  2. 风格指南——Solidity中文文档(10)
  3. 安装JDK以及配置Java运行环境
  4. Exchange Online Whitelist
  5. 5. vector 模板类型? 数据类型?
  6. HTTP3快来了,提前学习一下如何在Nginx中支持HTTP3.0/QUIC
  7. MySQL集群:高可用性DBMS
  8. linux系统IO操作
  9. 《软件安装》VMware 安装 centos8
  10. leetcode 存在重复元素