训练和应用去噪神经网络
图像处理工具箱™和深度学习工具箱™提供了许多选项来去除图像中的噪声。最简单和最快的解决方案是使用内置的预训练去噪神经网络,称为DnCNN。然而,预训练的网络在识别噪声类型方面没有提供很大的灵活性。为了获得更大的灵活性,可以使用预定义的层训练自己的网络,或者训练一个完全自定义的去噪神经网络。
使用预训练网络去除高斯噪声
您可以使用内置的预训练DnCNN网络来去除高斯噪声,而无需训练网络的挑战。使用预训练网络去除噪声有以下限制:
噪声去除只适用于二维单通道图像。如果你有多个颜色通道,或者你正在处理3d图像,通过单独处理每个通道或平面来消除噪声。使用示例请参见利用预训练神经网络去除彩色图像中的噪声.
该网络只能识别高斯噪声,具有有限的标准偏差范围。
加载预训练的DnCNN网络,使用denoisingNetwork
函数。然后,将DnCNN网络和带噪声的二维单通道图像传递到denoiseImage
.该图像显示了使用预训练的DnCNN网络对图像进行降噪的工作流程。
使用内置层训练去噪网络
从图像处理工具箱提供的内置层开始,您可以训练网络来检测灰度图像的更大范围的高斯噪声标准偏差。要使用预定义的层训练去噪网络,请遵循以下步骤。图中深灰色的方框显示了培训工作流程。
创建一个
ImageDatastore
对象,该对象存储原始图像。创建一个
denoisingImageDatastore
对象,从原始图像生成有噪声的训练数据。若要指定高斯噪声标准偏差的范围,请设置GaussianNoiseLevel
财产。必须使用默认值PatchSize
(50
),ChannelFormat
(“灰度”
),使训练数据的大小与网络的输入大小相匹配。获取预定义的去噪层
dnCNNLayers
函数。定义培训选项
trainingOptions
(深度学习工具箱)函数。训练网络,指定去噪图像数据存储作为数据源
trainNetwork
(深度学习工具箱).对于训练的每次迭代,去噪图像数据存储通过随机裁剪原始图像来生成一个小批量的训练数据ImageDatastore
,然后在每个图像patch中加入随机生成的零均值高斯白噪声。添加的噪声的标准偏差对于每个图像patch是唯一的,并且在由GaussianNoiseLevel
去噪图像数据存储的属性。
在对网络进行训练后,将网络和带噪声的灰度图像传递到denoiseImage
.该图在浅灰色框中显示了去噪工作流程。
训练完全定制去噪神经网络
为了以最大的灵活性训练去噪神经网络,您可以使用自定义数据存储来生成训练数据或定义自己的网络架构。例如,您可以:
训练一个网络,在单通道图像中检测更多种类的噪声,例如非高斯噪声分布。方法返回的层可以定义网络体系结构
dnCNNLayers
函数。要生成与此网络兼容的训练图像,请使用变换
和结合
函数用于批量噪声图像和相应的噪声信号。有关更多信息,请参见深度学习的图像预处理(深度学习工具箱).使用DnCNN网络架构训练去噪网络后,可以使用
denoiseImage
去除图像噪声的功能。提示
DnCNN网络还可以检测由其他类型失真引起的高频图像伪影。例如,您可以训练DnCNN网络来提高图像分辨率或去除JPEG压缩伪影。的JPEG图像块使用深度学习示例展示了如何训练DnCNN网络来去除JPEG压缩伪影
训练一个检测彩色图像高斯噪声分布范围的网络。要为该网络生成训练图像,可以使用
denoisingImageDatastore
然后设置ChannelFormat
财产“rgb”
.您必须定义一个支持RGB输入图像的自定义卷积神经网络架构。万博1manbetx使用自定义网络架构训练去噪网络后,可以使用
激活
(深度学习工具箱)在失真图像中隔离噪声或高频伪影的功能。然后,从失真图像中减去噪声,得到去噪图像。
另请参阅
denoisingImageDatastore
|dnCNNLayers
|denoisingNetwork
|trainingOptions
(深度学习工具箱)|trainNetwork
(深度学习工具箱)|denoiseImage
|激活
(深度学习工具箱)|结合
|变换
相关的例子
更多关于
- 深度学习的图像预处理(深度学习工具箱)
- MATLAB中的深度学习(深度学习工具箱)