数字图像处理(十六)非局部均值去噪

一、前言

在之前我们已经介绍过许多图像去噪的方法,比如均值滤波、中值滤波、高斯滤波等。今天我们要介绍一种新的去噪方法——非局部均值去噪(the non local means, NL-means)。那么NL-means相较于之前的方法有什么不同的地方呢?
我们先思考之前的图像去噪方法,用均值滤波进行举例。均值滤波在对噪声图像中的某个位置的像素进行处理时,需要以该像素为中心,选取3x3或者5x5邻域大小的像素求和后取平均值作为该像素的像素值。可以看到,使用均值滤波进行去噪时,我们只使用了该像素的邻域区域(也就是局部区域),中值滤波类似。
NL-means来自于这篇论文“A non-local algorithm for image denoising”(发表于2005年)。该方法充分利用了图像中的冗余信息,在去噪的同时能最大程度得保持图像的细节特征。

二、NL-means

先观察下面的这张图像:
在这里插入图片描述
可以看到 p 、 q 1 、 q 2 p、q_1、q_2 pq1q2三个区域比较相似,那么 q 1 、 q 2 q_1、q_2 q1q2相较于 p p p可以说是重复区域,也就是说图像中存在着冗余信息。那么在对 p p p区域进行去噪时,能否利用 q 1 、 q 2 q_1、q_2 q1q2这两个区域呢?NL-means就是基于这样的想法提出来的。

1.两个邻域块的相似度

如何衡量 A A A B B B两个邻域块的相似度呢?一种常见的衡量方法是MSE(均方误差),当然还有其他的方法,例如PSNR,余弦相似度等等。
在这里插入图片描述

MSE的计算公式如下:
M S E ( A , B ) = 1 m n ∑ i = 0 m − 1 ∑ j = 0 n − 1 [ A ( i , j ) − B ( i , j ) ] 2 MSE(A,B)=\frac{1}{mn}\sum_{i=0}^{m-1}\sum_{j=0}^{n-1}\left[A(i,j)-B(i,j)\right]^2 MSE(A,B)=mn1i=0m1j=0n1[A(i,j)B(i,j)]2
其中 m m m n n n分别为两个邻域块的宽和高。

2.NL-means原理

使用NL-means对图像进行去噪,假设A点为当前待滤波点,我们需要为A设置两个窗口:搜索窗口和邻域窗口。搜索窗口的大小为 D × D , D = 2 × D s + 1 D\times D, D=2\times D_s+1 D×D,D=2×Ds+1,邻域窗口的大小为 d × d , d = 2 × d s + 1 d\times d,d=2\times d_s+1 d×d,d=2×ds+1。如下所示:

在这里插入图片描述

那么对A点进行NL-means滤波后的像素值为:
NL-means = ∑ B w ( A , B ) × I ( B ) \text{NL-means}=\sum_{B}w(A,B)\times I(B) NL-means=Bw(A,B)×I(B)
其中 I ( B ) I(B) I(B)为B点的像素值; w ( A , B ) w(A,B) w(A,B) A 、 B A、B AB两个邻域块的相似度,其计算公式如下:
w ( A , B ) = 1 s u m e − M S E ( A , B ) h 2 s u m = ∑ B e − M S E ( A , B ) h 2 w(A,B)=\frac{1}{sum}e^{-\frac{MSE(A,B)}{h^2}}\\ sum=\sum_{B}e^{-{\frac{MSE(A,B)}{h^2}}} w(A,B)=sum1eh2MSE(A,B)sum=Beh2MSE(A,B)
可以看到, w ( A , B ) w(A,B) w(A,B)的计算公式与 A , B A,B A,B两点所在邻域窗口的相似度有关。其中h也是一个重要的参数,h越大去噪效果越好,但是图像越模糊,反之h越小去噪效果越差,但是去噪后的失真度越小。

3.数学理论推导

假设无噪声像素块的值为 f ( x , y ) f(x,y) f(x,y),噪声为 n ( x , y ) n(x,y) n(x,y),这里我们认为噪声是不相关的。那么带噪的像素块的值为 g ( x , y ) = f ( x , y ) + n ( x , y ) g(x,y)=f(x,y)+n(x,y) g(x,y)=f(x,y)+n(x,y)。将 k k k个相似的带噪像素块进行叠加后取均值得到
g ˉ ( x , y ) = 1 k ∑ i = 1 k g i ( x , y ) = 1 k ∑ i = 1 k f i ( x , y ) + n i ( x , y ) \bar{g}(x,y)=\frac{1}{k}\sum_{i=1}^{k}g_i(x,y)=\frac{1}{k}\sum_{i=1}^{k}f_i(x,y)+n_i(x,y) gˉ(x,y)=k1i=1kgi(x,y)=k1i=1kfi(x,y)+ni(x,y)

