双边滤波(Bilateral filter)原理介绍及matlab程序实现

article/2025/10/25 2:19:41

双边滤波

1、原理介绍

双边滤波由C. Tomasi在1998年提出,是一种经典的非线性空间滤波方法。在滤波器稀疏的制定上,双边滤波同时考虑到了输出像素与邻域内其它像素的欧氏距离和取值的差异,即:同时考虑到了空间域和值域间的差别。如维纳滤波和高斯滤波等只考虑了空间域的滤波方法,在滤波后对边缘信息的保护效果不理想;如α-截尾均值滤波器等只考虑值域的滤波方法,在滤波后图像整体模糊,不能有效的保护细节信息。双边滤波器综合考量了空间域和值域对于滤波产生的影响,因而能达到保持边缘,降噪平滑的效果,是一种良好的边缘保持滤波器。
双边滤波通过基于高斯分布的加权平均方法实现。以图像中具体的像素值求解为里说明双边滤波的实现原理:图像在(i,j)处经过双边滤波后的输出像素值g依赖于邻域内像素值f的加权组合。
g ( i , j ) = ∑ k , l f ( k , l ) w ( i , j , k , l ) ∑ k , l w ( i , j , k , l ) g(i, j)=\frac{\sum_{k, l} f(k, l) w(i, j, k, l)}{\sum_{k, l} w(i, j, k, l)} g(i,j)=k,lw(i,j,k,l)k,lf(k,l)w(i,j,k,l)
其中,k,l表示邻域像素的位置,权重系数w(i,j,k,l)为空间域核d与值域核r的乘积。空间域核d是指基于高斯函数计算当前点与中心点的欧式距离。
d ( i , j , k , l ) = exp ⁡ ( − ( i − k ) 2 + ( j − l ) 2 2 σ d 2 ) d(i, j, k, l)=\exp \left(-\frac{(i-k)^2+(j-l)^2}{2 \sigma_d^2}\right) d(i,j,k,l)=exp(2σd2(ik)2+(jl)2)
值域核r是指基于高斯函数计算当前点与中心点像素值的差的绝对值。
r ( i , j , k , l ) = exp ⁡ ( − ∥ f ( i , j ) − f ( k , l ) ∥ 2 2 σ r 2 ) r(i, j, k, l)=\exp \left(-\frac{\|f(i, j)-f(k, l)\|^2}{2 \sigma_r^2}\right) r(i,j,k,l)=exp(2σr2f(i,j)f(k,l)2)
由空间域核与值域核的计算公式可得权重系数的计算公式为:
w ( i , j , k , l ) = exp ⁡ ( − ( i − k ) 2 + ( j − l ) 2 2 σ d 2 − ∥ f ( i , j ) − f ( k , l ) ∥ 2 2 σ r 2 ) w(i, j, k, l)=\exp \left(-\frac{(i-k)^2+(j-l)^2}{2 \sigma_d^2}-\frac{\|f(i, j)-f(k, l)\|^2}{2 \sigma_r^2}\right) w(i,j,k,l)=exp(2σd2(ik)2+(jl)22σr2f(i,j)f(k,l)2)

2、matlab程序实现

双边滤波实现函数:

