使用深度学习进行图像去噪(二)

简介: 使用深度学习进行图像去噪

传统图像去噪滤波器概述

传统上,研究人员想出了滤波器器来对图像进行降噪。大多数滤波器器特定于图像所具有的噪声类型。有几种类型的噪声,例如高斯噪声,泊松噪声,斑点噪声,椒盐(脉冲)噪声等。每种类型的噪声都有特定的滤波器。因此,使用传统滤波器对图像进行降噪的第一步是识别图像中存在的噪声类型。确定后,我们可以继续应用特定的滤波器器。为了识别噪声的类型,有一些数学公式可以帮助我们猜测噪声的类型。否则,领域专家可以仅通过查看图像来决定。还有一些滤波器可以处理任何类型的噪声。

有大量的滤波器可用于对图像进行降噪。每个人都有其优点和缺点。在这里,我将讨论非局部均值(NLM)算法,该算法被认为可以很好地对图像进行去噪。

NLM的公式,

640.png

该算法将像素的估计值计算为图像中所有像素的加权平均值,但是权重族取决于像素i和j之间的相似度。换句话说,它查看一个图像块,然后识别整个图像中的其他相似块,并对它们进行加权平均。要了解这一点,请考虑以下图像,

640.png

相似的色块用相同颜色的方框标记。因此,现在,它将相似补丁的像素的加权平均值作为目标像素的估计值。该算法将色块大小和色块距离作为输入。

考虑以下使用NLM滤镜去噪的灰度图像。

640.png

您可以看到NLM在图像去噪方面做得不错。如果仔细观察,将会发现去噪图像略有模糊。这是由于应用于任何数据的均值将使值平滑。

但是,当噪声水平太高时,NLM无法提供良好的结果。考虑以下图像,该图像已使用NLM滤波器进行了去噪。

640.png

可以清楚地看到,去噪后的图像太模糊了,大部分关键细节都丢失了。例如,观察蓝色卡车的橙色前灯。

用于图像去噪的深度学习模型

随着深度学习技术的出现,现在可以从图像中去除盲目的噪声,这样的结果非常接近于真实图像的细节损失最小。

已经实现了三个深度学习架构,

REDNet、MWCNN、PRIDNet

REDNet  -Residual Encoder-Decoder Networks

这是一个基于CNN的跳过连接的自动编码器架构。体系结构如下:

640.png

在这里,我用了5层卷积的编码器和5层反卷积的解码器。这是一个非常简单的体系结构,我将其作为基准。

input_0=Input(shape=(256,256,3), name="input_layer")
conv_layer_1=Conv2D(filters=256, kernel_size=2, padding='same', name="conv_1")(input_0)
conv_layer_2=Conv2D(filters=256, kernel_size=2, padding='same', name="conv_2")(conv_layer_1)
conv_layer_3=Conv2D(filters=256, kernel_size=3, padding='same', name="conv_3")(conv_layer_2)
conv_layer_4=Conv2D(filters=256, kernel_size=3, padding='same', name="conv_4")(conv_layer_3)
conv_layer_5=Conv2D(filters=128, kernel_size=3, padding='same', name="conv_5")(conv_layer_4)
deconv_layer_5=Conv2DTranspose(filters=256, kernel_size=2, padding='same', name="deconv_5")(conv_layer_5)
deconv_layer_5=Add(name="add_1")([conv_layer_4, deconv_layer_5])
deconv_layer_4=Conv2DTranspose(filters=256, kernel_size=2, padding='same', name="deconv_4")(deconv_layer_5)
deconv_layer_3=Conv2DTranspose(filters=256, kernel_size=3, padding='same', name="deconv_3")(deconv_layer_4)
deconv_layer_3=Add(name="add_2")([conv_layer_2, deconv_layer_3])
deconv_layer_2=Conv2DTranspose(filters=128, kernel_size=3, padding='same', name="deconv_2")(deconv_layer_3)
deconv_layer_1=Conv2DTranspose(filters=3, kernel_size=3, padding='same', name="deconv_1")(deconv_layer_2)
out=Add(name="add_3")([input_0, deconv_layer_1])
model=Model(inputs=[input_0], outputs=[out])

640.png

640.png

如您所见,该体系结构在去噪图像方面效果很好。您绝对可以看到噪点有所减少,并且图像正在尝试针对损坏的像素适应图像的原始颜色。该体系结构的PSNR得分为30.5713,SSIM得分为0.7932。

