【图像去噪】基于matlab BM3D算法图像去噪【含Matlab源码 1779期】

⛄一、BM3D算法图像去噪简介

1 BM3D去噪算法概述
BM3D算法借鉴了非局部均值(NL-Means)方法的非局部块匹配思想,在此基础上,将图像相似块堆叠成三维矩阵后进行协同滤波处理,再将处理结果聚合到原图像块的位置。BM3D算法由两个大的步骤组成,即初步估计和最终估计阶段,每一阶段又分别包含三个部分:块匹配、协同滤波和聚合。

1.1 初步估计阶段
(1)块匹配分组
块匹配是寻找图像相似块的一个过程。首先将含有噪声的图像分成若干个大小为N´N的图像块。设参考块为Zx R,待匹配的图像块为Zx,用两个块之间的欧氏距离定义块之间的相似性,距离越短则说明它们之间的相似性越高。设定一个阈值t,如果两块之间的距离小于该阈值,则认为它们是相似的。然后将寻找出来的图像块和参考块堆叠成为一个三维矩阵。块的匹配和堆叠过程如图1所示。

(2)协同滤波
先对堆叠后的三维矩阵进行三维变换,然后进行硬阈值滤波(Hard thresholding),将小于阈值的系数置0,之后进行三维逆变换得到初步处理后的图像。
【图像去噪】基于matlab BM3D算法图像去噪【含Matlab源码 1779期】_第1张图片
图1 块匹配和堆叠过程示意图
(3)聚合
由于协同滤波后的估计块往往有重叠,因此需要进行加权平均的信息整合,即通过加权平均所有重叠块的预估值来计算真实图像的初步估计[10]。

1.2 最终估计阶段
(1)块匹配分组
将初步估计的图像块和含噪图像块分别堆叠成两个三维矩阵,具体过程和初步估计的分组方法相同。

(2)协同滤波
将上一步得到的矩阵分别进行三维变换,并且将初步估计阶段所得值作为真实信号同含噪图像执行维纳滤波(Wiener filtering)操作,再进行三维逆变换。

(3)聚合
对上一步得到的值进行加权平均,得到最终估计的图像。

本文将BM3D算法运用到医学CT图像去噪中,并且在实验中同均值滤波、维纳滤波、中值滤波等算法做了对比,实验结果表明,在低剂量CT图像去噪中,BM3D算法取得了较好的效果。

3 算法的具体实现
对于带有噪声的图像z (x),其加性噪声可以用公式(1)获得。
在这里插入图片描述
其中y (x)代表没有被噪声污染的图像,n (x)代表加性噪声,x是图像的坐标点,Ω代表整幅图像的像素点集合,后文中的硬阈值滤波和维纳滤波分别缩写为ht和wie。

在理想情况下,若原始图像是y,则在块匹配过程中图像块Zx R和Zx之间的距离计算如公式(2)。
在这里插入图片描述
其中x R和x分别表示两个图像块左上角的坐标,(N1ht)2是图像块的大小,是L2范数。但实际上,理想的图像y不能直接获得,只有含噪图像可用,故按公式(3)计算距离。
在这里插入图片描述
理论上距离服从非中心卡方分布,它的均值和方差满足公式(4)。
【图像去噪】基于matlab BM3D算法图像去噪【含Matlab源码 1779期】_第2张图片
实际上方差接近O (σ4),如果方差σ较大或者图像分块较小时,可能会发生分组错误。解决的办法是先进行二维线性变换,再进行硬阈值滤波处理使系数收缩,此时的距离由公式(5)计算。
【图像去噪】基于matlab BM3D算法图像去噪【含Matlab源码 1779期】_第3张图片
这里的T2htD、γ’分别是二维线性变换和硬阈值滤波操作。由公式(6)求得参考块Zx R的相似图像块集合。
在这里插入图片描述
其中τhtmat ch是预设的阈值。这些相似块与参照块被堆叠成为一个三维组,记作ZSxhRt。

然后用公式(7)对三维矩阵执行硬阈值滤波操作。
在这里插入图片描述
其中是可分解的三维变换,先进行一轮小波或DCT二维变换,然后进行一维哈达玛(Hadamard)变换。
针对像素存在多个估算值的情况,进一步用公式(8)计算重复的像素权重。
【图像去噪】基于matlab BM3D算法图像去噪【含Matlab源码 1779期】_第4张图片
其中σ2是噪声方差,Nhx aRr是不为零元素的个数。再用公式(9)求加权平均就得到了第一阶段的估计图像。
【图像去噪】基于matlab BM3D算法图像去噪【含Matlab源码 1779期】_第5张图片
经过这一阶段处理后,图像中的噪声很大程度上已经被消除。在最终估计阶段,相似块的集合可以用公式(10)表示。
【图像去噪】基于matlab BM3D算法图像去噪【含Matlab源码 1779期】_第6张图片
得到两组三维矩阵,一组来自初估后的图像,一组来自噪声图像,分别记作,之后的处理同第一阶段的类似,不过要用维纳滤波取代硬阈值滤波,数学式如公式(11)。
在这里插入图片描述
滤波的收缩系数如公式(12)。
【图像去噪】基于matlab BM3D算法图像去噪【含Matlab源码 1779期】_第7张图片
这个阶段也可能有像素点重叠发生,可运用以下权重公式(13)。
在这里插入图片描述
求得最终的估计图像如公式(14)。
【图像去噪】基于matlab BM3D算法图像去噪【含Matlab源码 1779期】_第8张图片

⛄二、部分源代码



⛄三、运行结果

【图像去噪】基于matlab BM3D算法图像去噪【含Matlab源码 1779期】_第9张图片
【图像去噪】基于matlab BM3D算法图像去噪【含Matlab源码 1779期】_第10张图片
【图像去噪】基于matlab BM3D算法图像去噪【含Matlab源码 1779期】_第11张图片
【图像去噪】基于matlab BM3D算法图像去噪【含Matlab源码 1779期】_第12张图片

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 王志刚,冯云超.BM3D算法在低剂量CT图像去噪中的应用[J].电脑与电信. 2020,(11)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

你可能感兴趣的:(Matlab图像处理(进阶版),matlab,算法,3d)