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 имя аргумента и 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™.

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

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

    свернуть все

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

    Пиксельные переменные количестваОписание
    NameИмя класса метки Pixel
    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) where imageBlockFreq(c) количество пикселей данного класса, разделенного на общее количество пикселей в блоках изображений, которые имели экземпляр данного класса c.

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

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

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

    | | (Computer Vision Toolbox)

    Введенный в R2021a