Main Content

fspecial

Crear un filtro 2D predefinido

Descripción

ejemplo

h = fspecial(type) crea un filtro bidimensional h del type especificado. Algunos de los tipos de filtro tienen otros parámetros opcionales, mostrados en las siguientes sintaxis. fspecial devuelve h como núcleo de correlación, que es la forma adecuada para utilizar con imfilter.

h = fspecial('average',hsize) devuelve un filtro promediador h de tamaño hsize.

h = fspecial('disk',radius) devuelve un filtro promediador circular (pillbox) que se sitúa dentro de la matriz cuadrada de tamaño 2*radius+1.

h = fspecial('gaussian',hsize,sigma) devuelve un filtro paso bajo gaussiano rotacionalmente simétrico de tamaño hsize con desviación estándar sigma. No recomendado. En su lugar, use imgaussfilt o imgaussfilt3.

h = fspecial('laplacian',alpha) devuelve un filtro de 3 por 3 que aproxima la forma del operador laplaciano bidimensional; alpha controla la forma del laplaciano.

h = fspecial('log',hsize,sigma) devuelve un filtro laplaciano-gaussiano rotacionalmente simétrico de tamaño hsize con desviación estándar sigma.

h = fspecial('motion',len,theta) devuelve un filtro para aproximar, una vez convolucionado con una imagen, el movimiento lineal de una cámara. len especifica la longitud del movimiento y theta especifica el ángulo de movimiento en grados en sentido contrario a las agujas del reloj. El filtro se convierte en un vector para los movimientos horizontales y verticales. La len predeterminada es 9 y theta es 0, lo que corresponde a un movimiento horizontal de nueve píxeles.

h = fspecial('prewitt') devuelve un filtro de 3 por 3 que enfatiza los bordes horizontales aproximando un gradiente vertical. Para resaltar los bordes verticales, transponga el filtro h'.

[ 1  1  1 
  0  0  0 
 -1 -1 -1 ]

h = fspecial('sobel') devuelve un filtro de 3 por 3 que enfatiza los bordes horizontales utilizando el efecto de suavizado mediante la aproximación de un gradiente vertical. Para resaltar los bordes verticales, transponga el filtro h'.

[ 1  2  1 
  0  0  0 
 -1 -2 -1 ]

Ejemplos

contraer todo

Lea la imagen y muéstrela.

I = imread('cameraman.tif');
imshow(I);

Figure contains an axes object. The axes object contains an object of type image.

Cree un filtro de movimiento y úselo para desenfocar la imagen. Muestre la imagen desenfocada.

H = fspecial('motion',20,45);
MotionBlur = imfilter(I,H,'replicate');
imshow(MotionBlur);

Figure contains an axes object. The axes object contains an object of type image.

Cree un filtro de disco y úselo para desenfocar la imagen. Muestre la imagen desenfocada.

H = fspecial('disk',10);
blurred = imfilter(I,H,'replicate'); 
imshow(blurred);

Figure contains an axes object. The axes object contains an object of type image.

Argumentos de entrada

contraer todo

Tipo de filtro, especificado como uno de los siguientes valores:

Valor

Descripción

'average'

Filtro promediador

'disk'

Filtro promediador circular (pillbox)

'gaussian'

Filtro paso bajo gaussiano. No recomendado. En su lugar, use imgaussfilt o imgaussfilt3.

'laplacian'

Aproxima el operador laplaciano bidimensional

'log'

Filtro laplaciano-gaussiano

'motion'

Aproxima el movimiento lineal de una cámara

'prewitt'

Filtro horizontal de acentuación de bordes Prewitt

'sobel'

Filtro horizontal de acentuación de bordes Sobel

Tipos de datos: char | string

Tamaño del filtro, especificado como entero positivo o vector de 2 elementos de enteros positivos. Utilice un vector para especificar el número de filas y columnas de h. Si se especifica un escalar, h es una matriz cuadrada.

Cuando se utiliza con el tipo de filtro 'average', el tamaño de filtro por defecto es [3 3]. Cuando se utiliza con el tipo de filtro laplaciano-gaussiano ('log'), el tamaño de filtro por defecto es [5 5].

Tipos de datos: double

Radio de un filtro en forma de disco, especificado como número positivo. El filtro es una matriz cuadrada de tamaño 2*radius+1.

Tipos de datos: double

Desviación estándar, especificada como número positivo.

Tipos de datos: double

Forma del laplaciano, especificado como número en el intervalo [0, 1]. Especifique alpha como 0 para obtener un filtro laplaciano de 4 entornos:

[ 0  1 0 
  1 -4 1 
  0  1 0 ]

Tipos de datos: double

Movimiento lineal de la cámara, especificado como escalar numérico, medido en píxeles.

Tipos de datos: double

Ángulo del movimiento de la cámara en grados, especificado como escalar numérico. El ángulo se mide en sentido contrario a las agujas del reloj respecto de la horizontal.

Tipos de datos: double

Argumentos de salida

contraer todo

Núcleo de correlación, devuelto como matriz.

Tipos de datos: double

Algoritmos

Filtros promediadores:

ones(n(1),n(2))/(n(1)*n(2))

Filtros gaussianos:

hg(n1,n2)=e(n12+n22)2σ2

h(n1,n2)=hg(n1,n2)n1n2hg

Filtros laplacianos:

2=2x2+2y2

2=4(α+1)[α41α4α41α411α4α41α4α4]

Filtros lapacianos-gaussianos (LoG):

hg(n1,n2)=e(n12+n22)2σ2

h(n1,n2)=(n12+n222σ2)hg(n1,n2)σ4n1n2hg

Tenga en cuenta que fspecial desplaza la ecuación para asegurar que la suma de todos los elementos del núcleo sea cero (de forma similar al núcleo de Laplace), de forma que el resultado de la convolución de las regiones homogéneas sea siempre cero.

Filtros de movimiento:

  1. Construya un segmento de recta ideal con la longitud y el ángulo que especifican los argumentos len y theta, centrado en el coeficiente central de h.

  2. En cada posición del coeficiente (i,j), calcule la distancia más cercana entre ese lugar y el segmento de recta ideal.

  3. h = max(1 - nearest_distance,0);

  4. Normalizar h: h = h/(sum(h(:)))

Capacidades ampliadas

Historial de versiones

Introducido antes de R2006a