opencv-双边滤波

article/2025/10/26 3:31:26

一、双边滤波原理

双边滤波(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 ) = f 1 ∗ m 1 + f 2 ∗ m 2 + ⋯ + f n ∗ m n m 1 + m 2 + ⋯ + m n g(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++mnf1m1+f2m2++fnmn
m 1 + m 2 + m 3 … + m n = M m_1+m_2+m_3 … +m_n = M m1+m2+m3+mn=M,则有
g ( i , j ) = f 1 ∗ m 1 M + f 2 ∗ m 2 M + ⋯ + f n ∗ m n M g(i,j) = f_1 * {\frac {m_1} M} + f_2 * {\frac {m_2} M} + \cdots + f_n * {\frac {m_n} M} g(i,j)=f1Mm1+f2Mm2++fnMmn

此时可以看到,这明显是图像矩阵与核的卷积运算了。其中 m1/M 代表的第一个点(或最后一个点,看后面如何实现)的权值,而图像矩阵与核通过卷积算子作加权和,最终得到输出值。
接下来我们来讨论最关键的w(i, j, k, l), ws为空间临近高斯函数,wr为像素值相似度高斯函数
w = w s ∗ w r w = w_s *w_r w=wswr w s = e − ( i − k ) 2 + ( j − l ) 2 2 σ s 2 w_s = e^{-{\frac {(i-k)^2+(j-l)^2}{2\sigma_s^2}}} ws=e2σs2(ik)2+(jl)2 w r = e − ∣ ∣ f ( i , j ) − f ( k , l ) ∣ ∣ 2 2 σ r 2 w_r = e^{-{\frac {||f(i,j)-f(k,l)||^2} {2\sigma_r^2}}} wr=e2σr2∣∣f(i,j)f(k,l)2 可以看到,对于 w s w_s ws 来说,这就是普通的高斯滤波函数,其代入的坐标, σ s \sigma_s σs 是程序输入值,该函数是在空间临近度上计算的。而 w r w_r wr 是计算像素值相似度(颜色空间),注意,这就是高斯函数代入坐标值, 2 σ r 2 2\sigma_r^2 2σ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三通道值之和。这里是颜色空间计算,不能当成单通道,但是在最后矩阵卷积时,是单通道与权值相乘而不是三个通道之和。
总之,对于与模版中心点像素值相差较大的像素点来说,模板系数受高斯核的影响越小。反之,影响就越大。因此,对于不同种类的噪声点,可以联合调节 Ws和Wr的大小,使得双边滤波模版既能滤除掉图中的噪声点,又能较好地保存边缘信息。

三、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双边滤波详解及实代码实现


http://chatgpt.dhexx.cn/article/6idRvYsH.shtml

相关文章

Opencv之图像滤波:6.双边滤波(cv2.bilateralFilter)

前面我们介绍的滤波方法都会对图像造成模糊,使得边缘信息变弱或者消失,因此需要一种能够对图像边缘信息进行保留的滤波算法,双边滤波是综合考虑空间信息和色彩信息的滤波方式,在滤波过程中能够有效地保护 图像内的边缘信息。 6.1…

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

双边滤波算法原理: 双边滤波是一种非线性滤波器,它可以达到保持边缘、降噪平滑的效果。和其他滤波原理一样,双边滤波也是采用加权平均的方法,用周边像素亮度值的加权平均代表某个像素的强度,所用的加权平均基于高斯分…

双边滤波的基本原理

双边滤波(Bilateral filter)是一种非线性的滤波方法,本质是基于高斯滤波,目的是解决高斯滤波造成的边缘模糊。结合图像的空间邻近度和像素值相似度的一种折处理,同时考虑空域信息和灰度相似性,达到保边去噪…

双边滤波算法原理

1. 简介 图像平滑是一个重要的操作,而且有多种成熟的算法。这里主要简单介绍一下Bilateral方法(双边滤波),这主要是由于前段时间做了SSAO,需要用bilateral blur 算法进行降噪。Bilateral blur相对于传统的高斯blur来说…

Bilateral Filters(双边滤波算法)原理及实现(一)

双边滤波算法原理 双边滤波是一种非线性滤波器,它可以达到保持边缘、降噪平滑的效果。和其他滤波原理一样,双边滤波也是采用加权平均的方法,用周边像素亮度值的加权平均代表某个像素的强度,所用的加权平均基于高斯分布[1]。最重要…

双边滤波与引导滤波

双边滤波与引导滤波 分类: AI and Computer Vision 2014-03-07 17:04 344人阅读 评论(0) 收藏 举报 图像处理 滤波 双边滤波 双边滤波很有名,使用广泛,简单的说就是一种同时考虑了像素空间差异与强度差异的滤波器,因此具有保持图…

【图像处理】——双边滤波

【fishing-pan:https://blog.csdn.net/u013921430 转载请注明出处】 双边滤波 高斯滤波是最常用的图像去噪方法之一,它能很好地滤除掉图像中随机出现的高斯噪声,但是在之前的博客中提到过,高斯滤波是一种低通滤波(有兴…

【八】双边滤波

1.高斯滤波 高斯滤波的定义如下: 其中高斯函数为: 高斯滤波是领域内相邻像素的加权平均,权重值为G(||p-q||),和均值滤波,中值滤波一样,都是将噪声(高频信息)滤除,但是边…

双边滤波原理和实现

双边滤波原理 双边滤波(Bilateral filter)是一种非线性的滤波方法,是结合图像的空间邻近度和像素值相似度的一种折衷处理,同时考虑空域信息和灰度相似性,达到保边去噪的目的。 双边滤波器之所以能够做到在平滑去噪的同…

双边滤波

1 双边滤波简介 双边滤波(Bilateral filter)是一种非线性的滤波方法,是结合图像的空间邻近度和像素值相似度的一种折衷处理,同时考虑空域信息和灰度相似性,达到保边去噪的目的。具有简单、非迭代、局部的特点。 双边滤…

数字图像处理(九)双边滤波

文章目录 一、何为双边滤波?二、为什么要使用双边滤波?三、双边滤波原理1.空间域核2.值域核3.模板相乘 四、 w d w_d wd​和 w r w_r wr​和 σ \sigma σ的理解五、C代码实现1.opencv中Mat的一点小知识2.关于边界的处理3.双边滤波代码 一、何为双边滤波…

双边滤波(Bilateral Filtering)

双边滤波(Bilateral Filtering) 1、基本思路 双边滤波(Bilateral Filtering)的基本思路是同时考虑像素点的空域信息和值域信息。即先根据像素值对要用来进行滤波的邻域做一个分割或分类,再给该点所属的类别相对较高的…

三种经典图像滤波方法介绍——双边滤波(Bilateral filter)、导向滤波(Guided Fliter)、滚动导向滤波(RollingGuidedFilter)

文章目录 一、前言二、双边滤波(Bilateral filter)2.1 双边滤波的理论介绍及公式推导2.2 双边滤波的matlab程序实现 三、导向滤波(Guided Fliter)3.1 导向滤波的理论介绍及公式推导3.2 导向滤波matlab代码实现 四、滚动导向滤波(RollingGuidedFilter)4.1 滚动导向滤波的理论介绍…

图像处理:双边滤波算法

今天主要是回顾一下双边滤波,我曾经在这篇——图像处理:推导五种滤波算法中推导过它,其中包含了我自己写的草稿图。 目录 双边滤波算法原理 (1)空间域核 (2)值域核 理解双边滤波 空域权重​…

Bilateral Filters(双边滤波算法)的超简单原理,学不会你打我。

摘要: 双边滤波(Bilateral Filters)是非常常用的一种滤波,它可以达到保持边缘、降噪平滑的效果。和其他滤波原理一样,双边滤波也是采用加权平均的方法,用周边像素亮度值的加权平均代表某个像素的强度,所用的加权平均基…

jQuery源码分析理解

1: 首先我们先来看一下jquery代码的整体结构 代码从16行开始为真正的jquery源码,我们看到Jquery源码第一个()中是定义了一个匿名function( window, undefined ) {};接着末尾有个(window),就表示执行这个匿名function,…

jQuery源码分析(一)

jQuery源码分析(一) 我们知道在jQuery中在使用选择器或者给元素绑定事件的时候都是通过$来操作的。那么基于JavaScript面向对象的思想,我们可以把jQuery看做一个函数或者对象,它里边存储了大量的方法,是一个类库。 $代…

jQuery源码阅读(一)---jQuery源码整体架构

之前用jQuery库写了两个小例子(结合Apache、PHP实现的简易聊天室以及音乐播放器),详见我的上两篇博客jQuery aJax技术以及PHP实现简单聊天室、 利用jQuery实现音乐播放器。为了更加深入了解jQuery库的架构以及巩固原生JS的基础和深度&#xf…

jquery源码解析

(function(a,b){})() JQuery源码的开头 (function(a,b){})(window)通常(function(){})()用来封装一些私有成员或者公共成员的导出。 1. 定义一个匿名函数,创建了一个“私有”的命名空间,该命名空间的变量和方法,不会破坏全局的命名空间。确…

jQuery源码下载和编译

下载 git clone https://github.com/jquery/jquery.git编译 下载完成后,进入jquery文件夹,运行如下命令: npm run build最后全部编译完成,生成的文件在目录dist文件夹下: 有兴趣的就可以开始研究源码了。