| |
|
开发:
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维组,则协同收缩包括以下步骤。
接下来就是介绍BM3D中的具体算法流程。 本文算法中,分组是通过块匹配实现的,而协同滤波是通过在3D变换域中收缩来实现的。使用的图像片段是固定大小的正方形块。该算法中执行的一般过程如下,通过从输入噪声中一次提取参考块并对每个这样的块进行处理:
在处理所有参考块之后,获得的块估计可能重叠,银簇每个像素有多个估计。我们汇总这些估算值已形成这呢个图像的估算值。此此通用过程以两种不同的形式实现,以组成一个两步算法。此算法在图3中进行了说明,其过程如下: 步骤1.初步估计 ? ? ? ? a) 块估算。对于嘈杂图像中的每一个块,清执行以下操作。 ? ? ? ? ? ? ? ? i) 分组。查找与当前处理块相似的块,然后将它们堆叠在一起形成3D数组。 ? ? ? ? ? ? ? ? ii) 协同性硬阈值。将3D变换应用于所形成的数组,通过变换系数进行硬阈值来衰减噪声,将3D变换反转以生成所有分组块的估计,并将这些块的估计返回到原始位置。 ? ? ? ? b) 聚集。通过对所有获得的重叠的块估计进行加权平均,计算出真实图像的初步估计值。 步骤2. 最终估计:基于初步估计,进行改进的分组和协同维纳滤波。 ? ? ? ? a) 块级估计。对于每个块,请执行以下操作。 ? ? ? ? ? ? ? ? i) 分组。在基本估算范围内使用BM查找与当前处理的块相似的块的位置。使用这些位置,形成两组(3D阵列),一组来自于噪声图像,另一组来自于基本估计。 ? ? ? ? ? ? ? ? ii) 协同维纳过滤。在两个组上应用3D变换。使用关于真实能谱的基本估计值的能谱对有噪声的组进行维纳滤波。通过对滤波后的系数应用逆3D变换来生成所有分组块的估计,并将块的估计返回到其原始位置。 ? ? ? ? b) 聚集。通过使用加权平均值汇总所有获得的局部估计,计算出真实图像的最终估计。上面算法的第二步有两个重要动机: 使用基本估计我不是嘈杂的图像可以通过块匹配来改善分组 使用基本估计作为经验维纳滤波的导频信号比对噪声数据的3D频谱进行简单的硬阈值处理要有效和准确的多。 ?图3 本文提出的图像去噪算法的流程图。对于每个处理的块(标记为“R”)重复用虚线包围的操作。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |