一、双边滤波原理

双边滤波(Bilateral Filter)是非线性滤波中的一种。这是一种结合图像的空间邻近度与像素值相似度的处理办法。在滤波时,该滤波方法同时考虑空间临近信息与颜色相似信息,在滤除噪声、平滑图像的同时,又做到边缘保存。
双边滤波采用了两个高斯滤波的结合。一个负责计算空间邻近度的权值,也就是常用的高斯滤波器原理。而另一个负责计算像素值相似度的权值。在两个高斯滤波的同时作用下,就是双边滤波。

如上图所示,双边滤波的图像边缘信息被较好的保留,而高斯滤波的边缘信息则十分模糊。

二、双边滤波公式

g(i,j)=∑(k,l)∈S(i,j)f(k,l)w(i,j,k,l)∑(k,l)∈S(i,j)w(i,j,k,l)g(i,j)= {\frac {\sum_{(k,l)\in S(i,j)}f(k,l)w(i,j,k,l)} {\sum_{\substack{(k,l)\in S(i,j)}}w(i,j,k,l)} }g(i,j)=∑(k,l)∈S(i,j)​​w(i,j,k,l)∑(k,l)∈S(i,j)​f(k,l)w(i,j,k,l)​

S(i, j):指以 (i, j) 为中心的 (2N+1)x(2N+1) 的大小的范围;
f(k, l):(多个) 输入点;
w(i, j, k, l):代表经过两个高斯函数计算出的值(这里还不是权值)
g(i, j):输出点;

上述公式我们进行转化,假设公式中 w(i,j,k,l) 为 m,则有
g(i,j)=f1∗m1+f2∗m2+⋯+fn∗mnm1+m2+⋯+mng(i,j)= {\frac {f_1*m_1+f_2*m_2+ \cdots +f_n*m_n} {m_1+m_2+ \cdots +m_n} }g(i,j)=m1​+m2​+⋯+mn​f1​∗m1​+f2​∗m2​+⋯+fn​∗mn​​
设 m1+m2+m3…+mn=Mm_1+m_2+m_3 … +m_n = Mm1​+m2​+m3​…+mn​=M,则有
g(i,j)=f1∗m1M+f2∗m2M+⋯+fn∗mnMg(i,j) = f_1 * {\frac {m_1} M} + f_2 * {\frac {m_2} M} + \cdots + f_n * {\frac {m_n} M}g(i,j)=f1​∗Mm1​​+f2​∗Mm2​​+⋯+fn​∗Mmn​​

此时可以看到,这明显是图像矩阵与核的卷积运算了。其中 m1/M 代表的第一个点(或最后一个点,看后面如何实现)的权值,而图像矩阵与核通过卷积算子作加权和,最终得到输出值。
接下来我们来讨论最关键的w(i, j, k, l), ws为空间临近高斯函数,wr为像素值相似度高斯函数
w=ws∗wrw = w_s *w_rw=ws​∗wr​ ws=e−(i−k)2+(j−l)22σs2w_s = e^{-{\frac {(i-k)^2+(j-l)^2}{2\sigma_s^2}}}ws​=e−2σs2​(i−k)2+(j−l)2​ wr=e−∣∣f(i,j)−f(k,l)∣∣22σr2w_r = e^{-{\frac {||f(i,j)-f(k,l)||^2} {2\sigma_r^2}}}wr​=e−2σr2​∣∣f(i,j)−f(k,l)∣∣2​ 可以看到,对于 wsw_sws​ 来说,这就是普通的高斯滤波函数,其代入的坐标,σs\sigma_sσs​ 是程序输入值,该函数是在空间临近度上计算的。而 wrw_rwr​ 是计算像素值相似度(颜色空间),注意,这就是高斯函数代入坐标值,2σr22\sigma_r^22σr2​ 的上方是范数,在这里的值为 ∣∣f(i,j)−f(k,l)∣∣2||f(i,j)-f(k,l)||^2∣∣f(i,j)−f(k,l)∣∣2 。也就是两个点像素值差值的绝对值的平方。其中,彩色图片计算差值时应将(i,j)点的RGB三通道值之和减去(k,l)点的RGB三通道值之和。这里是颜色空间计算,不能当成单通道,但是在最后矩阵卷积时,是单通道与权值相乘而不是三个通道之和。

三、bilateralFilter 函数

OpenCV还给出了简单的函数形式:

CV_EXPORTS_W void bilateralFilter( InputArray src, OutputArray dst, int d,double sigmaColor, double sigmaSpace,int borderType = BORDER_DEFAULT );

src : 原图, 8为整形或浮点型,单通道或者3通道;
dst : 与原图同样尺寸,但不能是原图;
d : 滤波核的直径;
sigmaColor : σr\sigma_rσr​
sigmaSpace : σs\sigma_sσs​
borderType : 用于设置图像边界元素的方式

双边滤波的效果(来自网络图片)

本文第一、二部分转载自 OpenCV双边滤波详解及实代码实现

