exponenta event banner

blockedImageDatastore

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

    Описание

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

    Создание

    Описание

    пример

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

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

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

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

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

    развернуть все

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

    Свойства

    развернуть все

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

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

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

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

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

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

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

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

    Стоимость

    Значение

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

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

    'replicate'

    Прокладка путем повторения граничных элементов массива.

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

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

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

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

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

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

    Примеры

    свернуть все

    Создайте blockedImage.

    bim = blockedImage('tumor_091R.tif');

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

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

    Прочтите все блоки в хранилище данных.

    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 с категориальным хранилищем данных.

    cbimds = combine(bimds,catbimds);  

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

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

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

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