exponenta event banner

countEachLabel

Подсчитывает количество пиксельных меток для каждого класса

    Описание

    пример

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

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

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

    Примеры

    свернуть все

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

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

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

    lbimds = blockedImageDatastore(label_bim);

    Подсчитайте метки в хранилище данных заблокированного образа. Метки 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   
    
    

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

    свернуть все

    Хранилище данных заблокированного образа, указанное как 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 открывает новый пул на основе параметров параллели по умолчанию. Этот синтаксис требует Toolbox™ параллельных вычислений.

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

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

    свернуть все

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

    Переменные счетчика пикселейОписание
    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(Панель инструментов компьютерного зрения).

    См. также

    | | (панель инструментов компьютерного зрения)

    Представлен в R2021a