图像去噪是研究人员几十年来试图解决的一个经典问题。在早期,研究人员使用滤波器器来减少图像中的噪声。它们曾经在噪音水平合理的图像中工作得相当好。然而,应用这些滤镜会使图像模糊。如果图像太过嘈杂,那么合成的图像会非常模糊,图像中的大部分关键细节都会丢失。
使用深度学习架构会更好的解决这个问题。目前看深度学习远远超过了传统的去噪滤波器。在这篇文章中,我将使用一个案例来逐步解释几种方法,从问题的形成到实现最先进的深度学习模型,然后最终看到结果。
内容摘要
- 图像中的噪声是什么?
- 问题表述
- 机器学习问题提法
- 数据来源
- 探索性数据分析
- 图像去噪的传统滤波器概述
- 用于图像去噪的深度学习模型
- 结果比较
- 未来的工作和改进的范围
- 参考文献
图像中的噪点是什么?
图像噪声是所捕获图像中亮度或颜色信息的随机变化。这是由外部源引起的图像信号劣化。从数学上讲,图像中的噪点可以表示为
A(x,y)= B(x,y)+ H(x,y)
其中
A(x,y)=噪声图像的函数;B(x,y)=原始图像的函数;H(x,y)=噪声的函数;
问题表述
传统的图像降噪算法始终假定噪声是均匀的高斯分布。但是,实际上,真实图像上的噪点可能要复杂得多。真实图像上的这种噪声称为真实噪声或盲噪声。传统的滤波器无法在具有此类噪点的图像上表现良好。
所以问题的表述变成了:我们如何去噪包含盲噪声的图像?
我们的目的是用盲噪声对彩色图像进行去噪,没有延迟的限制,因为我想对图像进行降噪处理,使其尽可能接近真实值实况,即使它花费了合理的时间
盲去噪是指在去噪过程中,用于去噪的基础是从有噪声的样本本身学习来的。换句话说,无论我们构建什么样的深度学习体系结构,都应该学习图像中的噪声分布并去噪。所以和往常一样,这都取决于我们提供给深度学习模型的数据类型。
机器学习问题提法
首先,让我们考虑一下RGB图像的格式。一个图像的3个颜色通道
任何RGB图像对于每个像素都有三个颜色通道——红、绿、蓝。
现在,每种颜色都由一个范围为0-255的8位数字表示。任何图像都可以用一个三维矩阵来表示。
对于一个有噪声的图像。
我们在前面的章节中看到,噪声是像素的随机变化。换句话说,图像中3个通道的一些像素数值被破坏了。为了恢复图像的原始形式,我们需要纠正那些损坏的像素值。
我们可以把这看作是一个监督学习回归问题,在这个问题中我们预测被损坏像素的真实值[0-255范围内的数字]。
我将使用的损失是MSE(均方误差)。分数越低越好。
对于绩效评估,我会使用两个指标,分数越高越好
- PSNR (Peak Signal to Noise Ratio) 峰值信噪比
- SSIM (Structural Similarity Index Measure) 结构相似性
数据来源
由于这是一个监督学习问题,我们需要一对有噪声的图像(x)和ground truth图像(y)。
我从三个方面收集了这些数据。
SIDD -包含160对来[噪声-真值]图像
RENOIR -包含80对[嘈杂的-真值]图像
NIND -包含62对[噪声-真值]图像
探索性数据分析
元数据分析
我们可以看到,大部分照片是在iPhone 7上被拍摄的,其次是三星S6和谷歌Pixel。LG G4的照片数量最少。
数据集中总共使用了14个唯一的ISO级别设置。大多数照片都是在低ISO设置下点击的。最常用的ISO设置是100和800,然后是1600,400和3200。曝光越高,图像就越亮,反之亦然。
大多数照片是在100快门速度下拍摄的,其次是400和800快门。快门速度越快,图像就越暗,反之亦然。
大多数照片是在普通亮度模式下点击的,其次是低亮度模式。三星S6在高亮度下只点击了2张照片。
我们可以看到每一部手机都有自己的图像分辨率。每一部手机都以相同的分辨率拍摄照片。
可以看出,大部分的平均像素值处于较低到中值(较暗到中亮度的图像)。只有少数是非常高的价值(明亮的图像)。你也可以看到在噪声图像中的一些平均值与真实图像有差异。这种差异在较高像素值时更容易看到。
可以观察到,与原始图像相比,噪声图像具有像素强度的平滑分布。产生这样的原因是,每当图像中有噪点时,相机便无法捕获这些像素的颜色信息(由于各种原因),因此,在这些像素中填充“无颜色”(大部分是 通过相机软件填充一些随机值。由于这些随机值(噪声),像素值变得平滑了。