Aplicar filtros de suavizado gaussiano a las imágenes
Este ejemplo muestra cómo aplicar diferentes filtros de suavizado gaussiano a las imágenes usando imgaussfilt
. Los filtros de suavizado gaussiano se suelen usar para reducir el ruido.
Lea una imagen en el espacio de trabajo.
I = imread('cameraman.tif');
Filtre la imagen con núcleos de suavizado gaussiano isotrópicos de desviaciones estándar cada vez más grandes. Los filtros gaussianos suelen ser isotrópicos, es decir, tienen la misma desviación estándar a lo largo de ambas dimensiones. Se puede filtrar una imagen con un filtro gaussiano isotrópico especificando un valor escalar para sigma
.
Iblur1 = imgaussfilt(I,2); Iblur2 = imgaussfilt(I,4); Iblur3 = imgaussfilt(I,8);
Muestre la imagen original y todas las imágenes filtradas.
figure
imshow(I)
title('Original image')
figure
imshow(Iblur1)
title('Smoothed image, \sigma = 2')
figure
imshow(Iblur2)
title('Smoothed image, \sigma = 4')
figure
imshow(Iblur3)
title('Smoothed image, \sigma = 8')
Filtre la imagen con núcleos de suavizado gaussianos anisotrópicos. imgaussfilt
permite al núcleo gaussiano tener diferentes desviaciones estándar en las dimensiones de fila y columna. Estos se denominan filtros gaussianos anisotrópicos alineados con el eje. Especifique un vector de 2 elementos para sigma
cuando utilice filtros anisotrópicos.
IblurX1 = imgaussfilt(I,[4 1]); IblurX2 = imgaussfilt(I,[8 1]); IblurY1 = imgaussfilt(I,[1 4]); IblurY2 = imgaussfilt(I,[1 8]);
Muestre las imágenes filtradas.
figure
imshow(IblurX1)
title('Smoothed image, \sigma_x = 4, \sigma_y = 1')
figure
imshow(IblurX2)
title('Smoothed image, \sigma_x = 8, \sigma_y = 1')
figure
imshow(IblurY1)
title('Smoothed image, \sigma_x = 1, \sigma_y = 4')
figure
imshow(IblurY2)
title('Smoothed image, \sigma_x = 1, \sigma_y = 8')
Suprima las bandas horizontales visibles en la región del cielo de la imagen original. Los filtros gaussianos anisotrópicos pueden suprimir elementos horizontales o verticales de una imagen. Extraiga una sección de la región del cielo de la imagen y utilice un filtro gaussiano con una desviación estándar más alta en el eje X (dirección de columnas cada vez más grandes).
I_sky = imadjust(I(20:50,10:70)); IblurX1_sky = imadjust(IblurX1(20:50,10:70));
Muestre la sección original de cielo con la versión filtrada.
figure
imshow(I_sky), title('Sky in original image')
figure
imshow(IblurX1_sky), title('Sky in filtered image')