countEachLabel

Количество меток пикселей для каждого класса

    Описание

    пример

    counts = countEachLabel(bimds) считает вхождение каждой пиксельной метки во всех блоках, представленных блокированным datastore изображения bimds.

    counts = countEachLabel(___,Name,Value) задает дополнительные параметры.

    Если bimds содержит категориальные данные, countEachLabel получает имена классов из категорий, заданных в InitialValue свойство первого заблокированного изображения. В этом случае не задайте значения для 'Classes' и 'PixelLabelIDs' параметры. Если bimds содержит числовые данные, необходимо задать значения для 'Classes' и 'PixelLabelIDs' параметры.

    Примеры

    свернуть все

    Создайте заблокированное изображение из образца изображения метки.

    label_bim = blockedImage('yellowlily-segmented.png', 'BlockSize', [512 512]);

    Создайте хранилище datastore заблокированного изображения из заблокированного изображения.

    lbimds = blockedImageDatastore(label_bim);

    Подсчитайте метки в заблокированном datastore изображений. Метки 0 и 3 оба сопоставляют с 'Background'.

    countEachLabel(lbimds, ...
          "Classes", ["Background", "Flower", "Leaf", "Background"],...
          "PixelLabelIDs", [0, 1, 2, 3])
    ans=3×3 table
            Name        PixelCount    BlockPixelCount
        ____________    __________    _______________
    
        "Background"    2.3706e+06      3.1457e+06   
        "Flower"        4.3349e+05      1.5729e+06   
        "Leaf"          3.4159e+05      2.0972e+06   
    
    

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

    свернуть все

    Заблокированные изображения datastore, заданные как blockedImageDatastore объект.

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

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

    Пример: countEachLabel(lbimds, ... "Classes",["Background","Flower","Leaf","Background"],... "PixelLabelIDs",[0,1,2,3])

    Имена классов, заданные как строковые массивы или массив ячеек char векторы.

    Пример: "Classes",["Background","Flower","Leaf"]

    Типы данных: char | string | cell

    Значения для каждой метки, заданные как числовой массив значений с той же длиной, что и 'Classes'. Этот параметр обеспечивает отображение числовых значений с классом меток.

    Пример: "PixelLabelIDs",[0,1,2,3]

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

    Используйте новый или существующий параллельный пул, заданный как логический скаляр true или false. Если параллельный пул не активен, countEachLabel открывает новый пул на основе параметров параллели по умолчанию. Для этого синтаксиса требуется Parallel Computing Toolbox™.

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

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

    свернуть все

    Считает вхождение каждой пиксельной метки во всех блоках, представленных блокированным datastore изображения, возвращенной как таблица, содержащая три переменные.

    Переменные количества пикселейОписание
    NameИмя класса метки пикселя
    PixelCountКоличество пикселей данного класса во всех блоках
    ImagePixelCountОбщее количество пикселей в блоках, имеющих образец данного класса

    Совет

    Можно использовать информацию о метке, возвращенную countEachLabel вычисление весов классов для балансировки классов. Для примера, для маркированных пиксельных данных в tbl:

    • Равномерный класс балансировки взвешивает каждый класс таким образом, чтобы каждый содержал равномерную предшествующую вероятность:

      numClasses = height(tbl)
      prior = 1/numClasses;
      classWeights = prior./tbl.PixelCount

    • Обратная балансировка частот взвешивает каждый класс таким образом, что недостаточно представленным классам придается более высокий вес:

      totalNumberOfPixels = sum(tbl.PixelCount)
      frequency = tbl.PixelCount / totalNumberOfPixels;
      classWeights = 1./frequency

    • Медианная частотная балансировка взвешивает каждый класс, используя медианную частоту. Вес для каждого класса c определяется как median(imageFreq)/imageBlockFreq(c) где imageBlockFreq(c) - количество пикселей данного класса, разделенное на общее количество пикселей в блоках изображений, которые имели образец данного класса c.

      imageBlockFreq = tbl.PixelCount ./ tbl.BlockPixelCount
      classWeights = median(imageBlockFreq) ./ imageBlockFreq
      

    Вычисленные веса классов можно передать в pixelClassificationLayer (Computer Vision Toolbox).

    См. также

    | | (Computer Vision Toolbox)

    Введенный в R2021a