Main Content

imgradient

Encontrar la magnitud y la dirección del gradiente de una imagen 2D

Descripción

[Gmag,Gdir] = imgradient(I) devuelve la magnitud del gradiente, Gmag, y la dirección del gradiente, Gdir, de la imagen 2D en escala de grises o binaria I.

ejemplo

[Gmag,Gdir] = imgradient(I,method) devuelve la magnitud y la dirección del gradiente utilizando el method especificado.

ejemplo

[Gmag,Gdir] = imgradient(Gx,Gy) devuelve la magnitud y la dirección del gradiente a partir de los gradientes direccionales Gx y Gy en las direcciones x e y respectivamente.

Ejemplos

contraer todo

Lea una imagen en el espacio de trabajo.

I = imread('coins.png');

Calcule la magnitud y la dirección del gradiente, especificando el operador de gradiente de Prewitt.

[Gmag, Gdir] = imgradient(I,'prewitt');

Muestre la magnitud y la dirección del gradiente.

figure
imshowpair(Gmag, Gdir, 'montage');
title('Gradient Magnitude, Gmag (left), and Gradient Direction, Gdir (right), using Prewitt method')

Figure contains an axes object. The axes object with title Gradient Magnitude, Gmag (left), and Gradient Direction, Gdir (right), using Prewitt method contains an object of type image.

Lea una imagen en el espacio de trabajo.

I = imread('coins.png');

Calcule los gradientes en las direcciones x e y. De forma predeterminada, imgradientxy usa el operador de gradiente de Sobel.

[Gx,Gy] = imgradientxy(I);

Muestre los gradientes direccionales.

imshowpair(Gx,Gy,'montage')
title('Directional Gradients Gx and Gy, Using Sobel Method')

Figure contains an axes object. The axes object with title Directional Gradients Gx and Gy, Using Sobel Method contains an object of type image.

Calcule la magnitud y la dirección del gradiente utilizando los gradientes direccionales.

[Gmag,Gdir] = imgradient(Gx,Gy);

Muestre la magnitud y la dirección del gradiente.

imshowpair(Gmag,Gdir,'montage')
title('Gradient Magnitude (Left) and Gradient Direction (Right)')

Figure contains an axes object. The axes object with title Gradient Magnitude (Left) and Gradient Direction (Right) contains an object of type image.

Argumentos de entrada

contraer todo

Imagen de entrada, especificada como imagen 2D en escala de grises o 2D binaria.

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

Operador de gradiente, especificado como uno de los siguientes valores.

MétodoDescripción
'sobel'

Operador de gradiente de Sobel. El gradiente de un píxel es una suma ponderada de los píxeles en el entorno de 3 por 3. Para los gradientes en la dirección vertical (y), los pesos son:

[ 1  2  1 
  0  0  0 
 -1 -2 -1 ]
En la dirección x, los pesos se transponen.

'prewitt'

Operador de gradiente de Prewitt. El gradiente de un píxel es una suma ponderada de los píxeles en el entorno de 3 por 3. Para los gradientes en la dirección vertical (y), los pesos son:

[ 1  1  1 
  0  0  0 
 -1 -1 -1 ]
En la dirección x, los pesos se transponen.

'central'

Gradiente de diferencia central El gradiente de un píxel es una diferencia ponderada de los píxeles vecinos. En la dirección y, dI/dy = (I(y+1) - I(y-1))/2.

'intermediate'

Gradiente de diferencia intermedia. El gradiente de un píxel es la diferencia entre un píxel adyacente y el píxel actual. En la dirección y, dI/dy = I(y+1) - I(y).

'roberts'

Operador de gradiente de Roberts El gradiente de un píxel es la diferencia entre los píxeles diagonalmente adyacentes. Para los gradientes en una dirección, los pesos son:

[ 1  0 
  0 -1 ]
En la dirección ortogonal, los pesos se invierten a lo largo del eje vertical.

Tipos de datos: char | string

Gradiente horizontal, especificado como matriz numérica. El eje horizontal (x) apunta en la dirección de los subíndices crecientes de las columnas. Puede utilizar la función imgradientxy para calcular Gx.

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

Gradiente vertical, especificado como matriz numérica del mismo tamaño que Gx. El eje vertical (y) apunta en la dirección de los subíndices crecientes de las filas. Puede utilizar la función imgradientxy para calcular Gy.

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

Argumentos de salida

contraer todo

Magnitud del gradiente, devuelta como una matriz numérica del mismo tamaño que la imagen I o los gradientes direccionales Gx y Gy. Gmag es de la clase double, a menos que la imagen de entrada o los gradientes direccionales sean de tipo de datos single, en cuyo caso es de la clase de datos single.

Tipos de datos: double | single

Dirección del gradiente, devuelta como una matriz numérica del mismo tamaño que la magnitud del gradiente Gmag. Gdir contiene ángulos en grados dentro del rango [-180, 180] medidos en sentido contrario a las agujas del reloj desde el eje x positivo. (El eje x apunta en la dirección de los subíndices crecientes de las columnas). Gdir es de la clase double a menos que la imagen de entrada I o los gradientes direccionales sean de tipo de datos single, en cuyo caso es de la clase de datos single.

Tipos de datos: double | single

Sugerencias

  • Al aplicar el operador de gradiente a los límites de la imagen, se asume que los valores que se encuentran fuera de los límites de la imagen son iguales que el valor de borde más cercano de la imagen. Esto es similar a la opción de límite 'replicate' en imfilter.

Algoritmos

El enfoque algorítmico adoptado en imgradient para cada uno de los métodos de gradiente enumerados es calcular primero los gradientes direccionales Gx y Gy, en las direcciones x e y respectivamente. El eje horizontal (x) apunta en la dirección de los subíndices crecientes de las columnas. El eje vertical (y) apunta en la dirección de los subíndices crecientes de las filas. La magnitud y la dirección del gradiente se calculan entonces a partir de sus componentes ortogonales Gx y Gy.

imgradient no normaliza la salida del coeficiente. Si el intervalo de la imagen de salida del gradiente tiene que coincidir con el intervalo de la imagen de entrada, considere la posibilidad de normalizar la imagen del gradiente, dependiendo del argumento method utilizado. Por ejemplo, con un núcleo de Sobel, el factor de normalización es 1/8, para Prewitt, es 1/6 y para Roberts es 1/2.

Capacidades ampliadas

Historial de versiones

Introducido en R2012b