BM3D算法介绍「建议收藏」

BM3D算法介绍「建议收藏」论文名称:Imagedenoisingbysparse3Dtransform-domaincollaborativefiltering下载地址:https://webpages.tuni.fi/foi/GCF-BM3D/BM3D_TIP_2007.pdfhttps://webpages.tuni.fi/foi/GCF-BM3D/BM3D_TIP_2007.pdf目录基本原理FlowchartofBM3Dstep1step2FastAndEfficient.

大家好,又见面了,我是你们的朋友全栈君。

论文名称:Image denoising by sparse 3D transform-domain collaborative filtering

下载地址:https://webpages.tuni.fi/foi/GCF-BM3D/BM3D_TIP_2007.pdficon-default.png?t=M0H8https://webpages.tuni.fi/foi/GCF-BM3D/BM3D_TIP_2007.pdf

目录

基本原理

Flowchart of BM3D

 step1

step2

Fast And Efficient Realization

 Parameter selection

C-BM3D 

 Results


 

基本原理

        图像做块间匹配,把多张相似的2D图像块组成3D组,对3D组进行域变换,利用域变换上系数的稀疏性,进行滤波,然后再逆向3D域变换,得到滤波后的图像块,放回原来的位置,每个像素可能得到多次滤波的结果,最后进行加权得到降噪的图像。 

Flowchart of BM3D

分两步进行,第一步得到基础估计,第二步得到最终估计,分两步的优势是

1、用基础估计的结果做块匹配,匹配的结果更加准确

2、使用基本估计作为经验维纳滤波的导频信号,比对噪声图像做3D域变换和hard-threshold更有效、更准确 

BM3D算法介绍「建议收藏」

BM3D算法介绍「建议收藏」

BM3D算法介绍「建议收藏」 

 step1

块间匹配距离计算

BM3D算法介绍「建议收藏」

 由于噪声的存在,不考虑重叠的情况,距离的期望和方差如下,其方差为O(σ4)

BM3D算法介绍「建议收藏」

由于实际块匹配时会出现块间重叠,导致一些理想间距大于阈值的块当作了相似块,而小于阈值的却被丢弃了,为了解决这个问题,先对2D块做线性域变换,然后做hard-thresholding,再反变换回来,如下

BM3D算法介绍「建议收藏」 

 间距小于某个阈值,认为是相似块,这些相似块组成3D组,组里块的顺序不重要

BM3D算法介绍「建议收藏」

对3D组做域变换,在变换域上做hard-threshold操作,然后再做逆变换,得到基础估计结果

BM3D算法介绍「建议收藏」 

加权权重和分块估计的方差成反比,NharXR是hard-threshold之后非0系数的数目

BM3D算法介绍「建议收藏」 

根据权重进行加权

BM3D算法介绍「建议收藏」 

step2

对基础估计的结果做块匹配,组成一个3D组,同时,根据匹配结果,把原来的噪声图像块同样组成一个3D组,把两个3D组叠加在一起.

BM3D算法介绍「建议收藏」 

计算维纳系数和维纳滤波

BM3D算法介绍「建议收藏」 

 BM3D算法介绍「建议收藏」

 同样的,加权权重和分块估计的方差成反比

BM3D算法介绍「建议收藏」

加权滤波

BM3D算法介绍「建议收藏」 

Fast And Efficient Realization

1、在进行块匹配过程中,不是滑窗逐像素进行匹配,而是已一定步长进行匹配,可以减少计算量

2、构成3D组的时候,限制最大的匹配块数目 搜索匹配块时,限制最大的搜索区域

3、块匹配时,使用predictive search(具体可能要看下代码如何实现)

4、匹配时已经得到了2D变换,构成3D组时,再做1D变换就得到3D变换,不需要直接做3D变换

5、两个步骤中,进行hard_thresholding和Wiener_filtering时顺便把权重计算好,存在buffer里,最后Aggregation时就可以直接算

