blockedImageDatastore

Datastore для использования с блоками из blockedImage объекты

    Описание

    A blockedImageDatastore объект управляет набором блоков изображений, которые принадлежат одному или нескольким blockedImage объекты. A blockedImageDatastore аналогичен imageDatastore, который управляет набором несвязанных изображений.

    Создание

    Описание

    пример

    bimds = blockedImageDatastore(Images) создает blockedImageDatastore объект, который управляет набором блоков изображений одного или нескольких blockedImage объекты, изображения.

    Если Images содержит объект с несколькими уровнями разрешения, затем blockedImageDatastore выбирает только блоки с самого высокого уровня разрешения. The BlockSize свойство первого элемента в Images - размер блока datastore по умолчанию.

    bimds = blockedImageDatastore(sources) создает хранилище datastore из файлов, заданных sources.

    bimds = blockedImageDatastore(___,Name,Value) также использует пары "имя-значение", чтобы задать одно или несколько свойств, кроме Images и TotalNumBlocks. Можно задать несколько пары "имя-значение". Заключайте каждое имя свойства в кавычки.

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

    расширить все

    Имя заблокированных файлов изображений, заданное как массив ячеек из векторов символов, строковый скаляр или FileSet объект. The blockedImageDatastore преобразует изображения в файлах в заблокированные изображения и устанавливает эти изображения как свойство Images.

    Свойства

    расширить все

    Блоки для включения в datastore, заданные как blockLocationSet объект. Объект задает, какие блоки включать из заблокированного изображения bims. Можно повторить или опустить отдельные блоки. Чтобы получить значение по умолчанию, blockedImageDatastore вызывает selectBlockLocations функция.

    Вы не можете изменить BlockLocationSet свойство после создания blockedImageDatastore.

    Размер блока, заданный как 1-байт- D числовой вектор, где D - количество размерностей первого заблокированного изображения в Images, на первом уровне разрешения в Levels.

    Вы не можете изменить BlockSize свойство после создания blockedImageDatastore.

    Размер дополнительных элементов границы блока в каждом измерении, заданный как 1-байтовый D числовой вектор, где D - количество размерностей первого заблокированного изображения в Images, на первом уровне разрешения в Levels. Значение по умолчанию zeros(1,D).

    Заблокированные изображения, которые поставляют блоки для blockedImageDatastore, заданный как массив blockedImage объекты. Все элементы Images должны иметь одинаковое количество размерностей и иметь один и тот же тип.

    Вы не можете изменить Images свойство после создания blockedImageDatastore.

    Метод, используемый для заполнения неполных блоков, задается в качестве одного из значений в этой таблице. По умолчанию datastore заполняет числовые блоки значением InitialValue свойство первого заблокированного изображения в массиве заблокированных изображений, Images.

    Значение

    Значение

    числовой скаляр

    Дополните неполные блоки заданным скалярным значением. Тип значения зависит от ClassUnderlying из заблокированных изображений в Images.

    'replicate'

    Дополните путем повторения элементов границы массива.

    Дополните частичные блоки, которые существуют на краю, заданные как логический скаляр true или false. Когда true, блокированное изображение datastore добавляет заполнение в соответствии с методом заполнения, заданным в PadMethod свойство.

    Количество блоков для возврата в каждом вызове в read функция, заданная как положительное целое число. Каждый вызов на read функция читается самое большее ReadSize блоки

    Это свойство доступно только для чтения.

    Общее количество доступных блоков, заданное как числовой скаляр.

    Функции объекта

    combineОбъедините данные из нескольких хранилищ данных
    countEachLabelКоличество меток пикселей для каждого класса
    hasdataВозвращает true если больше данных доступно в blockedImageDatastore
    numpartitionsКоличество разделов datastore
    partitionВозврат секционированной части blockedImageDatastore
    previewПредварительный просмотр подмножества данных в datastore
    readЧтение данных и метаданных из blockedImageDatastore
    readallСчитайте все данные из blockedImageDatastore
    resetСбросьте datastore в начальное состояние
    shuffleПеремещение данных в datastore
    subsetСоздайте подмножество datastore или набора файлов
    transformПреобразуйте datastore

    Примеры

    свернуть все

    Создайте blockedImage.

    bim = blockedImage('tumor_091R.tif');

    Создайте datastore, задав уровень разрешения и размер блока.

    bls = selectBlockLocations(bim,"Levels",2,"BlockSize",[512, 512]);
    bimds = blockedImageDatastore(bim, "BlockLocationSet", bls);

    Прочтите все блоки в datastore.

    b = readall(bimds)
    b=9×1 cell array
        {512×512×3 uint8}
        {512×512×3 uint8}
        {512×512×3 uint8}
        {512×512×3 uint8}
        {512×512×3 uint8}
        {512×512×3 uint8}
        {512×512×3 uint8}
        {512×512×3 uint8}
        {512×512×3 uint8}
    
    

    Отобразите заблокированное изображение

    montage(b)

    Создайте matlab.io.datastore.FileSet объект, содержащий несколько файлов изображений из папки выборки файла изображений тулбокса.

    fs = matlab.io.datastore.FileSet(...
         fullfile(matlabroot,'toolbox','images','imdata'),...
        "FileExtensions", {'.png'});

    Создайте blockedImage объект, указывающий адаптер. Это экономит время, пропуская необходимость проверки каждого файла для выбора подходящего адаптера.

    readAdapter = images.blocked.GenericImage();
    bims = blockedImage(fs,'Adapter',readAdapter);

    Все изображения должны иметь одинаковое количество размерностей, поэтому сохраняйте только изображения RGB.

    bims = bims([bims.NumDimensions]==3);
    bimds = blockedImageDatastore(bims, "BlockSize", [300 500],...
         "PadMethod", "replicate");

    Отобразите все изображения в blockedImageDatastore.

    montage(readall(bimds), 'Border', 2, 'BackgroundColor','w');

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

    Создайте blockedImage.

    bim = blockedImage('tumor_091R.tif');

    Задайте перекрытия блоков.

    blockSize = [512 512];
    overlapPct = 0.5;
    blockOffsets = round(blockSize.*overlapPct);
    bls = selectBlockLocations(bim,...
          'BlockSize', blockSize,...
          'BlockOffSets', blockOffsets,...
          'ExcludeIncompleteBlocks', true);

    Создайте blockedImageDatastore.

    bimds = blockedImageDatastore(bim, "BlockLocationSet", bls);

    Отображение перекрывающихся блоков.

    bimds.ReadSize = 6;
    blocks = read(bimds);
    montage(blocks, "BorderSize", 5, "BackgroundColor", 'b');

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

    Создайте blockedImage.

    bim = blockedImage('tumor_091R.tif');

    Создайте маску на самом грубом уровне.

    bmask = apply(bim, @(bs)~imbinarize(im2gray(bs.Data)),"Level",3);

    Создайте blockedImageDatastore для блоков, которые имеют по меньшей мере 90% пикселей 'on' в окрашенной области, заданной маской.

    mbls = selectBlockLocations(bim,...
         'Levels', 1, ...
         'Masks', bmask, 'InclusionThreshold', 0.90,...
         'BlockSize', [256 256]);
    bimds = blockedImageDatastore(bim, 'BlockLocationSet', mbls);

    Считывайте блоки и отображайте их.

    bimds.ReadSize = 5;
    blocks = read(bimds);
    montage(blocks, "BorderSize", 5, "BackgroundColor", 'b')

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

    Создайте заблокированные изображения из числовых и маркированных данных.

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

    Создание blockedImageDatastore объекты для каждого заблокированного изображения.

    bimds = blockedImageDatastore(bim);
    lbimds = blockedImageDatastore(lbim);

    Преобразуйте маркированные числовые данные в категориальные данные.

    catbimds = transform(lbimds,...
          @(bs){categorical(bs{1}, [0,1, 2, 3], ["Unknown", "Flower", "Leaf", "Background"])});

    Объедините исходные blockedImageDatastore с категориальным datastore.

    cbimds = combine(bimds,catbimds);  

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

    data = read(cbimds);
    imshow(labeloverlay(data{1},data{2}));  

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

    Введенный в R2021a