【阅读笔记】《基于区间梯度的联合双边滤波图像纹理去除方法》

news2025/1/3 1:06:11

一、联合双边滤波背景

联合双边滤波(Joint Bilateral Filter, JBF)是一种图像处理技术,它在传统的双边滤波(Bilateral Filter, BF)基础上进行了改进,通过引入一个引导图(guidance image)来优化滤波过程。

双边滤波因其在平滑图像的同时能够保持边缘信息而受到广泛关注。然而,双边滤波在某些情况下会出现不稳定性,尤其是在边缘附近。为了解决这一问题,联合双边滤波被提出,它通过引入一个引导图来改进滤波过程。

二、 原理

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

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 是待处理的图像, X ^ \hat X X^是引导图,i,j 分别是图像中的像素位置, W i W_i Wi 是归一化系数。

其中, σ 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像素之间的欧氏距离

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

3. 实现

在OpenCV的contrib模块中,提供了联合双边滤波的API:jointBilateralFilter。该函数的参数包括引导图、待滤波的图像、滤波后的图像、像素邻域直径、灰度域sigma和空间域sigma。以下是Python语言的实现示例:

import cv2 as cv
src = cv.imread("image.jpg", cv.IMREAD_GRAYSCALE)  # 待滤波的图像
joint = cv.imread("joint_image.jpg", cv.IMREAD_GRAYSCALE)  # 引导图
dst = cv.ximgproc.jointBilateralFilter(joint, src, 9, 75, 75)  # 联合双边滤波
cv.imshow("Filtered Image", dst)
cv.waitKey(0)
cv.destroyAllWindows()

4. 应用效果

联合双边滤波在图像去噪的同时,能够更好地保留图像的边缘和纹理信息。相比于传统的双边滤波,联合双边滤波在处理含有复杂纹理的图像时,能够获得更清晰的边缘和更平滑的背景。下图依次是添加标准差为0.001的高斯滤波图、双边滤波处理图、联合滤波处理图

原始图
双边滤波结果
联合双边结果

5. 结论

联合双边滤波作为一种有效的图像去噪技术,通过引入引导图信息,提高了滤波的稳定性和效果。它在图像处理领域具有广泛的应用前景,尤其是在需要保持图像边缘信息的场景中。

测试程序链接如下:

https://github.com/AomanHao/Matlab-Image-Denoise/tree/master/Bilateral%20Filtering%20advanced

参考文献

《基于区间梯度的联合双边滤波图像纹理去除方法》


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

我的CSDN主页,欢迎访问

我的GitHub主页,欢迎访问

我的知乎主页,欢迎访问

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Dockerfile基础指令

1.FROM 基于基准镜像(建议使用官方提供的镜像作为基准镜像,相对安全一些) 举例: 制作基准镜像(基于centos:lastest) FROM cenots 不依赖于任何基准镜像 FROM scratch 依赖于9.0.22版本的tomcat镜像 FROM…

Linux实验报告9-进程管理

目录 一:实验目的 二:实验内容 (1)列出当前系统中的所有进程,如何观察进程的优先级? (2)查看当前终端运行的 bash 进程的 PID,在当前终端启动 vim 编辑器并让其在后台执行,然后列出在当前终端中执行的进程的家族树。 (3)请自行挂载U盘或光盘,然后…

活动预告 |【Part1】Microsoft Azure 在线技术公开课:数据基础知识

课程介绍 参加“Azure 在线技术公开课:数据基础知识”活动,了解有关云环境和数据服务中核心数据库概念的基础知识。通过本次免费的介绍性活动,你将提升在关系数据、非关系数据、大数据和分析方面的技能。 活动时间:01 月 07 日…

笔记本电脑驱动下载并安装

自己的电脑是鸡哥家的,经常出现没有声音、炸麦、麦克风没有音频输入等问题 最快的解决办法就是更新驱动 但是现在市面上好多驱动检测安装软件都已经开始收费了(xx人生、xx精灵)很恶心 所以不妨自己寻找驱动并重新安装 1.驱动下载 最好是去…

手机实时提取SIM卡打电话的信令声音-双卡手机来电如何获取哪一个卡的来电

手机实时提取SIM卡打电话的信令声音 --双卡手机来电如何获取哪一个卡的来电 一、前言 前面的篇章《手机实时提取SIM卡打电话的信令声音-智能拨号器的双SIM卡切换方案》中,我们论述了局域网SIP坐席通过手机外呼出去时,手机中主副卡的呼叫调度策略。 但…

人工智能及深度学习的一些题目(二)

1、【单选题】 不属于语音识别预处理的步骤是哪个? 去重 2、HSV,H是色调,S是饱和度,V是亮度。 3、【填空题】 语音信号预处理中( 预加重 )的目的是为了对语音的高频部分进行加重,去除口唇辐射的…

关于今天发现的一个bug

一个输入框,定义只能输入0-100的数字 经过测试没有问题。 在回归的时候偶然发现,在输入数字7,点击保存以后,再次打开,发现竟然显示 经过查资料发现: // 关于js失精算法你都遇到哪些,让我们一起来…