g ˉ ( x , y ) \bar{g}(x,y) gˉ(x,y)取期望如下:
E [ g ˉ ( x , y ) ] = E [ 1 k ∑ i = 1 k f i ( x , y ) + n i ( x , y ) ] = 1 k ∑ i = 1 k E [ f i ( x , y ) ] + E [ n i ( x , y ) ] E\left[\bar{g}(x,y)\right]=E\left[\frac{1}{k}\sum_{i=1}^{k}f_i(x,y)+n_i(x,y)\right]=\frac{1}{k}\sum_{i=1}^{k}E\left[f_i(x,y)\right]+E\left[n_i(x,y)\right] E[gˉ(x,y)]=E[k1i=1kfi(x,y)+ni(x,y)]=k1i=1kE[fi(x,y)]+E[ni(x,y)]
其中假设噪声的期望为0, f i ( x , y ) f_i(x,y) fi(x,y)为相似块,认为其期望相等,所以
E [ g ˉ ( x , y ) ] = f ( x , y ) E\left[\bar{g}(x,y)\right]=f(x,y) E[gˉ(x,y)]=f(x,y)
g ˉ ( x , y ) \bar{g}(x,y) gˉ(x,y)取方差如下:
D [ g ˉ ( x , y ) ] = D [ 1 k ∑ i = 1 k f i ( x , y ) + n i ( x , y ) ] = 1 k 2 D [ ∑ i = 1 k f i ( x , y ) + ∑ i = 1 k n i ( x , y ) ] = 1 k 2 D [ ∑ i = 1 k f i ( x , y ) ] + 1 k 2 D [ ∑ i = 1 k n i ( x , y ) ] D\left[\bar{g}(x,y)\right]=D\left[\frac{1}{k}\sum_{i=1}^{k}f_i(x,y)+n_i(x,y)\right]=\frac{1} {k^2}D\left[\sum_{i=1}^{k}f_i(x,y)+\sum_{i=1}^{k}n_i(x,y)\right]=\frac{1}{k^2}D\left[\sum_{i=1}^{k}f_i(x,y)\right]+\frac{1}{k^2}D\left[\sum_{i=1}^{k}n_i(x,y)\right] D[gˉ(x,y)]=D[k1i=1kfi(x,y)+ni(x,y)]=k21D[i=1kfi(x,y)+i=1kni(x,y)]=k21D[i=1kfi(x,y)]+k21D[i=1kni(x,y)]
因为 D [ ∑ i = 1 k f i ( x , y ) ] D\left[\sum_{i=1}^{k}f_i(x,y)\right] D[i=1kfi(x,y)]= D [ k f ( x , y ) ] = k 2 D [ f ( x , y ) ] = k 2 σ f 2 D\left[kf(x,y)\right]=k^2D\left[f(x,y)\right]=k^2\sigma_f^2 D[kf(x,y)]=k2D[f(x,y)]=k2σf2 D [ ∑ i = 1 k n i ( x , y ) ] = σ η 1 2 + σ η 2 2 + ⋯ + σ η k 2 D\left[\sum_{i=1}^{k}n_i(x,y)\right]=\sigma_{\eta 1}^2+\sigma_{\eta 2}^2+\cdots + \sigma_{\eta k}^2 D[i=1kni(x,y)]=ση12+ση22++σηk2,所以
D [ g ˉ ( x , y ) ] = σ f 2 + 1 k 2 ( σ η 1 2 + σ η 2 2 + ⋯ + σ η k 2 ) D\left[\bar{g}(x,y)\right]=\sigma_f^2+\frac{1}{k^2}(\sigma_{\eta 1}^2+\sigma_{\eta 2}^2+\cdots + \sigma_{\eta k}^2) D[gˉ(x,y)]=σf2+k21(ση12+ση22++σηk2)
又因为相似无噪声像素块的方差为0,所以最后的推导出的方差公式为:
σ g ˉ 2 = k k 2 σ η 2 = 1 k σ η 2 \sigma_{\bar{g}}^2=\frac{k}{k^2}\sigma_{\eta}^2=\frac{1}{k}\sigma_{\eta}^2 σgˉ2=k2kση2=k1ση2
可以看到 g ˉ ( x , y ) \bar{g}(x,y) gˉ(x,y)的期望为 f ( x , y ) f(x,y) f(x,y),方差为 1 k σ η 2 \frac{1}{k}\sigma_{\eta}^2 k1ση2。所以说,通过非局部均值滤波的方法可以进行图像去噪。

4.代码链接

github

参考链接

非均质滤波的原理
https://www.cnblogs.com/luo-peng/p/4785922.html
https://zhuanlan.zhihu.com/p/355267754

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值