MWCNN — Multi-level Wavelet CNN

这是基于小波的深度学习架构。它的架构与U-Net架构有着惊人的相似性。MWCNN的唯一区别在于,与U-Net中的下采样和上采样不同,这里我们使用DWT(离散小波变换)和IWT(逆小波变换)。DWT和IWT的工作方式已超出此文章的范围。但是,我在[参考资料部分]附加了一些资源,您可以从中学习这些资源。

640.png

在这里,我已将此体系结构扩展到4个级别。因此,我的网络深度变为32。此代码有点长,我在Keras中使用了自定义层。您可以在Github存储库中查看有关MWCNN的完整代码。

640.png

640.png

640.png

我们可以看到,与REDNet相比,该架构的工作方式更好,图像更清晰。该体系结构的PSNR得分为32.5221,SSIM得分为0.8397。

目录
相关文章
|
3月前
|
机器学习/深度学习 监控 算法
深度学习之图像去噪与去模糊
基于深度学习的图像去噪和去模糊是计算机视觉中的重要任务,旨在提升图像质量,去除噪声和模糊。
213 3
|
机器学习/深度学习
使用深度学习进行图像去噪(三)
使用深度学习进行图像去噪
873 0
使用深度学习进行图像去噪(三)
|
机器学习/深度学习 编解码 算法
使用深度学习进行图像去噪(一)
使用深度学习进行图像去噪
688 0
使用深度学习进行图像去噪(一)
|
机器学习/深度学习 编解码 算法
使用深度学习进行图像去噪
使用深度学习进行图像去噪
686 0
使用深度学习进行图像去噪
|
8天前
|
机器学习/深度学习 传感器 数据采集
深度学习在故障检测中的应用:从理论到实践
深度学习在故障检测中的应用:从理论到实践
43 5
|
19小时前
|
机器学习/深度学习 网络架构 计算机视觉
深度学习在图像识别中的应用与挑战
【10月更文挑战第21天】 本文探讨了深度学习技术在图像识别领域的应用,并分析了当前面临的主要挑战。通过研究卷积神经网络(CNN)的结构和原理,本文展示了深度学习如何提高图像识别的准确性和效率。同时,本文也讨论了数据不平衡、过拟合、计算资源限制等问题,并提出了相应的解决策略。
30 19
|
19小时前
|
机器学习/深度学习 传感器 人工智能
探索深度学习在图像识别中的应用与挑战
【10月更文挑战第21天】 本文深入探讨了深度学习技术在图像识别领域的应用,并分析了当前面临的主要挑战。通过介绍卷积神经网络(CNN)的基本原理和架构设计,阐述了深度学习如何有效地从图像数据中提取特征,并在多个领域实现突破性进展。同时,文章也指出了训练深度模型时常见的过拟合问题、数据不平衡以及计算资源需求高等挑战,并提出了相应的解决策略。
23 7
|
11天前
|
机器学习/深度学习 自动驾驶 算法
深度学习在图像识别中的应用
本文将探讨深度学习技术在图像识别领域的应用。我们将介绍深度学习的基本原理,以及如何利用这些原理进行图像识别。我们将通过一个简单的代码示例来演示如何使用深度学习模型进行图像分类。最后,我们将讨论深度学习在图像识别领域的未来发展趋势和挑战。
|
11天前
|
机器学习/深度学习 数据采集 算法
深度学习在图像识别中的应用与挑战
本文探讨了深度学习技术在图像识别领域的应用,重点分析了卷积神经网络(CNN)的基本原理、优势以及面临的主要挑战。通过案例研究,展示了深度学习如何提高图像识别的准确性和效率,同时指出了数据质量、模型泛化能力和计算资源等关键因素对性能的影响。
|
11天前
|
机器学习/深度学习 计算机视觉
深度学习在图像识别中的应用与挑战
本文深入探讨了深度学习技术在图像识别领域的应用及其面临的挑战。通过分析深度学习模型如卷积神经网络(CNN)的工作原理,我们揭示了这些模型如何有效地处理和识别图像数据。同时,文章也指出了当前深度学习在图像识别中遇到的一些主要问题,包括过拟合、数据集偏差和模型解释性等,为读者提供了对这一领域全面而深入的理解。