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.

medfilt2

filtrado medio 2-D

Sintaxis

B = medfilt2(A)
B = medfilt2(A,[m n])
B = medfilt2(___,padopt)
gpuarrayB = medfilt2(gpuarrayA)
gpuarrayB = medfilt2(gpuarrayA,[m n])

Descripción

ejemplo

B = medfilt2(A) realiza un filtrado medio de la imagen A en dos dimensiones. Cada píxel de salida contiene el valor medio en un vecindario de 3 por 3 alrededor del píxel correspondiente de la imagen de entrada. medfilt2 almohadillas de la imagen con 0s en los bordes, por lo que los valores de mediana para los puntos dentro de la mitad de la anchura del vecindario ([m n]/2) de los bordes pueden aparecer distorsionados.

B = medfilt2(A,[m n]) realiza el filtrado medio, donde cada píxel de salida contiene el valor medio en el vecindario m-por-n alrededor del píxel correspondiente en la imagen de entrada.

B = medfilt2(___,padopt) controla cómo medfilt2 rellena los límites de la matriz.

gpuarrayB = medfilt2(gpuarrayA) realiza la operación de filtrado mediana en una GPU. La imagen de entrada y la imagen de salida son gpuArrays. Esta sintaxis requiere el Parallel Computing Toolbox™.

gpuarrayB = medfilt2(gpuarrayA,[m n]) realiza la operación de filtrado mediana en una GPU, donde cada píxel de salida contiene el valor medio en el vecindario m-por-n alrededor del píxel correspondiente en la entrada gpuArray. Al trabajar con gpuArrays, medfilt2 sólo soporta barrios cuadrados con lados de longitud impar entre 3 y 15. Esta sintaxis requiere el Parallel Computing Toolbox.

Ejemplos

contraer todo

Lea la imagen en el espacio de trabajo y mostrarla.

I = imread('eight.tif'); figure, imshow(I)

Añada el ruido de sal y pimienta.

J = imnoise(I,'salt & pepper',0.02);

Utilice un filtro mediano para filtrar el ruido.

K = medfilt2(J);

Mostrar los resultados, de lado a lado.

imshowpair(J,K,'montage')

Lea la imagen en un gpuArray.

I = gpuArray(imread('eight.tif'));

Añada ruido a la imagen, luego realice el filtrado mediano y muestre el resultado.

J = imnoise(I,'salt & pepper',0.02); K = medfilt2(J); figure, imshow(J), figure, imshow(K)

Argumentos de entrada

contraer todo

Imagen de entrada, especificada como una matriz de 2-D, real, no Sparse, numérica o lógica.

Tipos de datos: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | logical

Tamaño de vecindario, especificado como un vector numérico de dos elementos, [m n], de enteros positivos reales.

Cuando se trabaja con gpuArrays, el vecindario debe ser cuadrado con lados de longitud impar entre 3 y 15.

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Imagen de entrada cuando se ejecuta en una GPU, especificada como un gpuArray.

Opción de relleno, especificada como uno de los siguientes valores:

ValorDescripción
'zeros'Acolchado con 0s. Esta es la opción establecida por defecto.
'symmetric'Simétricamente extendido en los límites.
'indexed'Rellenado con 1s, si la clase de A es double; de lo contrario, acolchado con 0s.

Tipos de datos: char | string

Argumentos de salida

contraer todo

Imagen de salida, devuelta como una matriz de 2-D de la misma clase que la imagen de entrada A.

Imagen de salida cuando se ejecuta en una GPU, se devuelve como un gpuArray.

Sugerencias

  • El filtrado mediano es una operación no lineal a menudo utilizada en el procesamiento de imágenes para reducir el ruido de "sal y pimienta". Un filtro mediano es más efectivo que la circunvolución cuando el objetivo es reducir al mismo tiempo el ruido y preservar los bordes. Para obtener información acerca de las consideraciones de rendimiento, consulte ordfilt2.

  • Si la imagen de entrada A es de una clase Integer, todos los valores de salida se devuelven como enteros. Si el número de píxeles en el vecindario (es decir, m*n) es uniforme, algunos de los valores medianos podrían no ser enteros. En estos casos, las partes fraccionarias se descartan. La entrada lógica se trata de manera similar. Por ejemplo, la mediana verdadera para el siguiente vecindario 2 por 2 en un array uint8 es 4,5, pero medfilt2 descarta la parte fraccionaria y devuelve 4.

    1 5 4 8

Algoritmos

En la CPU, medfilt2 utiliza ordfilt2 para realizar el filtrado.

Referencias

[1] Lim, Jae S., Two-Dimensional Signal and Image Processing, Englewood Cliffs, NJ, Prentice Hall, 1990, pp. 469-476.

Capacidades ampliadas

Consulte también

| | |

Introducido antes de R2006a