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.

graycomatrix

Cree una matriz de co-ocurrencia a nivel de grises a partir de la imagen

Descripción

glcms = graycomatrix(I) crea una matriz de co-ocurrencia de nivel de grises (GLCM) a partir de la imagen.I Otro nombre para una matriz de co-ocurrencia de nivel de grises es a.matriz de dependencia espacial de nivel gris Además, la palabra co-ocurrencia se utiliza con frecuencia en la literatura sin un guión, coocurrencia.

crea el GLCM calculando la frecuencia con la que un píxel con un valor de nivel de grises (intensidad de escala de gris) se produce horizontalmente junto a un píxel con el valor.graycomatrixij (Puede especificar otras relaciones espaciales de píxel mediante el parámetro.)'Offsets' Cada elemento () en especifica el número de veces que el píxel con valor se produjo horizontalmente adyacente a un píxel con valor.i,jglcmij

ejemplo

glcms = graycomatrix(I,Name,Value,...) Devuelve una o más matrices de co-ocurrencia de nivel de grises, dependiendo de los valores de los pares de nombre/valor opcionales. Los nombres de los parámetros pueden abreviarse y el caso no importa.

ejemplo

[glcms,SI] = graycomatrix(___) Devuelve la imagen escalada, utilizada para calcular la matriz de co-ocurrencia de nivel de grises.SI Los valores están entre y.SI1NumLevels

Ejemplos

contraer todo

Lea una imagen en escala de grises en el espacio de trabajo.

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

Calcule la matriz de co-ocurrencia de nivel de grises (GLCM) para la imagen en escala de grises. Por abandono, calcula el GLCM basado en la proximidad horizontal de los pixeles: [0 1].graycomatrix Ese es el píxel junto al píxel de interés en la misma fila. En este ejemplo se especifica un desfase diferente: dos filas separadas en la misma columna.

glcm = graycomatrix(I,'Offset',[2 0])
glcm = 8×8

       14205        2107         126           0           0           0           0           0
        2242       14052        3555         400           0           0           0           0
         191        3579        7341        1505          37           0           0           0
           0         683        1446        7184        1368           0           0           0
           0           7         116        1502       10256        1124           0           0
           0           0           0           2        1153        1435           0           0
           0           0           0           0           0           0           0           0
           0           0           0           0           0           0           0           0

Cree una matriz de muestra simple de 3 por 6.

I = [ 1 1 5 6 8 8; 2 3 5 7 0 2; 0 2 3 5 6 7]
I = 3×6

     1     1     5     6     8     8
     2     3     5     7     0     2
     0     2     3     5     6     7

Calcule la matriz de co-ocurrencia de nivel de grises (GLCM) y devuelva la imagen escalada utilizada en el cálculo. Al especificar corchetes vacíos para el parámetro, el ejemplo utiliza los valores de escala de grises mínimo y máximo en la imagen de entrada como límites.GrayLimits

[glcm,SI] = graycomatrix(I,'NumLevels',9,'GrayLimits',[])
glcm = 9×9

     0     0     2     0     0     0     0     0     0
     0     1     0     0     0     1     0     0     0
     0     0     0     2     0     0     0     0     0
     0     0     0     0     0     2     0     0     0
     0     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     2     1     0
     0     0     0     0     0     0     0     1     1
     1     0     0     0     0     0     0     0     0
     0     0     0     0     0     0     0     0     1

SI = 3×6

     2     2     6     7     9     9
     3     4     6     8     1     3
     1     3     4     6     7     8

Lea una imagen en escala de grises en el espacio de trabajo.

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

Defina cuatro desplazamientos.

offsets = [0 1; -1 1;-1 0;-1 -1];

Calcule el GLCMs, devolviendo la imagen escalada también. Visualice la imagen escalada, realizando un reescalado adicional de los valores de datos en el intervalo [0,1].

[glcms,SI] = graycomatrix(I,'Offset',offsets); imshow(rescale(SI))

Observe cómo la función devuelve una matriz de cuatro GLCMs.

whos
  Name           Size              Bytes  Class     Attributes    I            159x191             30369  uint8                  SI           159x191            242952  double                 glcms          8x8x4              2048  double                 offsets        4x2                  64  double               

Lea una imagen en escala de grises en el espacio de trabajo.

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

Calcule el GLCM usando la opción, devolviendo la imagen escalada también.Symmetric El GLCM creado cuando se establece en es simétrico a través de su diagonal, y es equivalente a la GLCM descrita por Haralick (1973).Symmetrictrue

[glcm,SI] = graycomatrix(I,'Offset',[2 0],'Symmetric',true); glcm
glcm = 8×8

       28410        4349         317           0           0           0           0           0
        4349       28104        7134        1083           7           0           0           0
         317        7134       14682        2951         153           0           0           0
           0        1083        2951       14368        2870           2           0           0
           0           7         153        2870       20512        2277           0           0
           0           0           0           2        2277        2870           0           0
           0           0           0           0           0           0           0           0
           0           0           0           0           0           0           0           0

Visualice la imagen escalada, realizando un reescalado adicional de los valores de datos en el intervalo [0,1].

imshow(rescale(SI))

Argumentos de entrada

contraer todo

Imagen de entrada, especificada como una matriz 2-D, real, no dispersa, numérica o lógica.

Ejemplo:

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

