主要内容

利用预训练神经网络去除彩色图像中的噪声

这个例子展示了如何使用去噪卷积神经网络从RGB图像中去除高斯噪声。

将彩色图像读入工作区,并将数据转换为数据类型.显示原始的彩色图像。

pristineRGB = imread(“lighthouse.png”);pristineRGB = im2double(pristineRGB);imshow (pristineRGB)标题(“原始图像”

图中包含一个轴对象。标题为“原始图像”的axes对象包含一个Image类型的对象。

对图像添加方差为0.01的零均值高斯白噪声。的imnoise函数为每个颜色通道独立添加噪声。显示有噪声的彩色图像。

noisyRGB = imnoise(pristineRGB,“高斯”, 0, 0.01);imshow (noisyRGB)标题(“嘈杂的图像”

图中包含一个轴对象。标题为“噪声图像”的axis对象包含一个图像类型的对象。

预训练去噪卷积神经网络DnCNN在单通道图像上运行。将噪声RGB图像分割为三个单独的颜色通道。

[noisyR,noisyG,noisyB] = imsplit(noisyRGB);

加载预训练的DnCNN网络。

net =去噪网络(“dncnn”);

使用DnCNN网络去除每个颜色频道的噪声。

denoisedR = denoiseImage(noisyR,net);denoisedG = denoiseImage(noisyG,net);噪声b =噪声图像(噪声b,net);

将去噪后的彩色通道重新组合,形成去噪后的RGB图像。显示去噪后的彩色图像。

降噪drgb = cat(3,降噪edr,降噪edg,降噪edb);imshow (denoisedRGB)标题(”“去噪图像

图中包含一个轴对象。标题为Denoised Image的axes对象包含一个Image类型的对象。

计算噪声和去噪图像的峰值信噪比(PSNR)。较大的PSNR表明噪声具有较小的相对信号,并且与较高的图像质量相关。

noisyPSNR = psnr(noisyRGB,pristineRGB);流(\n噪声图像的PSNR值为%0.4f。, noisyPSNR);
噪声图像的PSNR值为20.6395。
denoisedPSNR = psnr(denoisedRGB,pristineRGB);流(\n去噪后图像的PSNR值为%0.4f。, denoisedPSNR);
去噪后图像的PSNR值为29.6857。

计算噪声图像和去噪图像的结构相似性(SSIM)指数。SSIM指数接近1,表明与参考图像吻合较好,图像质量较高。

noisySSIM = ssim(noisyRGB,pristineRGB);流(\n噪声图像的SSIM值为%0.4f。, noisySSIM);
噪声图像的SSIM值为0.7393。
denoisedSSIM = ssim(denoisedRGB,pristineRGB);流(\n去噪后图像的SSIM值为%0.4f。, denoisedSSIM);
去噪后图像的SSIM值为0.9507。

在实际应用中,图像颜色通道经常存在相关噪声。为了去除相关图像噪声,首先将RGB图像转换为具有亮度通道的颜色空间,例如L*a*b*颜色空间。只去除亮度通道上的噪声,然后将去噪图像转换回RGB颜色空间。

另请参阅

||||||

相关的话题