IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> BM3D 去噪算法原理解析与代码实现 -> 正文阅读

[人工智能]BM3D 去噪算法原理解析与代码实现

BM3D 去噪算法是来自于这篇论文《Image Denoising by sparse 3-D Transform-Domain Collaboarative Filtering》。原文地址:

https://www.researchgate.net/publication/6151802_Image_Denoising_by_Sparse_3-D_Transform-Domain_Collaborative_Filteringhttps://www.researchgate.net/publication/6151802_Image_Denoising_by_Sparse_3-D_Transform-Domain_Collaborative_Filtering本文主要首先介绍BM3D算法的实现原理,然后会用代码对BM3D进行算法实现,观察BM3D算法的去噪效果。

一?BM3D算法解析

首先先介绍本算法中涉及到的两个基本概念:分组和协同滤波。

(1)分组

首先我们会对输入的噪声图像进行分块。会选取一些参考块,然后在一定范围内搜索待匹配块,计算待匹配块与参考块之间的相似性,根据相似性的多少进行分组。其中相似性的计算可以利用块之间距离的倒数来衡量,常用的距离包括欧式距离等。同事我们需要设定一个阈值,当相似性大于阈值的时候,才会将带匹配块入组。如下图1所示:

?图1 来自带噪声的自然图像的块分组图示,每个片段标有“R”的位参考块,其余块为与其匹配的一些块。

(2) 协同滤波

给定一组n个片段,该组的协同过滤产生n次估计,每个分好组的片段一次。通常,这些估计可能不同。术语“协同”是从字面上理解的,即每个分好组的片段协同过滤其他片段,反之亦然。

考虑一个用协同滤波估计图2中的由加性零均值独立噪声破坏图片的说明性示例。特别的,关注同一图中所示的已经分组的块。这些块表现出完美的相互相似性,这使得元素平均成为合适的估计器。因此,对于每一个组,通过协同平均的方法就可以产生所有分组的估计。因为假设相应的无噪声块是相同的,所以估计是无偏的。因此,最终估计误差仅归因于与组中的块数成反比的残差方差。只要这些组包含大量片段,无论信号有多复杂,都可以获得很好的估计。

图2 在人工绘制的图像中分组的简单示例,其中基于每个参考快(带有粗边框),存在完全相似的参考块

但是,在自然图像中不太可能存在完全相同的块。如果在同一组内允许估计不相同的片段,则通过元素平均获得的估计变得有偏差。除非使用允许对每个分组片段产生不同估计的估计器,否则偏差误差有可能占总体最终误差的最大份额。因此,应采用比平均更有效的协同过滤策略。

变换域中收缩的协同滤波

有效的协同滤波可以通过在变换域中的收缩来实现。假设已经形成了类似信号片段的d+1维组,则协同收缩包括以下步骤。

  • 将d+1维线性变换应用于该组。
  • 收缩(例如通过软阈值和硬阈值或维纳滤波)变换系数以衰减噪声。
  • 反转线性变换以生成所有分组片段的估计值。

接下来就是介绍BM3D中的具体算法流程。

本文算法中,分组是通过块匹配实现的,而协同滤波是通过在3D变换域中收缩来实现的。使用的图像片段是固定大小的正方形块。该算法中执行的一般过程如下,通过从输入噪声中一次提取参考块并对每个这样的块进行处理:

  • 查找与参考块相似的块(块匹配),并将它们堆叠在一起以形成3D阵列(组)
  • 对群组执行协同过滤,并将获得的所有分组块的2D估计值返回到其原始位置。

在处理所有参考块之后,获得的块估计可能重叠,银簇每个像素有多个估计。我们汇总这些估算值已形成这呢个图像的估算值。此此通用过程以两种不同的形式实现,以组成一个两步算法。此算法在图3中进行了说明,其过程如下:

步骤1.初步估计

? ? ? ? a) 块估算。对于嘈杂图像中的每一个块,清执行以下操作。

? ? ? ? ? ? ? ? i) 分组。查找与当前处理块相似的块,然后将它们堆叠在一起形成3D数组。

? ? ? ? ? ? ? ? ii) 协同性硬阈值。将3D变换应用于所形成的数组,通过变换系数进行硬阈值来衰减噪声,将3D变换反转以生成所有分组块的估计,并将这些块的估计返回到原始位置。

? ? ? ? b) 聚集。通过对所有获得的重叠的块估计进行加权平均,计算出真实图像的初步估计值。

步骤2. 最终估计:基于初步估计,进行改进的分组和协同维纳滤波。

? ? ? ? a) 块级估计。对于每个块,请执行以下操作。

? ? ? ? ? ? ? ? i) 分组。在基本估算范围内使用BM查找与当前处理的块相似的块的位置。使用这些位置,形成两组(3D阵列),一组来自于噪声图像,另一组来自于基本估计。

? ? ? ? ? ? ? ? ii) 协同维纳过滤。在两个组上应用3D变换。使用关于真实能谱的基本估计值的能谱对有噪声的组进行维纳滤波。通过对滤波后的系数应用逆3D变换来生成所有分组块的估计,并将块的估计返回到其原始位置。

? ? ? ? b) 聚集。通过使用加权平均值汇总所有获得的局部估计,计算出真实图像的最终估计。上面算法的第二步有两个重要动机:

使用基本估计我不是嘈杂的图像可以通过块匹配来改善分组

使用基本估计作为经验维纳滤波的导频信号比对噪声数据的3D频谱进行简单的硬阈值处理要有效和准确的多。

?图3 本文提出的图像去噪算法的流程图。对于每个处理的块(标记为“R”)重复用虚线包围的操作。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-07-03 10:48:33  更:2022-07-03 10:51:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 0:31:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码