Argumentos de par nombre-valor

Especifique pares de argumentos separados por comas opcionales. es el nombre del argumento y es el valor correspondiente. deben aparecer dentro de las cotizaciones.Name,ValueNameValueName Puede especificar varios argumentos de par de nombre y valor en cualquier orden como.Name1,Value1,...,NameN,ValueN

Ejemplo:

Rango utilizado escala de la imagen de entrada en niveles de gris, especificado como un vector de dos elementos.[low high] Si es el número de niveles de gris (ver parámetro) a utilizar para escalar, el rango se divide en bins de ancho igual y los valores en una ubicación se asignan a un solo nivel de gris.N'NumLevels'[low high]N Los valores de escala de grises menores o iguales a se escalan a 1.low Los valores de escala de grises mayores o iguales a los que se escala.high'NumLevels' Si se establece en, utiliza los valores de escala de grises mínimo y máximo en como límites, por ejemplo, para la clase Double y para la clase.'GrayLimits'[]graycomatrixI[min(I(:)) max(I(:))][0 1][-32768 32767]int16

Ejemplo:

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

Número de niveles de gris, especificado como un entero. Por ejemplo, si es 8, escala los valores para que sean enteros entre 1 y 8.NumLevelsgraycomatrixI El número de niveles de gris determina el tamaño de la matriz de co-ocurrencia de nivel de grises ().glcm

Ejemplo:

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

Distancia entre el píxel de interés y su vecino, especificado como una matriz de enteros de-por-2.p Cada fila de la matriz es un vector de dos elementos, que especifica la relación o de un par de píxeles. es el número de filas entre el píxel de interés y su vecino. es el número de columnas entre el píxel de interés y su vecino.[row_offset, col_offset]offsetrow_offsetcol_offset Dado que el desfase se expresa a menudo como un ángulo, la tabla siguiente enumera los valores de desfase que especifican ángulos comunes, dada la distancia de píxel D.

Ángulo

Compensar

0

[0 D]

45

[-D D]

90[-D 0]
135[-D -D]

La figura ilustra la matriz:offset = [0 1; -1 1; -1 0; -1 -1]

Ejemplo:

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

Considere el orden de los valores, especificado como el valor booleano o.truefalse Por ejemplo, cuando se establece en, cuenta tanto 1, 2 y 2, 1 emparejamientos al calcular el número de veces que el valor 1 es adyacente al valor 2.'Symmetric'truegraycomatrix Cuando se establece en, sólo cuenta 1, 2 o 2, 1, dependiendo del valor de.'Symmetric'falsegraycomatrix'offset'

Ejemplo:

Tipos de datos: logical

Argumentos de salida

contraer todo

Matriz de co-ocurrencia de nivel de grises (o matrices), devuelta como un-por--por-array de la clase, donde es el número de desplazamientos en.NumLevelsNumLevelsPdoublePOffset

Imagen escalada utilizada en el cálculo de GLCM, devuelta como una matriz del mismo tamaño que la imagen de entrada.double

Algoritmos

calcula el GLCM a partir de una versión escalada de la imagen.graycomatrix De forma predeterminada, si es una imagen binaria, escala la imagen a dos niveles de gris.Igraycomatrix Si es una imagen de intensidad, escala la imagen a ocho niveles de gris.Igraycomatrix Puede especificar el número de niveles de grises que se utilizan para escalar la imagen mediante el parámetro y la forma en que se escalan los valores mediante el parámetro.graycomatrix'NumLevels'graycomatrix'GrayLimits'

La figura siguiente muestra cómo calcula varios valores en el GLCM de la imagen 4-by-5.graycomatrixI El elemento (1, 1) en el GLCM contiene el valor porque hay solamente una instancia en la imagen donde dos, los píxeles adyacentes horizontales tienen los valores y.111 El elemento en el GLCM contiene el valor porque hay dos instancias en la imagen donde dos, los píxeles adyacentes horizontales tienen los valores y. continúa este procesamiento para rellenar todos los valores del GLCM.(1,2)212graycomatrix

omite los pares de píxeles si cualquiera de los píxeles contiene a, reemplaza positivo con el valor y reemplaza negativo con el valor. omite los píxeles del borde, si el píxel vecino correspondiente cae fuera de los límites de la imagen.graycomatrixNaNInfsNumLevelsInfs1graycomatrix

El GLCM creado cuando se establece en es simétrico a través de su diagonal, y es equivalente a la GLCM descrita por Haralick (1973).'Symmetric'true El GLCM producido por la sintaxis siguiente, con el conjunto para'Symmetric'true

 graycomatrix(I, 'offset', [0 1], 'Symmetric', true)

equivale a la suma de los dos GLCMs producidos por las instrucciones siguientes, donde se establece en.'Symmetric'false

graycomatrix(I, 'offset', [0 1], 'Symmetric', false)  graycomatrix(I, 'offset', [0 -1], 'Symmetric', false)

Referencias

[1] Haralick, R.M., K. Shanmugan, and I. Dinstein, "Textural Features for Image Classification", IEEE Transactions on Systems, Man, and Cybernetics, Vol. SMC-3, 1973, pp. 610-621.

[2] Haralick, R.M., and L.G. Shapiro. Computer and Robot Vision: Vol. 1, Addison-Wesley, 1992, p. 459.

Consulte también

Introducido antes de R2006a