主要内容

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

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

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

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

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

在图像中加入方差为0.01的零均值高斯白噪声。的imnoise功能为每个颜色通道单独添加噪声。显示有噪声的彩色图像。

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

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

预先训练的去噪卷积神经网络(DnCNN)对单通道图像进行操作。将有噪声的RGB图像分成三个单独的颜色通道。

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

加载预训练的DnCNN网络。

网= denoisingNetwork (“dncnn”);

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

denoisedR = denoiseImage (noisyR,净);denoisedG = denoiseImage (noisyG,净);denoisedB = denoiseImage (noisyB,净);

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

denoisedRGB =猫(3 denoisedR denoisedG denoisedB);imshow (denoisedRGB)标题(”“去噪图像

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

计算噪声图像和去噪图像的峰值信噪比(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颜色空间。

另请参阅

||||||

相关的话题