深入理解去噪论文——FFDNet和CBDNet中noise level与噪声方差之间的关系探索

知乎同名账号同步发布。如有错误,欢迎指正。

问题来源

读这两篇文章的时候,发现文中AWGN(加性高斯白噪声)的方差用σ²表示,noise level用σ表示,符号使用似乎出现了冲突;

又发现作者默认已知噪声模型 N ( 0 , σ 2 ) N(0, \sigma^2) N(0,σ2),生成的含噪声图像的ground-truth的noise level似乎也随之确定,一切都在暗示AWGN的方差和其noise level有千丝万缕的关系。

一、基础知识和生成AWGN步骤

引用这篇文章对matlab生成AWGN的讲解,补充一些基础知识:

awgn(x,snr,’measured’,'linear’)的作用是向x加入信噪比为snr的AWGN。所谓信噪比,公式如下:
s n r = s i g P o w e r / n o i s e P o w e r snr = sigPower/noisePower snr=sigPower/noisePower
即信号的强度/噪声的强度,或者信号功率/噪声功率。

sigPower的计算方法只需要看matlab代码就一目了然:
sigPower = sum(abs(sig(: )).^2)/length(sig(: ))
.^2指的是对矩阵每个元素都求平方,上述分母起到规范化的作用,sig(: )表示信号)

awgn()函数的第一步,就是估计信号x的强度sigPower,然后计算出noisePower:
n o i s e P o w e r = s i g P o w e r / s n r noisePower = sigPower / snr noisePower=sigPower/snr
假如说要生成的噪声的size是[1000, 1],那么最终要添加的噪声信号就是:
sqrt(noisePower) * randn(n, 1)
其中randn生成的是 N ( 0 , 1 ) N(0, 1) N(0,1)的噪声,那么这个噪声信号服从的分布就是:
N ( 0 , n o i s e P o w e r ) N(0, noisePower) N(0,noisePower)
所以网上有篇文章,文中一句话说:

对于高斯噪声,其方差和功率(噪声强度)是一样的

二、从MATLAB生成含AWGN的noisy image入手分析

二.0、先放结论

noisePower就是方差σ²,σ就是paper中的noise level。

取自FFDNet paper:对于clean image x,生成noise level为σ的noisy y:
imnoise(x, ’gaussian’, 0, (σ/255)²)
作用就是向x中加入高斯噪声,这个噪声服从的分布为:
N ( 0 , ( σ / 255 ) 2 ) N(0, (\sigma/255)^2) N(0,(σ/255)2)
当然,分母的255可能是因为将原始图片的像素值缩放到了0-1之间,所以noise level也需要除以255。如果没有这样做,那么显然噪声服从的分布就是:
N ( 0 , σ 2 ) N(0, \sigma^2) N(0,σ2)

那么显然,结合目前搜集到的信息,noisePower就是方差σ²,σ就是paper中的noise level。再看一个FFDNet中的片段佐证这个观点:

To synthesize spatially variant AWGN, we first generate an AWGN image v1 with unit standard deviation and a noise level map M of the same size. Then, element-wise multiplication is applied on v1 and M to produce the spatially variant AWGN, i.e., v = v1 ⊙ M.

上述noise level map M就是由不同位置的noise level σ组合而成的map。先生成v1,它拥有单位标准差,然后让M(M中元素为noise level σ)和它做element-wise的相乘,显然得到的v就拥有方差σ²,而论文称σ为noise level,不就和上面的观点对应上了么。

再看CBDNet中所提到:

For a batch of real images, due to the unavailability of ground-truth noise level map, only Lrec and LT V are considered in training.

对于真实数据,是无法得到ground-truth的noise level map的,我当时很疑惑的点在于:对于合成数据,也没有办法得到ground-truth的noise level map,为什么paper似乎在默认这个是能够得到的?然而实际上,paper中提到了合成数据中噪声服从的分布:
N ( 0 , σ 2 ( L ) ) N(0, \sigma^2(L)) N(0,σ2(L))
其中 σ 2 ( L ) = L ⋅ σ s 2 + σ c 2 \sigma^2(L) = L · \sigma^2_s+\sigma^2_c σ2(L)=Lσs2+σc2,(L是irradiance image)。
这样,合成数据的ground-truth的noise level map不就直接是 σ ( L ) \sigma(L) σ(L)了么(如果本文之前的推断都没问题的话)。

三、小结

  • 确定的事情:
    对于高斯噪声,方差σ²就是噪声强度noisePower;
    如果已知噪声服从的高斯分布,那么对于根据这个分布+clean image合成的noisy image,可以直接得出其ground-truth的noise level or noise level map。

  • 不太确定的事情:
    另外读到这里你肯定发现了论文中的noise level和本文中的noisePower不是一个东西,网上没有找到两者特别明显的概念区别,所以noise level可能是作者对σ起的专门的称谓,这个称谓是否为图像去噪领域默认叫法,我还不太清楚。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值