图像降噪算法 BM3D 介绍

介绍

BM3D 是 “Block-Matching and 3D Filtering” 的缩写,即三维块匹配滤波,它是一种用于图像去噪的算法。该算法来源于 一篇“Image and video denoising by sparse 3D transform-domain collaborative filtering”的高质量文章,文章的作者是 Kostadin Dabov、Alessandro Foi、Vladimir Katkovnik 和 Karen Egiazarian,发表在 IEEE Transactions on Image Processing 2007年9月刊上。

BM3D 算法基于两个主要步骤:块匹配(Block-Matching)三维变换滤波(3D Filtering)。这种算法在图像处理领域非常著名,因为它能够有效地去除图像中的噪声,同时保留图像的细节。

BM3D 算法已经有很多的衍生版,比如CBM3D彩图、VBM3D时域、BM4D、CBM4D。
在这里插入图片描述

  • 项目地址:https://webpages.tuni.fi/foi/GCF-BM3D/
  • git 代码:https://github.com/gfacciol/bm3d
  • 论文下载地址:https://download.csdn.net/download/yanceyxin/89273068
  • 在线测试平台:https://www.ipol.im/pub/art/2012/l-bm3d/
  • 相关软件如下图。
    在这里插入图片描述

原理

该算法框图如下,中心思想充分利用自然图像中丰富的自相似结构来进行图像降噪;主要分为两步,第一部基础估计;第二步最终估计,使用基本估计,执行改进的分组和协作维纳过滤。
在这里插入图片描述

  1. 基础估计:
  • 基于块的估计。对于噪声图像中的每个块,执行以下操作:
    • i) 分组。找到与当前处理的块相似的块,然后将它们堆叠在一个3D数组(组)中。
    • ii) 协同硬阈值化。对形成的组应用3D变换,通过对变换系数进行硬阈值化来衰减噪声,反转3D变换以产生所有分组块的估计,并将块的估计返回到其原始位置。
  • 聚合。对所有重叠的分块估计值进行加权平均,计算真实图像的基本估计值。
  1. 最终维纳估计:
    • 基于块的估计。对于噪声图像中的每个块,执行以下操作:
      • 块匹配Grouping。在基本估计中使用BM找到与当前处理的块相似的块的位置。利用这些位置,形成两组(3D数组),一组来自噪声图像,一组来自基本估计。
      • 3D协同维纳滤波 Collaborative Filtering。对两个组应用3D变换。使用基本估计的能量谱作为真实(导频)能量谱对有噪声的进行维纳滤波。通过对滤波后的变换系数应用3D逆变换产生所有分组块的估计,并将块的估计返回到其原始位置。
    • 聚合加权滤波Aggregation。通过使用加权平均值聚合所有获得的局部估计,计算真实图像的最终估计。

结果展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码示例

git 上开源的 c++实现 BM3D 算法示例,作者gfacciol,可参考代码研究算法具体实现。
在这里插入图片描述

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

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

相关文章

【刷题】代码随想录算法训练营第三十一天|455、分发饼干,376、摆动序列,53、最大子序和

目录 455、分发饼干376、摆动序列53、最大子序和 455、分发饼干 讲解&#xff1a;https://programmercarl.com/0455.%E5%88%86%E5%8F%91%E9%A5%BC%E5%B9%B2.html class Solution { public:int findContentChildren(vector<int>& g, vector<int>& s) {sort(…

原创度高!性能好!|基于信息共享与黄金搜索的改进星鸦优化算法在50+个函数上进行测试(Matlab)

文章来源于我的个人公众号&#xff1a;KAU的云实验台&#xff0c;主要更新智能优化算法的原理、应用、改进 前面的文章中&#xff0c;KAU介绍了星鸦优化算法(Nutcracker Optimization Algorithm&#xff0c;NOA)[1]&#xff0c;NOA算法模拟了星鸦觅食、存储以及缓存搜索、恢复…

如何高效筹备水力发电乙级资质申请材料

1. 明确资质要求 研究最新政策&#xff1a;首先&#xff0c;彻底研究最新的资质申请指南、政策文件和标准要求&#xff0c;确保每一步操作都符合当前规定。理解细节&#xff1a;详细理解资质标准中的每一项要求&#xff0c;包括企业资质、人员配置、技术条件、设备设施等。 2…

docker启动clickhouse全流程操作

1、拉取clickhouse的镜像 docker pull clickhouse/clickhouse-server2、启动clickhouse容器 docker run \ -p 8123:8123 \ -p 3500:9000 \ --name clickhouse-server \ --ulimit nofile262144:262144 \ -e CLICKHOUSE_DBdefault \ -e CLICKHOUSE…

SSL证书中DV、OV和EV有什么区别,又该如何选择

SSL&#xff08;安全套接层&#xff09;证书作为一种加密工具&#xff0c;确保了网站与其用户之间传输的信息的安全性。而在选择SSL证书时&#xff0c;我们通常会看到三种类型&#xff1a;域名验证&#xff08;DV&#xff09;、组织验证&#xff08;OV&#xff09;和扩展验证&a…

Nacos高频面试题及参考答案(2万字长文)

目录 Nacos是什么?它的主要功能有哪些? Nacos在微服务架构中扮演什么角色?

学习前端第三十天(解构赋值,日期和时间)

一、解构赋值 解构赋值 是一种特殊的语法&#xff0c;它使我们可以将数组或对象“拆包”至一系列变量中。 1、数组解构 // 数组解构let arr [c, xx, "dwdw"];let [a, b] arr;console.log(a, b); &#xff08;1&#xff09;它“拆开”了数组或对象&#xff0c;将其…

