graycomatrix

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

Синтаксис

glcms = graycomatrix(I)
glcms = graycomatrix(I,Name,Value,...)
[glcms,SI] = 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, используемый, чтобы вычислить матрицу совместной встречаемости уровня серого. Значения в SI между 1 и NumLevels.

Примеры

свернуть все

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

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

Вычислите матрицу совместной встречаемости уровня серого (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)

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

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

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

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

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

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)

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

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

свернуть все

Введите изображение, заданное как 2D, действительный, неразреженный, числовой или логический массив.

Пример:

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | логический

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

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример:

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

Пример:

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | логический

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

Пример:

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | логический

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

\angle

Смещение

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 | логический

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

Пример:

Типы данных: логический

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

свернуть все

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

Масштабированное изображение, используемое в вычислении GLCM, возвращенного как 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, описанному Haralick (1973). GLCM производится следующим синтаксисом с набором 'Symmetric' к true

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

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

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

Ссылки

[1] Haralick, R.M., К. Шэнмугэн и я. Динштайн, "Структурные Функции Классификации Изображений", Транзакции IEEE в Системах, Человеке, и Кибернетике, Издании SMC-3, 1973, стр 610-621.

[2] Haralick, R.M., и Л.Г. Шапиро. Компьютер и Видение Робота: Издание 1, Аддисон-Уэсли, 1992, p. 459.

Смотрите также

Представлено до R2006a

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