opencv-双边滤波相关推荐

  1. 【python】opencv双边滤波

    对于磨皮这种复杂的图像处理,用scipy这种科学计算包显然会比较复杂,故而使用神器opencv pip install opencv-python 磨皮的本质就是将表面变得模糊,然而直接使用模糊会让轮 ...

  2. opencv 双边滤波算法(Bilateral Filters)原理及实现

    双边滤波是一种非线性的滤波方法,是结合图像的空间邻近度和像素值相似度的一种折衷处理,同时考虑空间与信息和灰度相似性,达到保边去噪的目的,具有简单.非迭代.局部处理的特点.之所以能够达到保边去噪的滤波效 ...

  3. OpenCV双边滤波bilateralFilter去除脸部雀斑

    <OpenCV系列教程> <深度学习-如何提高数据集质量> 源码下载45-BilateralFilter.py 先展示一下效果: 通过多次调大,sigmaColor和sigma ...

  4. OpenCV 双边滤波

    def bilateralFilter(src, d, sigmaColor, sigmaSpace, dst=None, borderType=None) src:源图像,需要为8位或者浮点型单通道 ...

  5. OpenCV实现双边滤波

    双边滤波的数学原理在其他博客中很容易找到,再此不在赘述.仅仅记录一下自己对这个滤波器功能的一些总结. 个人觉得这个滤波器十分优美和简洁,其特点: 双边滤波同时考虑了空间(像素距离)和像素值层面的因素. ...

  6. c语言双边滤波算法,浅析bilateral filter双边滤波器的理解

    图像去噪的方法很多,如中值滤波,高斯滤波,维纳滤波等等.但这些降噪方法容易模糊图片的边缘细节,对于高频细节的保护效果并不明显.相比较而言,bilateral filter双边滤波器可以很好的边缘保护, ...

  7. 双边滤波(Bilateral filter)

    双边滤波器(Bilateral filter)是一种可以保边去噪的滤波器.可以滤除图像数据中的噪声,且还会保留住图像的边缘.纹理等(因噪声是高频信号,边缘.纹理也是高频信息,高斯滤波会在滤除噪声的同时 ...

  8. 【OpenCV】邻域滤波:方框、高斯、中值、双边滤波

    邻域滤波(卷积) 邻域算子值利用给定像素周围像素的值决定此像素的最终输出.如图左边图像与中间图像卷积禅城右边图像.目标图像中绿色的像素由原图像中蓝色标记的像素计算得到. 通用线性邻域滤波是一种常用的邻 ...

  9. 双边滤波--OpenCV实现

    双边滤波器的定义双边滤波,Bilateral filter.是一种可以保边去噪的滤波器.之所以可以达到此去噪效果,是因为滤波器是由两个函数构成.一个函数是由几何空间距离决定滤波器系数.另一个由像素差值 ...

  10. 【OpenCV 例程200篇】60. 非线性滤波—联合双边滤波

    [OpenCV 例程200篇]60. 非线性滤波-联合双边滤波(Joint bilateral filter) 欢迎关注 『OpenCV 例程200篇』 系列,持续更新中 欢迎关注 『Python小白 ...

最新文章

  1. Nova Conductor 与 Versioned Object Model 机制
  2. qt tableWidget 表格控件使用
  3. 编译php,ldap问题
  4. 《Oracle高性能自动化运维》一一2.3 Library Cache
  5. 数据结构与算法之-----图(搜索算法)
  6. hosts ip 指向ip_不同网段共享打印机?不同IP段怎么共享打印机?
  7. ueditor 编辑器增加css样式_Web入侵之利用编辑器漏洞入侵
  8. mysql主节点1593从节点正常_keepalived+双主架构
  9. 关于mpvue 切换页面数据没清空
  10. SpringMVC中的九大组件
  11. 数字信号处理概览与框图
  12. EPLAN2.9程序安装及注意事项
  13. flutter 语音转文字(科大讯飞)
  14. 按钮按下时立体感效果
  15. 超过1M的网络动图添加到微信表情包
  16. 【饭谈】面试官:速斩此子,切不可引狼入室
  17. 电商直播增加人气,留人技巧有哪些
  18. 3d卷积神经网络应用,神经网络仿真软件
  19. DFS(深搜)算法解析
  20. c语言程序设计P320,《C程序设计》作业内容

热门文章

  1. 屏幕使用时间 不能申请延长_屏幕时间限制什么都不教我们的孩子
  2. maven项目 骨架搭建
  3. GitHub 优秀的 Android 开源项目 淘宝技术牛p博客整理开发中最常用的GitHub上 优秀的 Android 开源项目整理(精品)...
  4. 推荐一款超级下载利器工具,突破网盘的下载限制
  5. 2022网易笑招4.21笔试题
  6. OVS 内核CT实现
  7. 给iframe添加loading状态
  8. 利用 OpenCC 工具进行文字的简繁转换
  9. python语言是什么语言-python是一门什么样的语言?
  10. 什么是drop-in item renderer