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.

imgradient

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

Descripción

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

Opcionalmente, puede calcular la magnitud y la dirección del degradado usar una GPU (requiere ).Parallel Computing Toolbox™

ejemplo

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

ejemplo

[Gmag,Gdir] = imgradient(Gx,Gy) devuelve la magnitud y la dirección del degradado desde los degradados direccionales y en las direcciones, respectivamente.GxGyxy

Ejemplos

contraer todo

Lea una imagen en el espacio de trabajo.

I = imread('coins.png');

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

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

Muestra la magnitud y la dirección del degradado.

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

Lea una imagen en el espacio de trabajo.

I = imread('coins.png');

Calcule los degradados - y direccionales.xy- De forma predeterminada, utiliza el operador de degradado Sobel.imgradientxy

[Gx,Gy] = imgradientxy(I);

Mostrar los degradados direccionales.

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

Calcule la magnitud y la dirección del degradado utilizando los degradados direccionales.

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

Muestra la magnitud y la dirección del degradado.

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

Argumentos de entrada

contraer todo

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

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

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

MétodoDescripción
'sobel'

Operador de gradiente Sobel. El degradado de un píxel es una suma ponderada de píxeles en la vecindad de 3 por 3. Para degradados en la dirección vertical ( ), los pesos son: En la dirección, los pesos se transponen.y

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

'prewitt'

Operador de gradiente Prewitt. El degradado de un píxel es una suma ponderada de píxeles en la vecindad de 3 por 3. Para degradados en la dirección vertical ( ), los pesos son: En la dirección, los pesos se transponen.y

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

'central'

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

'intermediate'

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

'roberts'

Operador de gradiente Roberts. El degradado de un píxel es la diferencia entre los píxeles adyacentes diagonales. Para degradados en una dirección, los pesos son: En la dirección ortogonal, los pesos se voltean a lo largo del eje vertical.

[ 1  0    0 -1 ]

Tipos de datos: char | string

Degradado horizontal, especificado como una matriz numérica. El eje horizontal ( ) apunta en la dirección del aumento de los subíndices de columna.x Puede utilizar la función para calcular .imgradientxyGx

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

Degradado vertical, especificado como una matriz numérica del mismo tamaño que .Gx El eje vertical ( ) apunta en la dirección del aumento de subíndices de fila.y Puede utilizar la función para calcular .imgradientxyGy

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

Argumentos de salida

contraer todo

Magnitud de degradado, devuelta como una matriz numérica del mismo tamaño que la imagen o los degradados direccionales y . es de clase , a menos que la imagen de entrada o los degradados direccionales sean de clase, en cuyo caso es de clase.IGxGyGmagdoublesinglesingle

Tipos de datos: double | single

Dirección de degradado, devuelta como una matriz numérica del mismo tamaño que la magnitud del degradado. contiene ángulos en grados dentro del rango [-180, 180] medidos en sentido antihorario desde el eje positivo.GmagGdirx (El eje -apunta en la dirección del aumento de subíndices de columna.) es de clase , a menos que la imagen de entrada o los degradados direccionales sean de clase, en cuyo caso es de clase.xGdirdoubleIsinglesingle

Tipos de datos: double | single

Sugerencias

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

Algoritmos

El enfoque algorítmico adoptado para cada uno de los métodos de degradado enumerados consiste en calcular primero los degradados direccionales y, en las direcciones y, respectivamente.imgradientGxGyxy El eje horizontal ( ) apunta en la dirección del aumento de los subíndices de columna.x El eje vertical ( ) apunta en la dirección del aumento de subíndices de fila.y La magnitud y la dirección del degradado se calculan a partir de sus componentes ortogonales y .GxGy

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

Capacidades ampliadas

Introducido en R2012b