力扣-数据结构-7【算法学习day.78】

前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?建议灵神的题单和代码随想录)和记录自己的学习过程,我的解析也不会做的非常详细,只会提供思路和一些关…

oscp备战系列-Kioptrix2014

文章目录 一、信息收集二、漏洞探测三、漏洞利用四、后渗透 一、信息收集 主机探测 nmap 192.168.30.0/24 -sP端口及版本探测 nmap 192.168.30.199 -sV可以看到开放了80,8080端口,采用apache 2.2.21 mod_ssl2.2.21 openssl0.9.8q WebDAV2 php5.3.8 O…

SonarQube相关的maven配置及使用

一、maven 全局配置 <settings><pluginGroups><pluginGroup>org.sonarsource.scanner.maven</pluginGroup></pluginGroups><profiles><profile><id>sonar</id><activation><activeByDefault>true</acti…

mac系统vsCode中使用Better Comments在.vue文件里失效

问题&#xff1a;关于Better Comments默认在html、TS、JS中有效&#xff0c;在vue中无效,需要单独进行配置 windows系统可以参考友链Better Comments&#xff08;注释高亮&#xff09;在vue文件里失效的问题 关于Better Comments电脑的配置路径&#xff1a; Windows系统&…

Maven项目中不修改 pom.xml 状况下直接运行OpenRewrite的配方

在Java 的Maven项目中&#xff0c;可以在pom.xml 中配置插件用来运行OpenRewrite的Recipe&#xff0c;但是有一些场景是希望不修改pom.xml 文件就可以运行Recipe&#xff0c;比如&#xff1a; 因为不需要经常运行 OpenRewrite&#xff0c;所以不想在pom.xml 加入不常使用的插件…

命令行之巅:Linux Shell编程的至高艺术(上)

文章一览 前言一、shell概述1.1 shell的特点和类型1.1.1 **shell的特点&#xff1a;**1.1.2 常用shell类型 1.2 shell脚本的建立和执行1.2.1 建立shell脚本1.2.2 执行shell脚本的方式1.2.3 shell程序实例 二、shell变量与算数运算2.1 简单shell变量2.1.1 简单变量定义和赋值2.1…

深度学习:基于MindSpore NLP的数据并行训练

什么是数据并行&#xff1f; 数据并行&#xff08;Data Parallelism, DP&#xff09;的核心思想是将大规模的数据集分割成若干个较小的数据子集&#xff0c;并将这些子集分配到不同的 NPU 计算节点上&#xff0c;每个节点运行相同的模型副本&#xff0c;但处理不同的数据子集。…

Docker Run使用方法及参数详细说明

Docker Run使用方法及参数详细说明 基本语法常用参数使用示例总结Docker Run是Docker中最基本的命令之一,用于创建并启动一个新的容器。通过Docker Run,用户可以基于指定的镜像创建一个容器实例,并且可以配置容器的各种参数,如网络设置、存储选项等。下面将详细介绍Docker …

QTDemo:串口调试工具

项目简介 本项目通过QT框架设计一款可以在Windows、Linux等平台的跨平台串口助手&#xff0c;串口功能能够满足基本的调试需求。 本项目采用的版本为&#xff1a;QT5.14 visual studio 2022 进行开发。 项目源码&#xff1a;https://github.com/say-Hai/MyCOMDemo 项目页面&am…

【K8S问题系列 | 21 】K8S中如果PV处于Bound状态,如何删除?【已解决】

在Kubernetes&#xff08;K8S&#xff09;的存储管理体系中&#xff0c;持久卷&#xff08;PersistentVolume&#xff0c;PV&#xff09;是一种重要的资源&#xff0c;它为Pod提供了持久化存储能力。当PV处于Bound状态时&#xff0c;意味着它已经与某个持久卷声明&#xff08;P…

【行业发展报告】2024大数据与智能化行业发展浅析

回首 2024&#xff0c;大数据智能化浪潮汹涌。海量数据宛如繁星&#xff0c;在智能算法的苍穹下汇聚、碰撞&#xff0c;释放出洞察市场与用户的强大能量&#xff0c;精准勾勒出商业新航线。我们精心雕琢技术架构&#xff0c;从数据存储的坚固基石到处理分析的高效引擎&#xff…

Mumu模拟器12开启ADB调试方法

在使用安卓模拟器进行开发或调试时&#xff0c;ADB&#xff08;Android Debug Bridge&#xff09;是一项不可或缺的工具。大多数模拟器默认开启了ADB调试功能&#xff0c;但在安装最新版的 Mumu模拟器12 时&#xff0c;可能会遇到 adb devices 无法识别设备的问题。 问题描述 …

金融租赁系统的创新发展与市场竞争力提升探讨

内容概要 随着经济的快速发展&#xff0c;金融租赁系统逐渐成为金融市场中不可或缺的一环。它不仅提供了灵活的资金解决方案&#xff0c;还促进了企业的资本结构优化与资源配置效率。因此&#xff0c;了解该系统的市场背景与发展现状至关重要。 在现今环境下&#xff0c;新兴…