主要内容

训练和应用去噪神经网络

Image Processing Toolbox™和Deep Learning Toolbox™提供了许多选项来消除图像中的噪声。最简单、最快的解决方案是使用内置的预训练去噪神经网络DnCNN。然而,预先训练的网络在识别的噪声类型方面没有提供太多的灵活性。为了获得更大的灵活性,可以使用预定义的层训练您自己的网络,或者训练一个完全定制的去噪神经网络。

利用预训练网络去除高斯噪声

你可以使用内置的预训练DnCNN网络来去除高斯噪声,而无需训练网络的挑战。用预先训练好的网络去除噪声有以下限制:

  • 噪声去除只适用于二维单通道图像。如果你有多个颜色通道,或者你正在处理3d图像,通过分别处理每个通道或平面来去除噪声。有关示例,请参见利用预处理神经网络去除彩色图像中的噪声

  • 该网络只能识别高斯噪声,具有一定的标准差范围。

要加载预训练的DnCNN网络,请使用denoisingNetwork函数。然后,通过DnCNN网络和一个有噪声的二维单通道图像denoiseImage.该图像展示了使用预训练的DnCNN网络去噪图像的工作流程。

denoiseImage函数使用预训练的去噪网络从灰度图像中去除噪声。

使用内置图层训练去噪网络

您可以训练网络从灰度图像中检测更大范围的高斯噪声标准偏差,从图像处理工具箱提供的内置层开始。要使用预定义的层训练去噪网络,请遵循以下步骤。图中深灰色框中显示了培训工作流程。

  • 创建一个ImageDatastore存储原始图像的对象。

  • 创建一个denoisingImageDatastore对象,从原始图像中生成有噪声的训练数据。若要指定高斯噪声标准偏差的范围,请设置GaussianNoiseLevel财产。必须使用默认值PatchSize50),ChannelFormat“灰度”),使训练数据的大小与网络的输入大小相匹配。

  • 方法获取预定义的去噪层dnCNNLayers函数。

  • 定义培训选项trainingOptions(深度学习工具箱)函数。

  • 训练网络,指定去噪图像数据存储作为数据源trainNetwork(深度学习工具箱).对于每次迭代的训练,去噪图像数据存储通过随机裁剪原始图像生成一个小批量的训练数据ImageDatastore,然后将随机生成的零均值高斯白噪声添加到每个图像patch中。添加噪声的标准差对于每个图像patch都是唯一的,并且在指定的范围内有一个值GaussianNoiseLevel去噪图像数据存储的特性。

训练好网络后,将网络和一幅有噪声的灰度图像传递给denoiseImage.图中浅灰色框中显示了去噪工作流。

denoiseImage函数使用训练的去噪网络从灰度图像中去除噪声。

训练全定制去噪神经网络

要以最大的灵活性训练去噪神经网络,您可以使用自定义数据存储来生成训练数据或定义自己的网络架构。例如,你可以:

  • 训练一个网络,在单通道图像中检测更大的噪声,如非高斯噪声分布。方法返回的层可以定义网络架构dnCNNLayers函数。要生成与该网络兼容的训练图像,请使用变换结合功能是批量处理噪声图像和相应的噪声信号。有关更多信息,请参见预处理图像用于深度学习(深度学习工具箱)

    在使用DnCNN网络架构训练去噪网络后,您可以使用denoiseImage去除图像噪声的函数。

    提示

    DnCNN网络还可以检测由其他类型的失真引起的高频图像伪影。例如,你可以训练DnCNN网络来提高图像分辨率或去除JPEG压缩的伪影。的使用深度学习的JPEG图像去块示例展示了如何训练DnCNN网络删除JPEG压缩工件

  • 训练一个检测彩色图像高斯噪声分布范围的网络。要为这个网络生成训练图像,可以使用denoisingImageDatastore并设置ChannelFormat财产“rgb”.您必须定义一个自定义卷积神经网络架构,支持RGB输入图像。万博1manbetx

    在您使用自定义网络架构训练去噪网络之后,您可以使用激活(深度学习工具箱)函数隔离噪声或高频伪影在扭曲的图像。然后,从畸变图像中去除噪声,得到去噪图像。

另请参阅

|||(深度学习工具箱)|(深度学习工具箱)||(深度学习工具箱)||

相关的例子

更多关于