信息系统项目管理师0090:项目经理的影响力范围(6项目管理概论—6.3项目经理的角色—6.3.2项目经理的影响力范围)

点击查看专栏目录 文章目录 6.3.2项目经理的影响力范围1.概述2.项目3.组织4.行业5.专业学科6.跨领域6.3.2项目经理的影响力范围 1.概述 项目经理在其影响力范围内可担任多种角色,这些角色反映了项目经理的能力,体现了项目经理的价值和作用,项目经理会涉及项日、组织、行业、…

免费开源论坛社区社交圈子系统,圈子系统,系统开发,支持二开,包含公众号/app/H5,源码交付!

一款追求体验的社区论坛圈子系统 什么是圈子交友系统&#xff1f; 圈子交友系统(多客开源圈子系统)为会员提供精准交友服务 结合多种营销机制为创业者提供低成本、高效获取注册会员&#xff0c;是婚恋交友行业的创业利器&#xff01; 多类型内容形式 多场景应用 精准推广、直…

vue cli 自定义项目架子,vue自定义项目架子,超详细

脚手架Vue CLI基本介绍&#xff1a; Vue CLI 是Vue官方提供的一个全局命令工具 可以帮助我们快速创建一个开发Vue项目的标准化基础架子【集成了webpack配置】 脚手架优点&#xff1a; 开箱即用&#xff0c;零配置内置babel等工具标准化的webpack配置 脚手架 VueCLI相关命令…

拼多多标准推广二阶段跑不动怎么办

拼多多推广可以使用3an推客。3an推客&#xff08;CPS模式&#xff09;给商家提供的营销工具&#xff0c;由商家自主设置佣金比例&#xff0c;激励推广者去帮助商家推广商品链接&#xff0c;按最终有效交易金额支付佣金&#xff0c;不成交不扣费。是商家破零、积累基础销量的重要…

mysql 按字段查询重复的数据

在 MySQL 中&#xff0c;可以使用多种方法来查询按字段重复的数据。以下是一些最常用的方法&#xff1a; 1. 使用 GROUP BY 和 HAVING 子句 SQL SELECT column_name, COUNT(*) AS count FROM table_name GROUP BY column_name HAVING count > 1; Use code with caution. …

MongoDB(四):条件操作符

条件操作 1、概述2、比较操作2.1、大于操作符-$gt2.2、大于等于操作符-$gte2.3、小于——$lt2.4、小于等于——$lte2.5、范围查询 3、总结 大家好&#xff0c;我是欧阳方超&#xff0c;可以扫描下方二维码关注我的公众号“欧阳方超”&#xff0c;后续内容将在公众号首发。 1、…

程序员的实用神器:高效开发与质量保证的秘诀

程序员的实用神器&#xff1a;高效开发与质量保证的秘诀 在软件开发的海洋中&#xff0c;程序员的实用神器如同航海中的指南针&#xff0c;帮助他们导航、加速开发、优化代码质量&#xff0c;并最终抵达成功的彼岸。这些工具覆盖了从代码编写、版本控制到测试和部署的各个环节…

数据分析的数据模型

数据分析的数据模型 前言一、优化模型1.1线性优化模型1.1.1线性优化模型定义1.1.2线性优化模型求解算法1. 1.2.1图解法1. 1.2.2. 单纯形法 1.1.3 线性优化模型的应用 1.2非线性优化模型1.2.1非线性优化模型定义1.2.2非线性优化划模型求解方法1. 2.2.1有约束非线性模型算法1.2.2…

ThinkPHP8导出Excel单元格为下拉选择框

说明 本文章是基于上一篇ThinkPHP8 导出Excel数据表格文章的完善版&#xff0c;上一篇仅导出为文本框&#xff0c;此处增加下拉框。 其他内容与上一章不变&#xff0c;此处展示不同内容。 更改 1.头部数组修改 增加type类型&#xff0c;text为文本框&#xff0c;select为下…

已解决java.util.IllegalFormatConversionException异常的正确解决方法,亲测有效!!!

已解决java.util.IllegalFormatConversionException异常的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 目录 问题分析 报错原因 示例报错代码&#xff1a; 解决思路 解决方法 检查和更正格式说明符 示例修正代码&#xff1a; 调整参数类型…

【Linux 基础 IO】文件系统

文章目录 1.初步理解文件2. fopen ( )的详解 1.初步理解文件 &#x1f427;① 打开文件&#xff1a; 本质是进程打开文件&#xff1b; &#x1f427;②文件没有被打开的时候在哪里呢&#xff1f; ----- 在磁盘中&#xff1b; &#x1f427;③进程可以打开很多个文件吗&#xff…

1329. 将矩阵按对角线排序

1329. 将矩阵按对角线排序 题目链接&#xff1a;1329. 将矩阵按对角线排序 代码如下&#xff1a; //参考&#xff1a;https://leetcode.cn/problems/sort-the-matrix-diagonally/solutions/2760094/dui-jiao-xian-pai-xu-fu-yuan-di-pai-xu-p-uts8 class Solution { public:v…

Android Ant编译环境配置(Win)

1、 载ant包: 2、设置环境变量&#xff1a; 3、检查是否设置成功及版本 4、执行命令&#xff1a; android update project -p . -n “projectname”&#xff08;例如&#xff1a;android update project --target 1 -p . -n “Couplet”&#xff09;(只输入红色部分也是可以的…