Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Eliminar el ruido de la imagen de color utilizando la red neuronal preentrenada

Este ejemplo muestra cómo eliminar el ruido gaussiano de una imagen RGB. Divida la imagen en canales de color separados y, a continuación, desemne cada canal utilizando una red neuronal denoising previamente, DnCNN.

Lea una imagen en color en el espacio de trabajo y convierta los datos en .double Muestre la imagen en color prístina.

pristineRGB = imread('lighthouse.png'); pristineRGB = im2double(pristineRGB); imshow(pristineRGB) title('Pristine Image')

Agregue ruido blanco gaussiano medio cero con una varianza de 0,01 a la imagen. añade ruido a cada canal de color de forma independiente.imnoise Muestre la imagen de color ruidoso.

noisyRGB = imnoise(pristineRGB,'gaussian',0,0.01); imshow(noisyRGB) title('Noisy Image')

Divida la ruidoso imagen RGB en sus canales de color individuales.

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

Cargue la red DnCNN previamente entrenada.

net = denoisingNetwork('dncnn');

Utilice la red DnCNN para eliminar el ruido de cada canal de color.

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

Vuelva a combinar los canales de color desruidos para formar la imagen RGB desruido. Muestre la imagen en color desentono.

denoisedRGB = cat(3,denoisedR,denoisedG,denoisedB); imshow(denoisedRGB) title('Denoised Image')

Calcule la relación señal-ruido máxima (PSNR) para las imágenes ruidosas y deruidos. Un PSNR más grande indica que el ruido tiene una señal relativa más pequeña y se asocia con una calidad de imagen más alta.

noisyPSNR = psnr(noisyRGB,pristineRGB); fprintf('\n The PSNR value of the noisy image is %0.4f.',noisyPSNR);
 The PSNR value of the noisy image is 20.6395. 
denoisedPSNR = psnr(denoisedRGB,pristineRGB); fprintf('\n The PSNR value of the denoised image is %0.4f.',denoisedPSNR);
 The PSNR value of the denoised image is 29.6857. 

Calcule el índice de similitud estructural (SSIM) para las imágenes ruidosas y deruidos. Un índice SSIM cercano a 1 indica un buen acuerdo con la imagen de referencia y una calidad de imagen superior.

noisySSIM = ssim(noisyRGB,pristineRGB); fprintf('\n The SSIM value of the noisy image is %0.4f.',noisySSIM);
 The SSIM value of the noisy image is 0.7393. 
denoisedSSIM = ssim(denoisedRGB,pristineRGB); fprintf('\n The SSIM value of the denoised image is %0.4f.',denoisedSSIM);
 The SSIM value of the denoised image is 0.9507. 

En la práctica, los canales de color de imagen con frecuencia tienen ruido correlacionado. Para eliminar el ruido de imagen correlacionado, primero convierta la imagen RGB en un espacio de color con un canal de luminancia, como el espacio de color L*a*b*. Elimine el ruido solo en el canal de luminancia y, a continuación, vuelva a convertir la imagen desruido al espacio de color RGB.

Consulte también

| | | | | |

Temas relacionados