Contenido principal

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.

imshow(I)
title("Original image")

Figure contains an axes object. The hidden axes object with title Original image contains an object of type image.

imshow(Iblur1)
title("Smoothed image, \sigma = 2")

Figure contains an axes object. The hidden axes object with title Smoothed image, sigma blank = blank 2 contains an object of type image.

imshow(Iblur2)
title("Smoothed image, \sigma = 4")

Figure contains an axes object. The hidden axes object with title Smoothed image, sigma blank = blank 4 contains an object of type image.

imshow(Iblur3)
title("Smoothed image, \sigma = 8")

Figure contains an axes object. The hidden axes object with title Smoothed image, sigma blank = blank 8 contains an object of type image.

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.

imshow(IblurX1)
title("Smoothed image, \sigma_x = 4, \sigma_y = 1")

Figure contains an axes object. The hidden axes object with title Smoothed image, sigma indexOf x baseline blank = blank 4 , blank sigma indexOf y baseline blank = blank 1 contains an object of type image.

imshow(IblurX2)
title("Smoothed image, \sigma_x = 8, \sigma_y = 1")

Figure contains an axes object. The hidden axes object with title Smoothed image, sigma indexOf x baseline blank = blank 8 , blank sigma indexOf y baseline blank = blank 1 contains an object of type image.

imshow(IblurY1)
title("Smoothed image, \sigma_x = 1, \sigma_y = 4")

Figure contains an axes object. The hidden axes object with title Smoothed image, sigma indexOf x baseline blank = blank 1 , blank sigma indexOf y baseline blank = blank 4 contains an object of type image.

imshow(IblurY2)
title("Smoothed image, \sigma_x = 1, \sigma_y = 8")

Figure contains an axes object. The hidden axes object with title Smoothed image, sigma indexOf x baseline blank = blank 1 , blank sigma indexOf y baseline blank = blank 8 contains an object of type image.

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.

imshow(I_sky)
title("Sky in original image")

Figure contains an axes object. The hidden axes object with title Sky in original image contains an object of type image.

imshow(IblurX1_sky)
title("Sky in filtered image")

Figure contains an axes object. The hidden axes object with title Sky in filtered image contains an object of type image.