6、使用Kaiser window来减少边界效应 

每个像素的复杂度(计算量很大)

BM3D算法介绍「建议收藏」 

 Parameter selection

噪声没那么严重时,λ2d=0,窗口大小N1=8,严重时为λ2d=2,N1=12

还分析了各种变换的选,2D变换用哪个,1D变换用哪个比较好,没有去细看了, 反正最后的1D是使用Haar,2D变换用哪个好像关系不大,一般可能都是用DCT了

BM3D算法介绍「建议收藏」

C-BM3D 

处理彩色图像时,把RGB转到YUV,Y通道进行匹配,匹配的结果直接在UV分量上使用 

BM3D算法介绍「建议收藏」

 Results

BM3D算法介绍「建议收藏」

BM3D算法介绍「建议收藏」 

BM3D算法介绍「建议收藏」 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/138901.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • SpringBoot面试题整理,常问SpringBoot面试题汇总(2020版)

    SpringBoot面试题整理,常问SpringBoot面试题汇总(2020版)找工作的历程太艰难,面试的过程很心烦,在没着落的每一天,心情都不太美妙,这时的我们唯一能做的就是多总结,多做准备,这样,起码心里会好受些!所以我准备了一点SpringBoot的面试题,为还正在找工作的小伙伴多增加些成功的筹码!1、什么是SpringBoot?SpringBoot是Spring开源组织下的子项目,是Spring组件一站式解决方案,主要是简化了使用Spring的难度,简省了繁重的配置,提供了各种启动器,开发者能快速上手。2、SpringBoot有哪些优点?.

    2022年5月21日
    34
  • 矩阵卷积运算过程讲解「建议收藏」

    矩阵卷积运算过程讲解「建议收藏」在爬虫处理验证码的过程中接触到矩阵卷积运算,关于该类运算,记录一下自己的心得。理论知识在讲述卷积过程前,我们来了解一下卷积公式。根据离散二维卷积公式:其中A为被卷积矩阵,K为卷积核,B为卷积结果,该公式中,三个矩阵的排序均从0开始。现在对于上面卷积过程进行分析:我们用来做例子的A矩阵为m×m(3×3)二维矩阵(被卷积矩阵),K为n×n(2×2)的二维矩阵(卷积核)。卷……

    2025年6月28日
    2
  • php 抽象工厂模式

    php 抽象工厂模式/*抽象工厂模式:用来生成一组相关或相互依赖的对象。抽象工厂模式与工厂方法模式的区别:抽象工厂模式是工厂方法模式的升级版本,他用来创建一组相关或者相互依赖的对象。他与工厂方法模式的区别就在于,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则是针对的多个产品等级结构。在编程中,通常一个产品结构,表现为一个接口或者抽象类,也就是说,工厂方法模式提供的所有产品都是衍生自同一个接口或抽

    2022年7月25日
    8
  • 1024程序员游戏(我与什么之间的故事)

    代码虐我千万遍,我待代码如初恋!!!

    2022年4月14日
    47
  • ubuntu16.04 svn配置「建议收藏」

    ubuntu16.04 svn配置「建议收藏」虽然目前最流行的项目托管平台是github,其分布式的存储思想非常先进,对于项目的敏捷开发也非常有好处。但缺点在于操作略显复杂,上手需要一定成本。而svn相比git操作简单许多,上手几乎无难度,适用于项目的管理。虽然目前有很多svn的使用方法,但对其使用却描述不够具体或者不够连续,接下来详细写出本人在ubuntu16.04下配置svn并上传至taocode托管平台的步骤:首先安装

    2025年11月6日
    3
  • 优秀博客汇总

    优秀博客汇总github爬取android优秀项目的网站https://android-arsenal.com/张涛-开源实验室http://www.kymjs.com/任玉刚(android开发与艺术探

    2022年7月2日
    30

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号