BM3D算法学习

前些日子在学习图像降噪的算法,自然而然的发现了这篇里程碑式的作品,“bm3d”3d块匹配降噪算法,想来时间也久,赶紧再写下来,以免过后忘记。
在学习的过程中,由于没学过数字图像处理,学起来还是挺墨迹的,前前后后得有四五天吧,才算整个大差不差,期间看了许多前辈的博客和代码,也总算有些许的进步和理解,特此感谢,并将算法原文、参考博客和文献附文末。
从“头”开始
图像去噪是非常基础也是非常必要的研究,去噪常常在更高级的图像处理之前进行,是图像处理的基础。图像中噪声的来源有许多种,种类也各不相同,比如椒盐噪声、高斯噪声等。对于输入的带有噪声的图像v(x) ,其加性噪声可以用一个方程来表示:
如果能够精确地获得噪声,用输入图像减去噪声就可以恢复出原始图像。但实际中除非明确地知道噪声生成的方式,否则噪声很难单独求出来。由此,便诞生了一堆的图像降噪算法,从传统算法到现在的机器学习的算法,降噪算法得到了很大的发展。
那么传统的想法是什么呢,我们主要分为以下两大类。
对于我们来讲,一个自然而然地想法就是,能不能把空间域和变换域的降噪方法结合起来,在对图像进行降噪处理,我们能想到,自然也有人想得到,nl-means应运而生。
非局部均值算法的主要想法在于它充分利用了自然图像的“空间相似性”,将图像分成一个个的小块,在以图像为单位对图像进行降噪,简单来讲,假设我们取11*11的窗口作为处理的小图像块,我们在图像上选取几个类似的图像斑块,例如上述的q1、q2和q3,但是q1和q2明显比q3近一点,根据空间相似性我们很容易知道q1q2应该和p更为相似,故我们在对p图像斑块进行处理的时候,我们可以对q1q2q3分别赋予不同的权重,再把他们“摞起来”,求个加权平均。形象来讲,假设存在一个每一层结构都完全相同的大楼,那么在进行加权平均的时候,我们这样想,我们把p想象为其中的一层,我们最终是要p图像斑块里面每一个像素的值,p若是一层楼,那么里面的每一个像素就是这层楼中的每一个房间,p为3楼,q1q2为1层和4层,q3为5层,那么p像素的值的大小就应该为q1q2q3每个与p对应房间(像素)值的加权平均,这样就对p图像斑块完成了降噪的过程,类似一个基于大斑块的高斯滤波算法。此外,从这个举例中我们也大概摸索出了bm3d里面3d的来历.......
至此,非局部均值算法以经表现不错了,但是它体现在简单的加权平均,并且仍然在空间域处理图像,科技并非停滞不前,bm3d来了......
bm3d(block-matching and 3d filtering,3维块匹配滤波)是当前效果最好的算法之一。该算法通过相似判定找到与参考块相近的二维图像块,并将相似块按照组合成三维群组,对三维群组进行协同滤波处理,再将处理结果聚合到原图像块的位置。该算法的思想跟nl-means有点类似,也是在图像中寻找相似块的方法进行滤波,但是相对于nl-means要复杂许多。总体可以分为两步:
在这两大步中,分别又有三小步:
相似块分组(grouping)→协同滤波(collaborative filtering) →聚合(aggregation)
我们细看每一个小步骤,编组的过程类似于nl-means:
接下来,第二小步,像上面讲述的房子一样,我们把分好的图像斑块“摞起来”,形成一个3d的“块”(block),在每一层中进行二维变换,变换到频率域,此外,在第三个维度,也就是每一层的对应的房间(像素)上进行一维变换,变换之后,按照非局部均值的思想,对斑块在频率域进行降噪处理,(其实是对像素值的加权平均),再对经过变换之后图像斑块,进行“硬阈值”处理,处理剔除不合格像素值,在经过反三维变换变换为空间域,再对图像进行块匹配,聚合至原来每个块的位置,这样整个图像就从一维变三维再变回一维了。至此,第一步完成。
aggregation:此时,每个二维块都是对去噪图像的估计。这一步分别将这些块融合到原来的位置,每个像素的灰度值通过每个对应位置的块的值加权平均。
第二步与第一步类似
step2:最终估计
(1)grouping:第二步中的聚合过程与第一步类似,不同的是,这次将会得到两个三维数组:噪声图形成的三维矩阵和基础估计结果的三维矩阵。
(2)collaborative filtering:两个三维矩阵都进行二维和一维变换。用维纳滤波将噪声图形成的三维矩阵进行系数放缩,该系数通过基础估计的三维矩阵的值以及噪声强度得出。
aggregation:与step1中一样,只是此时加权的权重取决于维纳滤波的系数和噪声强度。
至此,算法完成,效果还是很好的,我们来看一些示例:
参考文献:
详尽过程
图解噪声与去噪 之二:从『均值滤波』到『bm3d』
阿达玛变换详尽
转:x264中satd实现分析 - mr.rico - 博客园
克内罗内积
克罗内克积_百度百科
小波变换
小波变换(wavelet transform)的通俗解释(一)
blog.csdn.net/zizi7/art
频域空域细致讲解
blog.csdn.net/zdh198210


基于专为手机游戏而打造的全新生态系统Gstar加密货币介绍
一文解析冲击电压分压器关键计量性能
关于物联网的认知误区,盘点物联网的4个认知误区
RF MEMS国内外现状及发展趋势
中国工业互联网的发展现状解析
BM3D算法学习
模组电源的线通用吗_模组电源的用途
无人机航拍测绘步骤流程
抽气真空泵气密性检测是如何进行的
小米5c自主芯片澎湃S1 不敌联发科? 不敌骁龙?
智能虹膜图像采集终端如何来设计
扩展坞怎么用
满足暑期换机需求 华为P10拍照、续航样样强
智能化模拟产品|芯海科技SmartAnalog®系列CS32A0X0工业多场景应用
7nm制程节点战争,烟硝四起
现在的人脸识别系统真的安全吗?
555定时器的工作模式
关于区块链和数字币,他们之间有什么关系
传闻LINE有意采用电子加密货币
s8050开关应用电路图大全(LED恒流供电/门控开关)