一、双边滤波空域滤波算法

双边滤波是一种典型的非线性滤波算法。基于高斯滤波,双边滤波利用强度的变化来保存边缘信息,解决了边缘模糊在视觉观感上认为重要信息丢失的问题。双边滤波的滤波效果主要取决于两个参数:两个像素的空间邻近性和灰度相似性。当处于纹理较简单区域时,滤波效果主要受空间邻近度的影响;当处于纹理较复杂及边缘区域时,灰度相似度起决定性作用。但本质上,双边滤波是一种邻域像素加权平均的滤波器,会导致图像特征模糊

1.1 传统双边滤波 (Bilateral Filter,记作 BF)

Y ( i ) = 1 W i ∑ j ∈ S G σ d ( i , j ) G σ r ( X i , X j ) X j Y(i) = \frac{1}{W_{i}}\sum_{j\in{S}}G_{\sigma d}(i,j)G_{\sigma r}(X_i,X_j)X_{j} Y(i)=Wi1jSGσd(i,j)Gσr(Xi,Xj)Xj

其中, X X X 是待处理的图像,i,j 分别是图像中的像素位置, W i W_i Wi 是归一化系数。

W i = ∑ j ∈ S G σ d ( i , j ) G σ r ( X i , X j ) X j W_i=\sum_{j\in{S}}G_{\sigma d}(i,j)G_{\sigma r}(X_i,X_j)X_{j} Wi=jSGσd(i,j)Gσr(Xi,Xj)Xj

其中, σ d \sigma d σd σ r \sigma r σr是高斯参数, G σ d G_{\sigma d} Gσd G σ r G_{\sigma r} Gσr分别表示空间函数和灰度相似度函数,空间函数用来减少远距离像素影响;灰度相似度函数用来减少邻域像素灰度值的影响,函数表示为

G σ d = e − 1 2 ( d ( i , j ) σ d ) 2 G_{\sigma d}=e^{-\frac{1}{2}(\frac{d(i,j)}{\sigma d})^2} Gσd=e21(σdd(i,j))2

G σ r = e − 1 2 ( X i − X j σ r ) 2 G_{\sigma r}=e^{-\frac{1}{2}(\frac{X_i-X_j}{\sigma r})^2} Gσr=e21(σrXiXj)2

其中, d ( i , j ) d(i,j) d(i,j)是i,j像素之间的欧氏距离

1.2 改进双边滤波

与双边滤波相似,都是基于高斯函数来计算像素的权重。不同之处在于,联合双边滤波在计算权重时,不仅考虑了空间距离和像素值差异,还引入了滤波图的信息。具体来说,联合双边滤波的公式如下:

Y ( i ) = 1 W i ∑ j ∈ S G σ d ( i , j ) G σ r ( i ^ , j ^ ) X j Y(i) = \frac{1}{W_{i}}\sum_{j\in{S}}G_{\sigma d}(i,j)G_{\sigma r}(\hat i,\hat j)X_{j} Y(i)=Wi1jSGσd(i,j)Gσr(i^,j^)Xj

其中, X X X 是待处理的图像, i , j i,j i,j 分别是图像中的像素位置, X ^ \hat X X^是滤波图, i , j i,j i,j 分别是滤波图像中的像素位置, W i W_i Wi 是归一化系数。

W i = ∑ j ∈ S G σ d ( i , j ) G σ r ( i ^ , j ^ ) X j W_i=\sum_{j\in{S}}G_{\sigma d}(i,j)G_{\sigma r}(\hat i,\hat j)X_{j} Wi=jSGσd(i,j)Gσr(i^,j^)Xj

其中, σ d \sigma d σd σ r \sigma r σr是高斯参数, G σ d G_{\sigma d} Gσd G σ r G_{\sigma r} Gσr分别表示空间函数和灰度相似度函数,表示为

G σ d = e − 1 2 ( d ( i , j ) σ d ) 2 G_{\sigma d}=e^{-\frac{1}{2}(\frac{d(i,j)}{\sigma d})^2} Gσd=e21(σdd(i,j))2

