图像去噪有什么应用(计算摄影图像去噪)
图像去噪有什么应用(计算摄影图像去噪),PSNR越大表示失真越小。MSE的计算如下:的对数值,其中n是每个采样值的位数,8位图像即256,PSNR定义如下:非均匀响应噪声:这种噪声来源于每个像素在制造时候的个体差异,即使感受相同的亮度,不同像素给出的响应也是不同的,它的信噪比是一条水平线,它决定了相机信噪比的上限。常用的客观评估标准包括峰值信噪比(PSNR)和结构一致性相似因子(SSIM)这是原图像与处理图像之间均方误差(MSE)相对于
图像去噪相关的内容,主要包括:噪声类型,评估方法,传统去噪方法,深度学习去噪方法,常用数据集。
噪声类型摄影中的噪声主要有3种:固定噪声、随机噪声、非均匀响应噪声。
固定噪声:这种噪声来自电路本身,在各类信号处理系统中广泛存在,信噪比(signal no noise ratio SNR)曲线是一条斜率为20dB/dec的直线,20dB代表信号幅度是噪声信号幅度的10倍,此时信号能够比较好的保证质量。
随机噪声:光子进入传感器的过程在数学上可以用泊松分布进行建模,此时带来的噪声是与亮度的平方根成正比的,信噪比曲线是一条斜率为10dB/dec 的直线。
非均匀响应噪声:这种噪声来源于每个像素在制造时候的个体差异,即使感受相同的亮度,不同像素给出的响应也是不同的,它的信噪比是一条水平线,它决定了相机信噪比的上限。
评估方法常用的客观评估标准包括峰值信噪比(PSNR)和结构一致性相似因子(SSIM)
PSNR:这是原图像与处理图像之间均方误差(MSE)相对于
的对数值,其中n是每个采样值的位数,8位图像即256,PSNR定义如下:
,PSNR越大表示失真越小。MSE的计算如下:
,yi是去噪后图像灰度值,yi^是无噪声真实图像灰度值。
结构一致性相似因子PSNR从底层信噪的角度来评估图像的质量,但是人眼对于质量的评估关注的层次其实更高,根据人类视觉系统模型,人眼观察图像有以下几个特点:
- 低通滤波特性,即人眼对于过高的频率难以分辨。
- 人眼对于亮度的敏感大于对颜色的敏感。
- 对亮度的响应不是线性变换的,在平均亮度大的区域,人眼对灰度误差不敏感。
- 人眼对边缘和纹理敏感,有很强的局部观察能力。
结构相似性因子是一种来源于结构相似性理论,建立在人眼的视觉特征基础上的衡量两张图像相似度的指标,其值越大越好,最大值为1,广泛用于图像质量评估领域。
结构相似性理论认为自然图像信号是高度结构化的,空域像素间有很强的相关性并蕴含着物体结构的重要信息。它没有试图通过累加与心理物理学简单认知模式有关的误差来估计图像质量,而是直接估计两个复杂结构信号的结构改变,并将失真建模为亮度、对比度和结构三个不同因素的组合。用均值作为亮度的估计,标准差作为对比度的估计,协方差作为结构相似程度的度量。
SSIM具体的计算如下:首先结构信息不应该受到照明的影响,因此在计算结构信息时需要去掉亮度信息,即需要减掉图像的均值;其次结构信息不应该受到图像对比度的影响,因此计算结构信息时需要归一化图像的方差。通常使用的计算方法如下,其中C1,C2,C3用来增加计算结果的稳定性,光度L,对比度C,结构对比度S计算如下:
ux,uy为图像的均值
dx,dy为图像的方差
d(x y)为图像x,y的协方差。而图像质量SSIM = L(x y)^aC(x y)^bS(x y)^c,其中a,b,c分别用来控制三个要素的重要性,为了计算方便可以均选择为1,C1,C2,C3为比较小的数值,通常C1=(K1×L)^2 C2=(K2×L)^2,C3 = C2/2, K1 << 1, K2 << 1,L为像素的最大值(通常为255)。当a,b,c都等于1,C3=C2/2时,SSIM的定义式就为:
SSIM发展出了许多的改进版本,其中较好的包括Fast SSIM,Multi-scale SSIM。
传统去噪方法根据噪声引入方式的不同,噪声可分为加性噪声和乘性噪声。加性噪声的幅度和信号的幅度无关,是叠加到图像信号上的,去除相对容易。而乘性噪声取决于信号的幅度,与信号的幅度成正比,去除相对困难,但是如果将其取对数,则乘性噪声也可以认为是加性噪声,因此可以假设噪声均为加性噪声。
,其中, u(x) 是原来没有噪声的图像。 x 是像素集合, η(x) 是加性噪声性,代表噪声带来的影响。 Ω 是像素的集合即整幅图像。
根据噪声的性质不同,噪声可分为脉冲噪声,椒盐噪声,高斯白噪声,莱斯噪声等。在大多数去噪的研究中,通常都将噪声当做高斯噪声进行处理。
传统的去噪方法根据去噪的原理不同可分为基于空域像素特征的方法,基于频域变换的方法和基于特定模型的方法。
基于空域像素特征的方法基于空域像素特征的方法是通过分析在一定大小的窗口内中心像素与其他相邻像素之间早灰度空间的直接联系,来获取新的中心像素的方法。
均值滤波与高斯滤波均值滤波与高斯滤波的不同之处在于:均值滤波中,滤波器中每个像素的权重是相同的,即滤波器是线性的。而高斯滤波器中像素的权重与其距中心像素的距离成比例。
算术均值滤波用像素邻域的平均灰度来代替像素值,适用于脉冲噪声,因为脉冲噪声的灰度级一般与周围像素的灰度级不相关,而且亮度高出其他像素许多。从频率域观点来看均值滤波是一种低通滤波器,高频信号将会去掉,因此可以帮助消除图像尖锐噪声,实现图像平滑,模糊等功能。
- 方法: 连续取N个采样值进行算术平均运算 。 L值较大时:信号平滑度较高,但灵敏度较低。L值较小时:信号平滑度较低,但灵敏度较高。均值滤波结果A’(i j)随着L(滤波半径)取值的增大而变得越来越模糊,图像对比度越来越小。
- 优点: 适用于对一般具有随机干扰的信号进行滤波 这样信号的特点是有一个平均值,信号在某一数值范围附近上下波动。
- 缺点: 对于测量速度较慢或要求数据计算速度较快的实时控制不适用, 比较浪费RAM。
高斯滤波矩阵的权值,随着与中心像素点的距离增加,而呈现高斯衰减的变换特性。这样的好处在于,离算子中心很远的像素点的作用很小,从而能在一定程度上保持图像的边缘特征。通过调节高斯平滑参数,可以在图像特征过分模糊和欠平滑之间取得折中。与均值滤波一样,高斯平滑滤波的尺度因子越大,结果越平滑,但由于其权重考虑了与中心像素的距离,因此是更优的对邻域像素进行加权的滤波算法。
中值滤波中值滤波器是一种常用的非线性滤波器,其基本原理是:选择待处理像素的一个邻域中各像素值的中值来代替待处理的像素。主要功能使某像素的灰度值与周围领域内的像素比较接近,从而消除一些孤立的噪声点,所以中值滤波器能够很好的消除椒盐噪声。不仅如此,中值滤波器在消除噪声的同时,还能有效的保护图像的边界信息,不会对图像造成很大的模糊(相比于均值滤波器)。
中值滤波器的效果受滤波窗口尺寸的影响较大,在消除噪声和保护图像的细节存在着矛盾:滤波窗口较小,则能很好的保护图像中的某些细节,但对噪声的过滤效果就不是很好,因为实际中的噪声不可能只占一个像素位置;反之,窗口尺寸较大有较好的噪声过滤效果,但是会对图像造成一定的模糊。另外,根据中值滤波器原理,如果在滤波窗口内的噪声点的个数大于整个窗口内非噪声像素的个数,则中值滤波就不能很好的过滤掉噪声。
双边滤波双边滤波是一种非线性的滤波方法,是结合图像的空间邻近度和像素值相似度的一种折中处理,同时考虑空间与信息和灰度相似性,达到保边去噪的目的,具有简单、非迭代、局部处理的特点。之所以能够达到保边去噪的滤波效果是因为滤波器由两个函数构成:一个函数是由几何空间距离决定滤波器系数,另一个是由像素差值决定滤波器系数。
双边滤波器中,输出像素的值依赖于邻域像素的值的加权组合,其公式如下:
权重系数w(i j k l)取决于定义域核和值域核的乘积:
通俗来讲就是双边滤波模板主要有两个模板生成,第一个是高斯模板,第二个是以灰度级的差值作为函数系数生成的模板,然后这两个模板点乘就得到了最终的双边滤波模板。空域滤波器对空间上邻近的点进行加权平均,加权系数随着距离的增加而减少。值域滤波器则是对像素值相近的点进行加权平均,加权系数随着值差的增大而减少。
双边滤波器可以很好的保存图像边缘细节而滤除掉低频分量的噪音,但是双边滤波器的效率不是太高,花费的时间相较于其他滤波器而言也比较长。
引导滤波是一种复杂度为O(N)的滤波算法,去噪性能非常优良,已经被广泛应用于图像去噪、高对比度图像压缩、图像融合以及图像去噪等领域。引导滤波是在引导图像的作用下指导滤波的算法,引导图像可以是图像本身或者是另外的图像。其原理可以参考下图:引导滤波(guided filter)理解和代码实现_一只菜鸟的学习日常博的博客-CSDN博客
引导滤波不像高斯滤波等线性滤波算法所用的核函数相对于待处理的图像是独立无关的,而是在滤波过程中加入了引导图像(去噪时用的是图像本身)的信息,所以引导滤波本质上就是通过一张引导图像I,对初始图像P(输入图像)进行滤波处理,使得最后的输出图像大体上与初始图像P相似,但是纹理部分与引导图像I相似,在滤波效果上,引导滤波和双边滤波差不多,在一些细节上,引导滤波更好。
非局部均值滤波非局部均值(NL-means)滤波算法的原理与实现。其核心思路与高斯滤波很相似:计算矩形窗口内所有像素点的像素值加权和,权重服从高斯分布。区别在于:高斯滤波使用当前滤波点与矩形窗口内其它点的空间欧式距离来计算权重,距离越近权重越大;而非局部均值滤波则使用当前滤波点的邻域块与矩形窗口内其它点的邻域块的相似度来计算权重,相似度越大则权重越大。
假设点A为当前待滤波点,邻域块分别取以点A和点B为中心的ksize*ksize区域,矩形窗口(也称为搜索窗口)取以点A为中心ssize*ssize大小。由于ksize和ssize都是奇数,通常传入它们的半值:half_ksize和half_ssize。所以,邻域块的大小为(2*half_ksize 1)*(2*half_ksize 1),搜索窗口的大小为(2*half_ssize 1)*(2*half_ssize 1)。如下图所示:
点A的滤波值由搜索窗口内所有点的像素值加权平均得到:
原始的NLM算法利用图像中所有的像素来估计一个像素的值,其计算量非常大,因此研究者们不断对该算法做出了以下几点改进:
- 采用一定的搜索窗口来代替所有像素;
- 使用相似度阈值,对于相似度低于某一阈值的像素,不加入权重的计算;
- 使用块之间的显著特征,如纹理特征等代替灰度值的欧氏距离来计算相似度,在计算上更加灵活。
NLM滤波算法对于边缘的保持能力最差。
基于频域的去噪方法图像变换域去噪算法的基本思想其实就是首先进行某种变换,将图像从空间域转换到变换域,然后从频率上把噪声分为高中低频噪声,用这种变换域的方法就可以把不同频率的噪声分离,之后进行反变换将图像从变换域转换到原始空间域,最终达到去除图像噪声的目的。
傅立叶变换用于分析各种滤波器的频率特性,对于一幅图像来说在分析其频率特性时,它的边缘,突出部分以及颗粒噪声往往代表图像信号的高频分量,而大面积的图像背景区则代表图像信号的低频分量。因此,使用滤波的方法滤除其高频部分也就可以去除噪声,使得图像得到一定的平滑。具体原理可以参考下面的文章,这里不再细讲了:传统的图像去噪方法(四)之变换域去噪算法_打着灯笼摸黑的博客-CSDN博客_变换域算法
BM3D算法有两种噪声算法,一种是非局部去噪方法Non-local method,是一种空间算法,另一种transform method是一种转换算法,都在图像去噪中得到很好的效果,所以自然而然地想:同时使用两种算法效果如何?这便引出了BM3D去噪算法。
BM3D(Block-matching and 3D filtering,3维块匹配滤波)是当前效果最好的算法之一。该算法通过相似判定找到与参考块相近的二维图像块,并将相似块按照组合成三维群组,对三维群组进行协同滤波处理,再将处理结果聚合到原图像块的位置。该算法的思想跟NL-Means有点类似,也是在图像中寻找相似块的方法进行滤波,但是相对于NL-Means要复杂许多。
算法总体流程图如下,其原理可以参考:
BM3D算法学习 - 知乎 https://zhuanlan.zhihu.com/p/81856526
常用去噪数据集
目前去噪数据集的建立方法主要有3种:
- 从现有图像数据集获取高质量图像,然后做图像处理(线性变化、亮度调整等)并根据噪声模型添加人工合成的噪声,生成噪声图像。但是这种方法由于噪声是人工合成的,与真实场景中的噪声有差异,故在真实场景下效果欠佳。
- 针对同一图像,拍摄低感光度图像作为真值,高感光度图像作为噪声图像,并调整曝光参数来实两张图像亮度一致。这一类方法直接使用低感光度图像作为真值,难免会有噪声残留,并且与噪声图像也可能存在亮度差异和不对齐的问题。
- 对同一场景连续拍摄多张图像,然后通过图像配准等方式合成一张真值,这种方式需要拍摄大量图像,工作量比较大,但是最终得到的真值质量比较高。
常见数据集与对应论文:
数据集 |
GT |
场景数量 |
图片对数 |
主要领域 |
说明 |
相关论文 |
RENIOR |
低ISO |
120 |
240 |
低光 |
拍摄了120个暗光场景,包含室内和室外场景。每个场景约4张图像,包含2张有噪声图像和两张低噪图像。 |
RENOIR - A Dataset for Real Low-Light Image Noise Reduction |
Nam-CC15 |
均值 |
11 |
17 |
物品 |
包含11个场景,且多是相似物体和纹理。针对这11个场景共拍摄了500张JPEG图像。 |
A Holistic Approach to Cross-Channel Image Noise Modeling and its Application to Image Denoising |
Nam-CC60 |
均值 |
11 |
60 |
物品 |
- |
- |
DND |
低ISO |
50 |
50 |
室内外 |
拍摄50个场景,包括室内和室外场景。 |
Benchmarking Denoising Algorithms with Real Photographs |
PolyU |
均值 |
40 |
40 |
室内外 |
拍摄了40个场景,包括室内正常光照场景和暗光场景,室外正常光照场景。对每个场景连续拍摄了500次 |
Real-world Noisy Image Denoising: A New Benchmark |
SIDD |
均值 |
200 |
400 |
多领域 |
用5个相机(Google Pixel、iPhone 7、Samsung Galaxy S6 Edge、Motorola Nexus 6、LG G4)在四种相机参数下拍摄了10个场景,200个场景实例,每个场景连续拍摄了150张图像。其中160个场景实例作为训练集,40个场景实例作为测试集(the benchmark)。 |
A High-Quality Denoising Dataset for Smartphone Cameras |
High-ISO |
均值 |
28 |
110 |
高ISO |
http://cwc.ucsd.edu/sites/cwc. | |
NIND |
低ISO |
101 |
606 |
多级ISO | ||
IOCI |
均值 |
- |
200 |
多种相机 |
https://arxiv.org/pdf/2011.0346 |
Beyond a Gaussian Denoiser: Residual Learning of Deep CNN for Image Denoising
在信息处理领域中,学习信号的改变量往往比学习原始信号更加简单,这种思想被用于非常有效的残差网络。DnCNN模型则借鉴了该思路,它不是直接输出去噪图像,而是预测残差图像,即观察噪声图像和潜在的无噪声图像之间的差异。
CNN在VGG的基础上进行修改,网络结构是(卷积、BN、ReLU)级联的结构,模型内部并不像ResNet一样存在跳远连接,而是在网络的输出使用残差学习。结构如下:
该网络的特点主要有:
- 网络分为三部分,第一部分为Conv Relu(一层),第二部分为Conv BN Relu(若干层),第三部分为Conv(一层),网络层数为17或者20层。
- 网络学习的是图像残差,也就是带噪图像和无噪图像差值,损失函数采用的MSE。
- 论文中强调了batch normalization的作用
Toward Convolutional Blind Denoising of Real Photographs
CBDNet模型是一个真实图像非盲去噪模型,对于RAW格式的图像,它的噪声模型如下:
含真实噪声图像=图像信号L 真实噪声信号n(L)。CBDNet模型使用了一个噪声估计子网络估计出噪声水平,然后与原输入图像一起输入基于跳层连接的非盲去噪子网络,其结构如下:
1、噪声估计子网络将噪声观测图像转换为估计的噪声水平图像,然后和原图一起输入,使用非盲去噪子网络得到最终的去噪结果,除此之外,噪声估计子网络允许用户在估计的噪声水平图像输入非盲去噪子网络之前对齐调整,其提出了一种简单的策略,即y = ay,即线性缩放,这给模型提供了一种交互式的去噪运算能力。
盲去噪是指在去噪过程中,用于去噪的基础是从有噪声的样本本身学习来的。换句话说,无论我们构建什么样的深度学习体系结构,都应该学习图像中的噪声分布并去噪。所以和往常一样,这都取决于我们提供给深度学习模型的数据类型。非盲去噪则相反。
2、噪声估计子网络损失函数:非对称损失函数( asymmetric loss) 全变差损失函数( total variation)
2.1、非对称损失函数,计算噪声估计图和噪声ground truth的平方差:
其中,
为惩罚值,当噪声估计图值小于噪声ground truth值的时候,惩罚值大,当噪声估计图值大于噪声ground truth值的时候,惩罚值小。(非对称)目的是避免低估噪声值。
2.2、全变差损失函数,目的是限制噪声估计图的平滑度(梯度大小反映平滑程度):
其中,
计算噪声估计图水平方向梯度(噪声估计图垂直方向梯度)
2.3、非盲降噪子网络损失函数:计算输出图像与输入图像像素级均方误差MSE:
网络的总损失函数为三部分乘上权重相加:
3、该算法学习的是更接近于真实噪声的高斯泊松噪声,而前面两篇论文都是学习高斯噪声;并且结合使用合成和真实噪声数据来训练模型,提高模型泛化能力,可以更好地对真实场景进行降噪;
RIDNetReal Image Denoising with Feature Attention
RIDNet中,作者提出了一种新的修复模块,学习特征并进一步增强网络的功能。 作者团队通过关注通道之间的依赖关系来关注特征,以重新调整通道级的特征。 还使用LSC,SSC和SC来绕过低频信息,因此网络可以专注于残余学习。网络结构如下:
该网络的特点主要有:
1、这个网路的结构设计得相对复杂,主要包括三部分:特征提取、4个EMA组成的残差模型、重建。其中特征提取和重建模块都是卷积层 ReLU层。EMA的结构如上图中下半部分框图所示:
(1)首先是两个空洞卷积分支,用来增加感受野,然后进行拼接并进行卷积融合
(2)然后是两个类似残差学习的结构,用于进行特征的提取
(3)最后是注意力机制,主要由一系列1x1的卷积核构成,结构如下图所示:
2、该网络的损失函数为L1损失函数:
PMRIDPractical Deep Raw Image Denoising on Mobile Devices这篇论文是2020 CVPR上旷视提出来的一篇非常eleGANt的算法,该算法的特点网络结构比较小,通过一个k-sigma变换来解决小网络在不同增益噪声下的鲁棒性问题,网络结构如下图所示:
该论文提出了k-sigma变换,使用标定的k和sigma按照k-sigma公式变换后,原始的噪声分布就只和没有噪声的数据x ∗ 有关,因此就可以避免不同增益下噪声不同带来的负担。其具体原理可以参考:你手机中的夜景降噪算法-Raw域k-Sigma Transform - 知乎
基于GAN的模型获取成对的噪声图像和无噪声图像是非常困难的,因此有研究者使用了生成对抗网络(GAN)来生成成对图像用于训练模型,首先,训练GAN网络,通过含噪声的图像去学习噪声分布并生成噪声样本,以此来模拟真实场景下的噪声图像,解决HR图像缺少对应LR的问题;其次,训练CNN网络,利用上一步采样的噪声块来构建成对的训练数据集,该数据集用于训练CNN来对给定的图像去噪。网络结构如下:
从噪声图像中估计https://arxiv.org/pdf/1803.04189.pdf
既然噪声图像和无噪声图像很难获取,那么是否可以只使用噪声图像就可以训练出好的噪声模型呢?由此研究者们提出了Noise2Noise模型,其原理其实很简单:
本来我们做图像降噪,需要输入的噪音图像 x,和 “干净样本” y。例如,x 是路径跟踪渲染用少数光束渲染的图片,y 是长期渲染后的图片。那么如果用 y 作为训练目标,生成 y 是个非常费时费力的过程。但其实你如果仔细想想,可以用另一次快速渲染生成的另一个噪音图像(它相当于 y 另一个不同的噪音)作为训练目标(所以叫Noise2Noise)。只要训练样本够多,最终也相当于用 y 作为训练目标。原因是简单的统计学原理。
参考链接图像去噪数据集 - 知乎
图像降噪算法——DnCNN / FFDNet / CBDNet / RIDNet / PMRID / SID_Leo-Peng的博客-CSDN博客_dncnn
深度学习——CBD-Net_浮生若梦,为欢几何耶的博客-CSDN博客_cbdnet噪声水平图估计怎么实现
图像盲去噪|GAN|GCBD - 知乎
图像去噪之 Noise2Noise 和 Noise2Void_涑月听枫的博客-CSDN博客_noise2noise
书籍:《深度学习之摄影图像处理》