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

article/2025/10/26 5:59:00

摘要:
双边滤波(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)的像素值。也就是我们的滤波输出,我们将小框从左往右,从上往下不断移动,按照我们的算法不断更新方框中心的像素值,就得到了双边算法的输出。
好了,我讲完了,你听懂了吗?有问题可以留言,我会积极回答的。


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

相关文章

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文件夹下: 有兴趣的就可以开始研究源码了。

jQuery源码阅读

1. 立即执行函数 简化后的代码就是这样 (function(global, factory) {... })(window, function () {}); Q:采用立即执行函数的好处是什么呢? A: 通过定义一个匿名函数,创建了一个新的函数作用域,相当于创建了一个私有的命名空…

jQuery -- jQuery源码(一):核心功能

一、jQuery无new构建实例 1、$就是jQuery的别称 可以在$和jQuery对象挂在在window中,实现全局引用。 给Windows对象扩展一个$的属性,让它拿到jQuery构造函数的引用 可以用$访问到jQuery的构造函数 // jQuery.js (function(root) {var jQuery functio…

制作一个游戏编辑器玩玩(1)

今天准备着手例用空闲时间制作一个游戏编辑器,一是因为这些年来积累了不少的算法和制作经验,它们是分散的,零乱的,想搞一次规整。二是自己一起想做一个简单点的游戏编辑器,可以让自己的小朋友把自己的想法在上面实现&a…

游戏策划的软件与工具

游戏策划的软件与工具 UXplayer https://www.jianshu.com/p/ceddde705933 gongjutitle.png 本文修改自前公司的一份交接文档,分享了工作中一些常用的软件。 Axure 界面示意图/流程图制作软件 大前提:Windows系统、无法直连外网 Mac系统的话,…

Tiled游戏地图编辑器

下载 软件是免费的,直接官网下载就好了 下载链接:https://www.mapeditor.org/ 新建地图 左上角 >> 文件 >> 创建新地图 快捷键:ctrln 根据你的需求设置地图大小 导入素材新建图块集 左上角 >> 文件 >> 新图块 新建你的图集文件.png 如果你已…

Android游戏开发之地图编辑器的使用以及绘制地图 (四)

雨松MOMO带你走进游戏开发的世界之地图编辑器的使用以及绘制地图 雨松MOMO原创文章如转载,请注明:转载至我的独立域名博客雨松MOMO程序研究院,原文地址:http://www.xuanyusong.com/archives/211 Mappy中文地图编辑器的使用说明下载地址&#…

编辑器

问题描述 你现在要实现一个针对于数字序列的编辑器。 初始的时候,序列是空的。 在之后,有以下五种操作: I x 在光标之后插入x D 删除光标之前的数字 L 将光标向左移动,如果已经在最左,则不移动 R 将光标向右移动&#…

代码编辑器

文章来源:几款非常优秀且常用的代码编辑器 ... VS CodeSource InsightVimUltraEditeclipseUnderstandAtomSublime Text 对于软件开发人员,代码编辑器好用与否直接影响代码编辑的效率。软件开发,基本上都有集成开发环境(IDE&#x…

Unity的编辑器

1大部分人Unity编辑器是vistual 2.变量 2.1新建C#文件 鼠标点击Assets-->再点击create-->点击C#Sprite 2.2先用鼠标点击游戏物体(Cube)将c#文件拖拽到Inspector下,双击C#文件可以进入编写代码 2.3变量 public 变量类型 变量; //公有属性在Inspector下可…

游戏编辑器框架

原文:http://www.cnblogs.com/winsonchen/archive/2008/03/29/1128575.html 《游戏创造》08年第二期有一篇关于“wxWidget游戏编辑器框架”开发的文章,作者使用过unreal引擎,熟悉unreal编辑器实现细节。该作者建议采用wWidget开发…

RPG++——游戏编辑器的开发

完整资料进入【数字空间】查看——baidu搜索"writebug" 随着当下电子设备的普及以及人们对娱乐需求的上升,电子游戏逐渐走进千家万户。RPG(角色扮演)游戏作为最经典的游戏种类之一,因其游戏形式多样,自由度…

RPG或SLG游戏在线地图编辑器

有做大型RPG或SLG游戏需求的朋友请进,有在线地图编辑器 我凭借多年的游戏开发经验,用cocoscreator2.13开发了一款web在线地图编辑器,暂且命名为EasyMapEditor,用Google浏览器打开,提供了从在线地图编辑到正式项目运行…

游戏编辑器制作(10)

差不多一年左右没有更新了,今天把这段时间的工作内容记录一下,从上一篇开始,制了很多相关功能,花了很多时间研究了RTS游戏的结构部分,也研究了RVO,还有些著名的开源游戏代码。自己实现了自己的rtssim(RTS模…

从零开始入门创作游戏——Unity编辑器的使用

还没找到工作的我继续瞎折腾中,上次搭建环境就花了我3天的时间 从零开始入门创作游戏——Unity3d的环境搭建_默哀d的博客-CSDN博客 接下来是根据油土鳖的视频学习创作的一个小恐龙跳跳跳游戏,直接上手做一次学得更多 https://www.youtube.com/watch?…

[转]2d游戏开发:游戏地图编辑器

2d游戏开发:游戏地图编辑器 akinggw 金桥信息 2006-06-15 游戏地图编辑器 作者:akinggw 朋友们,大家好! 今天,我们将讲解游戏开发中一个重要的工具DD“游戏地图编辑器”。 几乎任何一款商业游戏都有自己的游戏地图编辑器&am…