G σ r = e − 1 2 ( X i ^ − X j ^ σ r ) 2 G_{\sigma r}=e^{-\frac{1}{2}(\frac{\hat{X_i}-\hat{X_j}}{\sigma r})^2} Gσr=e21(σrXi^Xj^)2

其中, d ( i , j ) d(i,j) d(i,j)是i,j像素之间的欧氏距离

与双边的区别在于,联合滤波算法的引导图是低频图像,论文中是用高斯滤波,也可以用引导滤波等算法结果。

二、仿真效果

用测试图进行仿真,测试图本身带一些噪声,对比双边滤波,改进双边滤波使用中档位,边缘保留较好,背景和物体内部噪声抹得比较均匀。

原图

双边滤波

改进双边滤波

三、参考文献:

[1] 一种基于自适应双边滤波的图像降噪算法


我的个人博客主页,欢迎访问

我的CSDN主页,欢迎访问

我的GitHub主页,欢迎访问

我的知乎主页,欢迎访问

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:
http://www.pswp.cn/news/912849.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/912849.shtml
英文地址,请注明出处:http://en.pswp.cn/news/912849.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华为交换机堆叠与集群技术深度解析附带脚本

一、引言 在企业园区网、数据中心等网络场景中,为了提升网络的可靠性、扩展性和管理效率,华为交换机提供了堆叠(Stack)和集群(CSS,Cluster Switch System )技术。这两种技术能够将多台物理交换…

Python网络爬虫(十三)- 数据解析模块 BeautifulSoup

1、BS4简介 BeautifulSoup(简称 BS4) 是一个用于解析 HTML 和 XML 文档的 Python 第三方库。它能够从网页或其他 HTML/XML 格式的文本中提取数据,并将其转换为结构化的对象,方便开发者快速定位、提取和操作所需信息。它的核心功能是通过解析器将无序的标记语言转换为树形结…

如何使用 Pytorch Lightning 启用早停机制

【PL 基础】如何启用早停机制 摘要1. on_train_batch_start()2. EarlyStopping Callback 摘要 本文介绍了两种在 PyTorch Lightning 中实现早停机制的方法。第一种是通过重写on_train_batch_start()方法手动控制训练流程;第二种是使用内置的EarlyStopping回调&#…

深入理解前缀和与差分算法及其C++实现

前缀和与差分是算法竞赛和编程中非常重要的两种技巧,它们能够高效地处理区间查询和区间更新问题。本文将详细介绍这两种算法的原理、应用场景以及C实现。 一、前缀和算法 1.1 前缀和的基本概念 前缀和(Prefix Sum)是一种预处理技术&#x…

HugeGraph【部署】Linux单机部署

注: hugegraph从版本 1.5.0 开始,需要 Java11 运行时环境 一、安装JDK11 1.下载JDK11 https://www.oracle.com/java/technologies/downloads/#java11 2.解压缩包 tar -zxvf jdk-11.0.27_linux-x64_bin.tar.gz 3.修改/etc/profile环境变量 export JAVA_HOME/usr…

C++异步编程里避免超时机制

C标准库中时钟(Clock) 这段内容主要介绍了C标准库中**时钟(Clock)**的概念和分类,以及它们在时间测量中的作用。以下是关键信息的解读: 一、时钟的核心特性 C中的时钟是一个类,提供以下四个基…

npm install安装不成功(node:32388)怎么解决?

如果在执行 npm install 时出现问题,尤其是 node:32388 相关的错误,这通常意味着某些依赖或配置出了问题。这里有一些常见的解决方法,你可以尝试: 1. 清除 npm 缓存 有时候,npm 缓存问题会导致安装失败。你可以清除 …

Ubuntu-18.04-bionic 的apt的/etc/apt/sources.list 更换国内镜像软件源 笔记250702

Ubuntu-18.04-bionic 的apt的/etc/apt/sources.list更换国内镜像软件源 笔记250702 为 Ubuntu 18.04 LTS(代号 Bionic Beaver)更换 /etc/apt/sources.list 为国内镜像源 备份/etc/apt/sources.list文件 sudo cp -a /etc/apt/sources.list /etc/apt/sou…

