Filtrar imágenes en escala de grises y en color verdadero (RGB) utilizando la función imfilter
Este ejemplo muestra cómo filtrar una imagen 2D en escala de grises con un filtro de 5 por 5 que contiene ponderaciones iguales (suele denominarse "filtro promediador") usando imfilter
. El ejemplo también muestra cómo filtrar una imagen en color verdadero (RGB) con el mismo filtro. Una imagen en color verdadero es un arreglo 3D de m por n por 3, donde la última dimensión representa los tres canales de color. Filtrar una imagen en color verdadero con un filtro 2D equivale a filtrar cada plano de la imagen de forma individual con el mismo filtro 2D.
Existen varias funciones de MATLAB® que realizan filtrado 2D y multidimensional que pueden compararse con imfilter
. La función filter2
realiza la correlación bidimensional, conv2
la convolución bidimensional y convn
la convolución multidimensional. Sin embargo, cada una de estas funciones de filtrado siempre convierte la entrada en double
y la salida siempre es double
. Además, estas funciones de filtrado de MATLAB® siempre asumen que la entrada está rellenada con ceros y no admiten otras opciones de relleno. En cambio, imfilter
no convierte las imágenes de entrada en double
. La función imfilter
también ofrece un conjunto flexible de opciones de relleno de límites.
Filtrar imágenes 2D en escala de grises con un filtro promediador
Lea una imagen en escala de grises en el espacio de trabajo.
I = imread("coins.png");
Muestre la imagen original.
figure
imshow(I)
title("Original Image")
Cree un filtro promediador normalizado de 5 por 5.
h = ones(5,5)/25;
Aplique el filtro promediador a la imagen en escala de grises usando imfilter
.
I2 = imfilter(I,h);
Muestre la imagen filtrada.
figure
imshow(I2)
title("Filtered Image")
Filtrar imágenes en color verdadero (RGB) multidimensionales con imfilter
Lea una imagen en color verdadero en el espacio de trabajo.
rgb = imread("peppers.png");
imshow(rgb);
Cree un filtro. Este filtro promediador tiene ponderaciones iguales y hace que la imagen filtrada parezca más borrosa que la original.
h = ones(5,5)/25;
Filtre la imagen con imfilter
y muéstrela.
rgb2 = imfilter(rgb,h); figure imshow(rgb2)