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.

fspecial

Crear filtro 2D predefinido

Descripción

ejemplo

h = fspecial(type) crea un filtro bidimensional del archivo .htype Algunos de los tipos de filtro tienen parámetros adicionales opcionales, que se muestran en las sintaxis siguientes. devuelve como un kernel de correlación, que es la forma adecuada para usar con .fspecialhimfilter

h = fspecial('average',hsize) devuelve un filtro de promediación de tamaño.hhsize

h = fspecial('disk',radius) devuelve un filtro de promediación circular (pillbox) dentro de la matriz cuadrada de tamaño.2*radius+1

h = fspecial('gaussian',hsize,sigma) devuelve un filtro gaussiano de paso bajo rotacionalmente de tamaño con desviación estándar.hsizesigma No se recomienda. Usar o en su lugar.imgaussfiltimgaussfilt3

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

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

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

h = fspecial('prewitt') devuelve un filtro de 3 por 3 que enfatiza los bordes horizontales mediante la aproximación de un degradado vertical. Para enfatizar 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 mediante el efecto de suavizado mediante la aproximación de un degradado vertical. Para enfatizar los bordes verticales, transponga el filtro .h'

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

Ejemplos

contraer todo

Lea la imagen y muésela.

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

Cree un filtro de movimiento y utilícelo para desenfocar la imagen. Muestre la imagen borrosa.

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

Cree un filtro de disco y utilícelo para desenfocar la imagen. Muestre la imagen borrosa.

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

Argumentos de entrada

contraer todo

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

Valor

Descripción

'average'

Filtro de promediación

'disk'

Filtro de promediación circular (pillbox)

'gaussian'

Filtro gaussiano de paso bajo. No se recomienda. Usar o en su lugar.imgaussfiltimgaussfilt3

'laplacian'

Aproximadamente el operador laplaciano bidimensional

'log'

Laplacian de filtro gaussiano

'motion'

Aproximadamente el movimiento lineal de una cámara

'prewitt'

Filtro horizontal de enfatizar bordes Prewitt

'sobel'

Filtro horizontal de enfatizar bordes Sobel

Tipos de datos: char | string

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

Cuando se utiliza con el tipo de filtro, el tamaño de filtro predeterminado es .'average'[3 3] Cuando se utiliza con el tipo de filtro Laplacian de Gaussian ( ), el tamaño de filtro predeterminado es .'log'[5 5]

Tipos de datos: double

Radio de un filtro en forma de disco, especificado como un número positivo.

Tipos de datos: double

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

Tipos de datos: double

Forma del Laplaciano, especificada como escalar en el rango [0 1].

Tipos de datos: double

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

Tipos de datos: double

Angulo del movimiento de la cámara, especificado como un escalar numérico, medido en grados, en sentido contrario a las agujas del reloj.

Tipos de datos: double

Argumentos de salida

contraer todo

Kernel de correlación, devuelto como una matriz.

Tipos de datos: double

Algoritmos

Promedio de filtros:

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 laplacianos de Gaussian (LoG):

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

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

Tenga en cuenta que cambia la ecuación para asegurarse de que la suma de todos los elementos del núcleo es cero (similar al kernel de Laplace) para que el resultado de convolución de regiones homogéneas sea siempre cero.fspecial

Filtros de movimiento:

  1. Construir un segmento de línea ideal con la longitud y el ángulo especificados por los argumentos y, centrado en el coeficiente central de .lenthetah

  2. Para cada ubicación de coeficiente, calcule la distancia más cercana entre esa ubicación y el segmento de línea ideal.(i,j)

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

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

Capacidades ampliadas

Introducido antes de R2006a