【运维系列】【ubuntu22.04】安装GitLab

一.下载安装文件 rootgitlab:~# wget https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/9/gitlab-ce-17.4.0-ce.0.el9.x86_64.rpm二.执行安装脚本 2.1 先执行安装前的命令 rootgitlab:~# apt install -y perl-interpreter rootgitlab:~# apt install -y openssh-s…

Cisco ASA防火墙查看ACL的条目数量

这里显示的条目数量为ACE, ACE是啥? ACE全称: access-list entry ACE指的是ACL条目展开后的数量, 啥叫展开? 示例: access-list out-in extend permit tcp80&443 host 1.1.1.1 host 2.2.2.2这种配置是占1条&#…

npm install安装的node_modules是什么

node_modules 是一个由 npm(Node Package Manager)管理的文件夹,存放着你的 Node.js 项目中所有安装的依赖包。当你运行 npm install 时,npm 会根据你的项目中 package.json 文件中的依赖配置,下载并安装相应的包到 no…

【实时Linux实战系列】实时Linux项目的部署与维护

在实时 Linux 项目的开发过程中,开发阶段的工作仅仅是开始,生产环境中的部署与维护同样至关重要。实时 Linux 系统广泛应用于工业自动化、航空航天、智能交通等对实时性和稳定性要求极高的领域。例如,在工业自动化中,实时系统的部…

Go并发模式精要:掌握Goroutine与Channel的实战艺术

在现代软件开发中,有效利用并发能力已成为提升系统性能的关键。Go语言凭借其原生的Goroutine和Channel机制,为开发者提供了优雅的并发解决方案。本文将深入解析Go并发编程的核心模式与最佳实践。 一、并发基石:Goroutine与Channel // 轻量级…

第29篇:Linux审计系统深度解析:基于OpenEuler 24.03的实践指南

Linux审计系统深度解析:基于OpenEuler 24.03的实践指南 文章目录 Linux审计系统深度解析:基于OpenEuler 24.03的实践指南一、Linux审计系统核心概念与组件架构1.1 审计系统核心组件详解1. auditd守护进程:日志持久化引擎2. auditctl命令行工具…

Linux 启动过程流程图--ARM版

以下是ARM版本Linux启动过程的超详细树状图,涵盖硬件上电到应用程序交互的全流程,并包含关键函数调用链及源码位置,适用于系统开发与调试场景: ARM Linux启动全流程(含函数调用链) ARM Linux启动流程&…

NVMe高速传输之摆脱XDMA设计6之系统架构设计

结合目前应用需求,以及前面基础分析,确定IP应具有如下特色: (1) 通用性 前端数据采集系统基于 FPGA 开发。 一方面, 设备类型多, 使用的 FPGA型号各不相同, 需要实现的设计能够在多种…

Mac homebrew 安装教程

下载github安装包 https://github.com/Homebrew/brew/releases/tag/4.5.8 下载安装后 打开 安全里面允许安装,就可以直接使用了

stm32hal模块驱动(1)hpdl1414驱动

之前一直想用hpdl1414画一块手表,前面pcb测试板画完没空调试,最近刚好空出来时间,遂发下驱动。 这里简单赘述hpdl1414的驱动原理:D0-D6负责数据输入(ascii表后7位),A0,A1负责更改hpdl1414模块显…

从代码学习深度强化学习 - TRPO PyTorch版

文章目录 前言核心工具函数广义优势估计 (Generalized Advantage Estimation, GAE)案例一:TRPO 解决离散动作问题 (CartPole-v1)1. 环境初始化2. 网络结构定义3. TRPO 智能体实现4. 训练与可视化5. 训练主程序与结果案例二:TRPO 解决连续动作问题 (Pendulum-v1)1. 环境与工具…

MySQL 升级到8.4版本的详细指南

本指南详细介绍了将 MySQL 升级到 8.4 版本的完整流程、注意事项和操作方法。 一、升级前准备 (3.1 Before You Begin) 在开始升级之前,必须仔细审阅本节信息并执行所有推荐的操作: 理解升级过程:了解升级期间可能发生的情况。请参阅第 3.4…