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.

imfilter

El filtrado N-D de imágenes multidimensionales

Descripción

ejemplo

B = imfilter(A,h) filtra la matriz multidimensional con el filtro multidimensional y devuelve el resultado.AhB

Opcionalmente, puede filtrar una matriz multidimensional con un filtro 2-D usando una GPU (requiere).Parallel Computing Toolbox™ Para obtener más información, consulte.Procesamiento de imágenes en una GPU

ejemplo

B = imfilter(A,h,options,...) realiza el filtrado multidimensional según una o más opciones especificadas.

Ejemplos

contraer todo

Lea una imagen en color en el espacio de trabajo y mostrarla.

originalRGB = imread('peppers.png'); imshow(originalRGB)

Cree un filtro de desenfoque de movimiento utilizando la función.fspecial

h = fspecial('motion', 50, 45);

Aplique el filtro a la imagen original para crear una imagen con desenfoque de movimiento. Tenga en cuenta que es más eficiente de la memoria que algunas otras funciones de filtrado en que genera una matriz del mismo tipo de datos que la matriz de la imagen de entrada.imfilter En este ejemplo, la salida es una matriz de.uint8

filteredRGB = imfilter(originalRGB, h); figure, imshow(filteredRGB)

Filtre la imagen de nuevo, esta vez especificando la opción de contorno de réplica.

boundaryReplicateRGB = imfilter(originalRGB, h, 'replicate'); figure, imshow(boundaryReplicateRGB)

De forma predeterminada, usa la correlación porque las funciones de diseño del filtro de Toolbox producen kernels de correlación.imfilter Utilice el parámetro opcional para utilizar la convolución.

Cree una matriz de muestra.

A = magic(5)
A = 5×5

    17    24     1     8    15
    23     5     7    14    16
     4     6    13    20    22
    10    12    19    21     3
    11    18    25     2     9

Cree un filtro.

h = [-1 0 1];

Filtre mediante correlación, el valor predeterminado.

imfilter(A,h)
ans = 5×5

    24   -16   -16    14    -8
     5   -16     9     9   -14
     6     9    14     9   -20
    12     9     9   -16   -21
    18    14   -16   -16    -2

Filtre mediante convolución, especificando con el parámetro opcional.imfilter

imfilter(A,h,'conv')
ans = 5×5

   -24    16    16   -14     8
    -5    16    -9    -9    14
    -6    -9   -14    -9    20
   -12    -9    -9    16    21
   -18   -14    16    16     2

En este ejemplo, la salida de tiene valores negativos cuando la entrada es de clase.imfilterdouble Para evitar valores negativos, convierta la imagen a un tipo de datos diferente antes de llamar.imfilter Por ejemplo, cuando el tipo de entrada es, trunca los valores de salida a.uint8imfilter0 También podría ser apropiado convertir la imagen a un tipo entero con signo.

A = magic(5)
A = 5×5

    17    24     1     8    15
    23     5     7    14    16
     4     6    13    20    22
    10    12    19    21     3
    11    18    25     2     9

Filtre la imagen con.imfilter

h = [-1 0 1]; imfilter(A,h)
ans = 5×5

    24   -16   -16    14    -8
     5   -16     9     9   -14
     6     9    14     9   -20
    12     9     9   -16   -21
    18    14   -16   -16    -2

Observe que el resultado tiene valores negativos. Para evitar valores negativos en la imagen de salida, convierta la imagen de entrada en antes de realizar el filtrado.uint8 Dado que la entrada es de clase, la salida también es de clase y trunca los valores negativos.imfilteruint8uint8imfilter0

A = uint8(magic(5)); imfilter(A,h)
ans = 5x5 uint8 matrix

   24    0    0   14    0
    5    0    9    9    0
    6    9   14    9    0
   12    9    9    0    0
   18   14    0    0    0

Argumentos de entrada

contraer todo

Imagen que se filtrará, especificada como una matriz numérica de cota.

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

Filtro multidimensional, especificado como una matriz N-D de tipo de datos.double

Tipos de datos: double

Opciones que controlan la operación de filtrado, especificadas como un vector de caracteres, un escalar de cadena o un escalar numérico. La siguiente tabla enumera todas las opciones admitidas.

Opciones de contorno

Opción

Descripción

Padding Options

escalar numérico,X

Los valores de la matriz de entrada fuera de los límites de la matriz se asignan al valor.X Cuando no se especifica ninguna opción de relleno, el valor predeterminado es.0

'symmetric'

Los valores de matriz de entrada fuera de los límites de la matriz se calculan mediante reflejo de la matriz en el borde de la matriz.

'replicate'

Se supone que los valores de matriz de entrada fuera de los límites de la matriz equivalen al valor de borde de matriz más cercano.

'circular'

Los valores de matriz de entrada fuera de los límites de la matriz se calculan implícitamente suponiendo que la matriz de entrada es periódica.

Output Size

'same'

La matriz de salida tiene el mismo tamaño que la matriz de entrada. Este es el comportamiento predeterminado cuando no se especifican opciones de tamaño de salida.

'full'

La matriz de salida es el resultado filtrado completo y, por lo tanto, es mayor que la matriz de entrada.

Correlation and Convolution Options

'corr'

realiza el filtrado multidimensional mediante la correlación, que es la misma manera que realiza el filtrado.imfilterfilter2 Cuando no se especifica ninguna opción de correlación o convolución, utiliza la correlación.imfilter

'conv'

realiza el filtrado multidimensional mediante convolución.imfilter

Argumentos de salida

contraer todo

Imagen filtrada, devuelta como una matriz numérica del mismo tamaño y clase que la imagen de entrada,.A

Sugerencias

  • Esta función puede aprovechar la optimización de hardware para los tipos de datos, y para ejecutarse más rápido.uint8uint16int16singledouble

Algoritmos

  • La función calcula el valor de cada píxel de salida mediante aritmética de punto flotante de precisión doble.imfilter Si el resultado supera el intervalo del tipo de datos, trunca el resultado al intervalo permitido del tipo de datos.imfilter Si es un tipo de datos entero, redondea los valores fraccionarios.imfilter

  • Si especifica un kernel de tamaño adecuado, el centro del kernel seh floor((size(h) + 1)/2).

    Por ejemplo, el centro del filtro de 4 elementos es el segundo elemento,.[0.25 0.75 -0.75 -0.25]0.75 Este filtro da resultados idénticos como filtrado con el filtro de 5 elementos.[0 0.25 0.75 -0.75 -0.25]

Capacidades ampliadas

Introducido antes de R2006a