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

Crear matriz de co-ocurrencia de nivel gris a partir de la imagen

Descripción

glcms = graycomatrix(I) crea una matriz de co-ocurrencia de nivel gris (GLCM) a partir de la imagen.I Otro nombre para una matriz de co-ocurrencia de nivel gris es un archivo .matriz de dependencia espacial a nivel de 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 el valor de nivel de gris (intensidad de escala de grises) se produce horizontalmente adyacente a un píxel con el valor .graycomatrixij (Puede especificar otras relaciones espaciales de píxeles 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 coocurrencia de nivel gris, dependiendo de los valores de los pares de nombre/valor opcionales. Los nombres de los parámetros se pueden abreviar y el caso no importa.

ejemplo

[glcms,SI] = graycomatrix(___) devuelve la imagen escalada, , utilizada para calcular la matriz de co-ocurrencia de nivel gris.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 coocurrencia de nivel de gris (GLCM) para la imagen en escala de grises. De forma predeterminada, calcula el GLCM en función de la proximidad horizontal de los píxeles: [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 desplazamiento 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 coocurrencia de nivel gris (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 desfases.

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

Calcule los GLM, devolviendo la imagen escalada también. Muestre la imagen escalada, realizando un reescalado adicional de los valores de datos al rango [0, 1].

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

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

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 utilizando la opción, devolviendo también la imagen escalada.Symmetric El GLCM creado cuando se establece en es simétrico a través de su diagonal, y es equivalente al GLCM descrito 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

Muestre la imagen escalada, realizando un reescalado adicional de los valores de datos al rango [0, 1].

imshow(rescale(SI))

Argumentos de entrada

contraer todo

Imagen de entrada, especificada como una matriz 2D, 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 opcionales separados por comas de argumentos. es el nombre del argumento y es el valor correspondiente. deben aparecer entre comillas.Name,ValueNameValueName Puede especificar varios argumentos de par de nombre y valor en cualquier orden como .Name1,Value1,...,NameN,ValueN

Ejemplo:

Rango utilizado escalando la imagen de entrada en niveles grises, especificados como un vector de dos elementos.[low high] Si es el número de niveles de gris (consulte el parámetro ) que se utilizará para el escalado, el rango se divide en ubicaciones de igual ancho y los valores de una bandeja se asignan a un único 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 se escalan a .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 coocurrencia de nivel gris ( ).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, especificada como una matriz de enteros -by-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]Compensarrow_offsetcol_offset Dado que el desplazamiento se expresa a menudo como un ángulo, en la tabla siguiente se enumeran los valores de desfase que especifican ángulos comunes, dada la distancia de píxeles 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 la posibilidad de ordenar los valores, especificados como el valor booleano o .truefalse Por ejemplo, cuando se establece en , cuenta los emparejamientos 1,2 y 2,1 al calcular el número de veces que el valor 1 es adyacente al valor 2.'Symmetric'truegraycomatrix Cuando se establece en , solo 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 coocurrencia de nivel gris (o matrices), devuelta como una matriz -by- -by- de clase , donde está 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, la escala 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 gris es el que se utiliza 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 siguiente figura muestra cómo se calculan varios valores en el GLCM de la imagen 4 por 5.graycomatrixI El elemento (1,1) del GLCM contiene el valor porque solo hay una instancia en la imagen donde dos píxeles adyacentes horizontalmente tienen los valores y .111 El elemento del GLCM contiene el valor porque hay dos instancias en la imagen donde dos píxeles adyacentes horizontalmente tienen los valores y . continúa este procesamiento para rellenar todos los valores en el GLCM.(1,2)212graycomatrix

ignora los pares de píxeles si cualquiera de los píxeles contiene un , reemplaza positive por el valor y reemplaza negative por el valor . ignora los píxeles de borde, si el píxel vecino correspondiente queda 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 al GLCM descrito por Haralick (1973).'Symmetric'true El GLCM producido por la siguiente sintaxis, con'Symmetric'true

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

es equivalente a la suma de los dos GLM producidos por las siguientes instrucciones 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