首页IT科技双边滤波器的原理及实现(Bilateral Filters(双边滤波算法)的超简单原理,学不会你打我。)

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

时间2025-07-10 10:37:52分类IT科技浏览5131
导读:摘要: 双边滤波(Bilateral Filters 是非常常用的一种滤波,它可以达到保持边缘、降噪平滑的效果。和其他滤波原理一样,双边滤波也是采用加权平均的方法,用周边像素亮度值的加权平均代表某个像素的强度,所用的加权平均基于高斯分布。最重要的是,双边滤波的权重不仅考虑了像素的欧氏距离(如普通的高斯低通滤波,只考虑了位置对中心像...

摘要: 双边滤波(Bilateral Filters)是非常常用的一种滤波               ,它可以达到保持边缘               、降噪平滑的效果               。和其他滤波原理一样                       ,双边滤波也是采用加权平均的方法        ,用周边像素亮度值的加权平均代表某个像素的强度       ,所用的加权平均基于高斯分布                       。最重要的是                       ,双边滤波的权重不仅考虑了像素的欧氏距离(如普通的高斯低通滤波                ,只考虑了位置对中心像素的影响)       ,还考虑了像素范围域中的辐射差异(例如卷积核中像素与中心像素之间相似程度                       、颜色强度                      ,深度距离等)        。

一:如何判断边缘?

在开始之前                ,我们先讨论一下如何判断边缘       。一般而言,区分图像是否为边缘部分的方法如下:

1:在图像的边缘部分                      ,像素值的变化较为剧烈                       。

2:在图像的非边缘区域                       ,像素值的变换较为平坦                。

通过以上两点,我们可以总结出               ,想要保留图像边缘                       ,必须引入一个能够衡量图像像素变换剧烈程度的变量       。

二:双边滤波算法原理

霍金曾经说过        ,如果一本书里面有一个公式               ,那么这本书的销量将会失去上万个读者                      。本文将出现好几个公式                       ,按这样会有失去许多个读者        ,但是不出现公式是不可能的       ,作者将尽力解释公式的含义                       ,希望看官看过后觉得有用就点一个订阅                。话不多说                ,咱们开门见山。

首先看双边滤波的公式:

其中:

先看到这两个公式不要慌       ,慢慢听我说公式中的符号是什么意思                      。我们先做一些准备                       。

我们选择一个的框                      ,随便放在一张图中。像我这样选择一个5×5的框放在10像素×10像素的图上面               。分别沿水平方向和竖直向下方向建立坐标轴                ,水平的叫X轴,竖直向下的叫Y轴                       。图中一个一个小方框代表一个像素值                      ,这些像素值都有了一个坐标        。咱们举一个例子:在这个5×5的框中                       ,像素为165的这个点坐标为(0,0)               ,像素为156的这个点的坐标为(1                       ,0)        ,像素为56的这个点坐标为(0,1),像素为0的这个点的坐标为(1               ,1)                       ,诸如此类               。

好了        ,现在我们做了一些准备工作       ,接下来解释符号含义就方便了许多                       。q是输入的像素点                       ,它代表上图中5×5的方框中其中的一个像素点        。我们先不管累加符号∑和q∈S这个符号                ,接下来需要一点数学基础       ,

G

σ

s

Gσ_s

Gσs
是为空间域核                      ,

G

σ

r

Gσ_r

Gσr

是图像像素域核       。

这是两个二维高斯函数                ,二维高斯函数的公式为(我在网上找的一张图,带了水印                      ,不过无关紧要):

不过这里我们对二维高斯函数进行了一些小的改动                       ,让他们更加符合我们的要求,这里给出

G

σ

s

Gσ_s

Gσs

G

σ

r

Gσ_r

Gσr

的公式               ,:

其中:

q代表输入像素点                       ,m与n是输入像素的横坐标与纵坐标        ,p是方框中心像素点               ,i与j是方框中心像素的坐标                       ,I(m,n)代表输入像素的值        ,I(i,j)代表方框中心像素的值       ,

σ

s

σ_s

σs

σ

r

σ_r

σr

是我们自己设定的值                       。比如:q代表输入像素                       ,在我们的方框中                ,我们选择像素值为156的点为输入像素       ,那么它的坐标为(1                      ,0)                ,m=1,n=0,I(1,0)=156                。方框中心的点的坐标为(2                      ,2)                       ,那么i=2,j=2,I(2,2)=146       。

(ps:这个图片太大了               ,等我学会插入公式后再来修改一下) 代表输出的像素值                       ,也就是我们在方框中心点要更新的像素值                      。我们现在举一个例子来说明                。

①首先遍历整个5×5的小框        ,第一个遍历到的点是165               ,它的坐标是(0,0),像素值是165                       ,

那么中心点与该点的空间域计算结果为:

②再计算中心点与该点的像素域结果:

σ

s

σ_s

σs

σ

r

σ_r

σr

分别为5和20时        ,Gσs = 0.8521       ,Gσr = 0.6368。

③我们将

σ

s

σ_s

σs

σ

r

σ_r

σr

和第一个像素值(ps:第一个像素值是165)相乘                       ,这三个数相乘得到第一个结果                      。还记得累加符号∑和q∈S符号吗?其中S指的就是5×5的这个框                ,它的意思就是从第一个像素开始遍历       ,按照①②的步骤                      ,求得每一个在5×5方框中的像素的空间域和像素域的结果                ,并且将像素值和空间域计算结果和像素域结果相乘,最后将这些结果相加起来                      ,得到滤波算法公式的分子                       。

好了                       ,我们解释完双边滤波算法的分子,接着解释分母。

当我们遍历整个5x5的方框               ,将方框内每个像素点都与中心点建立联系                       ,求出它们的 Gσs 与 Gσr 的值        ,将 Gσs 与 Gσr 相乘即得到每个点对应的Wp               ,即Wp = Gσs × Gσr                       ,将方框中25个像素点对应Wp进行累加        ,得到一个总的Wp       ,便是分母                       ,我们在计算分子的时候可以顺便算出分母               。我们再来捋一遍                ,在遍历结束后       ,用每个点的Wp乘上该点的像素值I(m, n)                      ,并求和                ,作为分子                       。将每个点的Wp相加,作为分母                      ,两者相除                       ,即得到需要的新输出图像的中心点(i,j)的像素值        。也就是我们的滤波输出               ,我们将小框从左往右                       ,从上往下不断移动        ,按照我们的算法不断更新方框中心的像素值               ,就得到了双边算法的输出               。

好了                       ,我讲完了        ,你听懂了吗?有问题可以留言       ,我会积极回答的                       。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
免费搜狗网站优化(如何使用搜狗站长工具进行网站优化,搜狗站长工具介绍及优势分析) 百度索引量下降的原因有哪些(百度索引量下降的原因是什么)