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


    一、前言

    在之前我们已经介绍过许多图像去噪的方法,比如均值滤波、中值滤波、高斯滤波等。今天我们要介绍一种新的去噪方法——非局部均值去噪(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

  • 相关阅读:
    09【多表查询案例】
    覆盖率检查工具:JaCoCo 食用指南
    PowerEdge RAID Controller (PERC) types for Dell EMC systems PERC11
    Javaweb的AJAX及Axios框架使用(封装AJAX)
    java面向对象的内存分析
    城商行本地高可用建设实践与落地效果分享
    图像处理基本概念、GAN
    优化算法 - 梯度下降
    kube-apiserver限流机制原理
    NosQL之Redis配置与优化
  • 原文地址:https://blog.csdn.net/qq_41596730/article/details/134013287