%适用于单通道图像的双边滤波程序function B = Bilater_Gray(A,w,sigma_d,sigma_r)%输出参数:% A为待滤波图像(double类型,取值在[01]% w为滤波窗口的半径(e.g:3*3窗口的w值为1,w=3时的滤波效果较好)% sigma_d为定义域(空间域)核的方差,通常设置为3% sigma_r为值域核的方差,通常设置为0.1%输出参数:% B为滤波后的图像
% 预先计算高斯距离权重
[X,Y] = meshgrid(-w:w,-w:w);
%创建核距离矩阵,e.g.
%  [x,y]=meshgrid(-1:1,-1:1)
% 
% x =
% 
%     -1     0     1
%     -1     0     1
%     -1     0     1
% 
% 
% y =
% 
%     -1    -1    -1
%      0     0     0
%      1     1     1
%计算定义域核
G = exp(-(X.^2+Y.^2)/(2*sigma_d^2));%计算值域核H 并与定义域核G 乘积得到双边权重函数F
dim = size(A);
B = zeros(dim);
for i = 1:dim(1)for j = 1:dim(2)% 确定作用区域iMin = max(i-w,1);iMax = min(i+w,dim(1));jMin = max(j-w,1);jMax = min(j+w,dim(2));%定义当前核所作用的区域为(iMin:iMax,jMin:jMax)I = A(iMin:iMax,jMin:jMax);%提取该区域的源图像值赋给I%计算值域核H.H = exp(-(I-A(i,j)).^2/(2*sigma_r^2));% Calculate bilateral filter response.F = H.*G((iMin:iMax)-i+w+1,(jMin:jMax)-j+w+1);%在计算边缘部分的点的时候H的大小会变化,例如在计算第一行第一列的点时,%H的大小为4*4,因为7*7的其余部分都在图像外面(没有对应的值)。%因此适当的对G进行裁切使得G的大小始终能和H对上B(i,j) = sum(F(:).*I(:))/sum(F(:));end
end

主程序中调用:

%双边滤波主程序
clear all;
close all;
clc;
% 输入图像
fname   = 'Images\lena.jpg';   #改成你要操作的图像
X = double(rgb2gray(imread(fname)))/255;
% 开始滤波
Y = Bilater_Gray(X,3,3,0.1);%获取细节层,即:被过滤的部分
Z = X - Y;%结果显示
figure; imshow(X,[]);
figure; imshow(Y,[]);
figure; imshow(Z,[]);
%因为Z中有负值,所以最终强制以图片的形式显示的时候为灰色(正常现象)

结果展示:


http://chatgpt.dhexx.cn/article/s2Efa8OD.shtml

相关文章

双边滤波器的原理及实现

双边滤波器是什么? 双边滤波(Bilateral filter)是一种可以保边去噪的滤波器。之所以可以达到此去噪效果,是因为滤波器是由两个函数构成。一个函数是由几何空间距离决定滤波器系数。另一个由像素差值决定滤波器系数。可以与其相比较的两个filter:高斯低通滤波器(http://en…

双边滤波原理浅析

前言 双边滤波(Bilateral filtering)是一种结合了图像像素空间位置关系和像素值大小的非线性组合的保边滤波算法,无需迭代计算,操作简单。从原理上讲,图像领域的滤波通常意义是希望去除噪声,使图像更加平滑…

双边滤波(Bilateral Filter)详解

原理分析: 双边滤波与高斯滤波器相比,对于图像的边缘信息能过更好的保存。其原理为一个与空间距离相关的高斯函数与一个灰度距离相关的高斯函数相乘。 空间距离:指的是当前点与中心点的欧式距离。空间域高斯函数其数学形式为: 其中(xi,yi)为当前点位置,(xc,yc)为中心点…

双边滤波和双边网格

双边滤波 双边滤波器也是一种保边滤波器.和导向图滤波器一样,可以达到在平坦区域进行均值(高斯)滤波的效果,在边缘不进行滤波的效果.其原理为一个与空间距离相关的高斯函数与一个灰度距离相关的高斯函数相…

bilateral filter双边滤波器的通俗理解

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

Bilateral Filtering(双边滤波) for SSAO

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

双边滤波与高斯滤波

高斯滤波原理 在数字图像中的高斯噪声主要来源出现在采集期间。由于不良照明或高温引起的传感器噪声。如果一个噪声,它的幅度分布服从高斯分布,而它的功率谱密度又是均匀分布的,则称它为高斯白噪声。高斯滤波器是一种线性滤波器,…

双边滤波(bilateral filter)以及联合双边滤波(joint bilateral filter)

文章目录 双边滤波理论公式代码(C)数学辅助理解 联合双边滤波(joint bilateral filter)参考链接 写在最后 双边滤波 自用备忘,若侵则删。 理论公式 利用二维高斯函数生成空间域核,一维高斯函数生成颜色域…

双边滤波(Bilateral filter)

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

双边滤波器cv2.bilateralFilter

双边滤波器cv2.bilateralFilter 双边滤波是综合考虑空间信息和色彩信息的滤波方式,在滤波过程中能够有效地保护图像内的边缘信息,双边滤波在计算某一个像素点的新值时,不仅考虑距离信息(距离越远,权重越小&#xff09…

opencv-双边滤波

一、双边滤波原理 双边滤波(Bilateral Filter)是非线性滤波中的一种。这是一种结合图像的空间邻近度与像素值相似度的处理办法。在滤波时,该滤波方法同时考虑空间临近信息与颜色相似信息,在滤除噪声、平滑图像的同时,…

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