graycomatrix

Создайте матрицу ко-вхождения серого уровня из изображения

Описание

glcms = graycomatrix(I) создает матрицу совместного появления (GLCM) серого уровня из изображения I. Другое имя матрицы сопутствующего вхождения серого уровня является gray-level spatial dependence matrix.

graycomatrix создает GLCM путем вычисления, как часто пиксель со значением уровня серого (интенсивность серого) i происходит горизонтально рядом с пикселем со значением j. (Можно задать другие пространственные отношения пикселей с помощью 'Offsets' параметр.) Каждый элемент (i, j) в glcm задает количество раз, когда пиксель со значением i происходил горизонтально рядом с пикселем со значением j.

пример

glcms = graycomatrix(I,Name,Value) возвращает одну или несколько матриц ко-вхождения серого уровня в зависимости от значений необязательных аргументов пары "имя-значение".

пример

[glcms,SI] = graycomatrix(___) возвращает масштабированное изображение, SI, используется для вычисления матрицы ко-вхождения серого уровня.

Примеры

свернуть все

Считайте полутоновое изображение в рабочую область.

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

Figure contains an axes. The axes contains an object of type image.

Вычислите матрицу совпадения уровня серого (GLCM) для изображения в полутоновом цвете. По умолчанию graycomatrix вычисляет GLCM на основе горизонтальной близости пикселей: [0 1]. Это пиксель рядом с интересующим пикселем в той же строке. Этот пример задает другое смещение: две строки отдельно друг от друга на одном столбце.

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

Создайте простой массив сэмплирования 3 на 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

Вычислите матрицу совпадения уровня серого (GLCM) и верните масштабированное изображение, используемое в вычислении. Путем определения пустых скобок для 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

Считайте полутоновое изображение в рабочую область.

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

Figure contains an axes. The axes contains an object of type image.

Задайте четыре смещения.

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

Вычислите GLCM, также возвращая масштабированное изображение. Отображение масштабированного изображения, выполнение дополнительного перемасштабирования значений данных в область значений [0, 1].

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

Figure contains an axes. The axes contains an object of type image.

Обратите внимание, что функция возвращает массив из четырех GLCM.

whos
  Name           Size              Bytes  Class     Attributes

  I            159x191             30369  uint8               
  SI           159x191            242952  double              
  glcms          8x8x4              2048  double              
  offsets        4x2                  64  double              

Считайте полутоновое изображение в рабочую область.

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

Figure contains an axes. The axes contains an object of type image.

Вычислите GLCM с помощью Symmetric опция, также возвращающая масштабированное изображение. GLCM, созданный при установке Symmetric на true симметрично по своей диагонали и эквивалентно GLCM, описанному Хараликом (1973).

[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

Отображение масштабированного изображения, выполнение дополнительного перемасштабирования значений данных в область значений [0, 1].

imshow(rescale(SI))

Figure contains an axes. The axes contains an object of type image.

Входные параметры

свернуть все

Входное изображение, заданное как 2-D числовая матрица или 2-D логическая матрица.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: 'Offset',[2 0]

Область значений используемых масштабирования входного изображения в серые уровни, заданный как вектор с 2 элементами [low high]. Если N количество серых уровней (см. параметр 'NumLevels') для использования в масштабировании, область значений [low high] делится на N интервалы ширины и значения в интервале будут отображены на один серый уровень. Значения полутонового цвета меньше или равны low масштабируются до 1. Значения полутонового цвета, большие или равные high масштабируются до 'NumLevels'. Если 'GrayLimits' установлено в [], graycomatrix использует минимальное и максимальное значения полутонового цвета в I как пределы, [min(I(:)) max(I(:))], для примера, [0 1] для класса double и [-32768 32767] для int16 классов.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

Количество серых уровней, заданное в виде целого числа. Для примера, если NumLevels 8, graycomatrix масштабирует значения в I поэтому они являются целыми числами от 1 до 8. Количество серых уровней определяет размер матрицы ко-вхождения серого уровня (glcm).

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

Расстояние между интересующим пикселем и его соседом, заданное как массив p -by-2 целых чисел. Каждая строка массива является двухэлементным вектором, [row_offset, col_offset], который задает отношение, или смещение, пары пикселей. row_offset количество строк между представляющим интерес пикселем и его соседом. col_offset количество столбцов между представляющим интерес пикселем и его соседом. Поскольку смещение часто выражается как угол, в следующей таблице перечислены значения смещения, которые задают общие углы, учитывая расстояние D пикселей.

Угол

Смещение

0

[0 D]

45

[-D D]

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

Рисунок иллюстрирует массив: offset = [0 1; -1 1; -1 0; -1 -1]

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

Рассмотрите упорядоченное расположение значений, заданных как логическое значение true или false. Для примера, когда 'Symmetric' установлено в true, graycomatrix считает и 1,2, и 2,1 пары при вычислении количества раз, когда значение 1 соседствует со значением 2. Когда 'Symmetric' установлено в false, graycomatrix учитывает только 1,2 или 2,1, в зависимости от значения 'offset'.

Типы данных: logical

Выходные аргументы

свернуть все

Матрица ко-вхождения серого уровня (или матрицы), возвращенная как NumLevels-by- NumLevels-by- P массив, где P количество смещений в Offset.

Типы данных: double

Масштабированное изображение, используемое при вычислении GLCM, возвращается в виде числовой матрицы того же размера, что и входное изображение. Значения в SI находятся между 1 и NumLevels.

Типы данных: double

Алгоритмы

graycomatrix вычисляет GLCM из масштабированной версии изображения. По умолчанию, если I является бинарным изображением, graycomatrix масштабирует изображение до двух серых уровней. Если I является изображением интенсивности, graycomatrix масштабирует изображение до восьми серых уровней. Можно задать количество серых уровней graycomatrix используется для масштабирования изображения при помощи 'NumLevels' параметр и способ, которым graycomatrix масштабирует значения с помощью 'GrayLimits' параметр.

Следующий рисунок показывает, как graycomatrix вычисляет несколько значений в GLCM изображения 4 на 5 I. Элемент (1,1) в GLCM содержит значение 1 потому что в изображении есть только один образец, где два, горизонтально смежных пикселя имеют значения 1 и 1. Элементный (1,2) в GLCM содержит значение 2 потому что в изображении есть два образцов, где два, горизонтально смежных пикселя имеют значения 1 и 2. graycomatrix продолжает эту обработку, чтобы заполнить все значения в GLCM.

graycomatrix игнорирует пары пикселей, если любой из пикселей содержит NaN, заменяет положительные Infs со значением NumLevels, и заменяет отрицательные Infs со значением 1. graycomatrix игнорирует пограничные пиксели, если соответствующий соседний пиксель падает за контуры изображения.

GLCM, созданный при 'Symmetric' установлено в true симметрично по своей диагонали и эквивалентно GLCM, описанному Хараликом (1973). GLCM, полученный следующим синтаксисом с 'Symmetric' установлено на true

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

эквивалентно сумме двух GLCM, полученных следующими операторами, где 'Symmetric' установлено в false.

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

Ссылки

[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] Харалик, Р.М. и Л.Г. Шапиро. Computer and Robot Vision: Vol. 1, Addison-Wesley, 1992, p. 459.

Представлено до R2006a
Для просмотра документации необходимо авторизоваться на сайте