此示例显示如何从RGB图像中删除高斯噪声。将图像分成单独的颜色通道,然后使用预先磨平的去噪神经网络DNCNN来表示每个通道。
将彩色图像读入工作区并将数据转换为双倍的
.显示原始彩色图像。
pristinergb = imread('lighthouse.png');pristinergb = im2double(pristinergb);imshow(pristinergb)标题('原始图像')
添加零均衡的高斯白噪声,差异为0.01到图像。imnoise.
独立地向每个颜色通道添加噪声。显示嘈杂的彩色图像。
noisyRGB = imnoise (pristineRGB,'高斯',0,0.01);imshow(noisyrgb)标题('吵闹的形象')
将嘈杂的RGB图像拆分为其各个颜色通道。
[Noisyr,Noisyg,Noisyb] = Imsplit(Noisyrgb);
加载预制的DNCNN网络。
net = denoisingnetwork('dncnn');
使用DNCNN网络从每个颜色通道中移除噪声。
denoisedr = denoiseimage(诺斯罗,净);denoisedg = denoiseimage(noisyg,net);denoisedb = denoiseimage(noisyb,net);
重组去噪色信道以形成去噪的RGB图像。显示去噪彩色图像。
denoisedrgb =猫(3,denoisedr,denoisedg,denoosedb);imshow(denoisedrgb)标题('去世图像')
计算噪声和去噪图像的峰值信噪比(PSNR)。较大的PSNR表示噪声具有较小的相对信号,并且与更高的图像质量相关联。
noisypsnr = psnr(noisyrgb,pristinergb);fprintf(“\n噪声图像的PSNR值为%0.4f。”,noisypsnr);
噪声图像的PSNR值为20.6395。
denoisedPSNR = psnr (denoisedRGB pristineRGB);fprintf('\ n去噪图像的PSNR值为%0.4f。,denoosedpsnr);
去噪图像的PSNR值为29.6857。
计算噪声和去噪图像的结构相似性(SSIM)索引。接近1的SSIM指数表示与参考图像的良好一致性,更高的图像质量。
Noisyssim = SSIM(Noisyrgb,Pristinergb);fprintf('\ n嘈杂图像的SSIM值为%0.4f。,Noisyssim);
嘈杂图像的SSIM值为0.7393。
denoisedssim = ssim(denoisedrgb,pristinergb);fprintf('\ n去噪图像的SSIM值为%0.4f。,denoisedssim);
去噪图像的SSIM值为0.9507。
在实践中,图像颜色通道经常具有相关噪声。为了消除相关图像噪声,首先将RGB图像转换为具有亮度通道的颜色空间,例如L * A * B *颜色空间。仅消除亮度通道上的噪声,然后将DeAoised Image转换回RGB颜色空间。
denoiseimage.
|denoisingnetwork.
|imnoise.
|Lab2RGB.
|PSNR.
|rgb2lab
|ssim