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