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