blockedImage

Изображение из дискретных блоков

    Описание

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

    Создание

    Описание

    Создайте заблокированные объекты Image только для чтения

    пример

    bim = blockedImage(source) создает blockedImage объект из заданного источника. source является числом в памяти, категорией или struct массив, или вектор символов или строковый скаляр, который указывает на файл или папку.

    bims = blockedImage(sources) создает массив blockedImage объекты из заданных источников. sources - массив ячеек char векторы, или строковые массивы, указывающий на файлы, или FileSet объект. Длина bims равно количеству источников в sources.

    ___ = blockedImage(___,Name,Value) создает blockedImage объект, используя пары "имя-значение", чтобы задать свойства объекта.

    Создайте объект blockedImage с возможностью записи

    wbim = blockedImage(destination,size,blockSize,initialValue,'Mode','w') создает записываемую blockedImage объект.

    Чтобы создать заблокированное изображение с возможностью записи, представляющее один уровень разрешения, N-D изображение, задайте blockSize как 1-by-N числовой массив и size как 1-by-N числовой массив, задающий размер изображения. initialValue является числовым скаляром, categorical, или struct значение, представляющее начальное значение для каждого элемента массива.

    Чтобы создать заблокированное изображение с возможностью записи, представляющее изображение уровня мультиразрешения, задайте size как L -by N числовой массив, где L представляет количество уровней разрешения. The blockedImage реплицирует все, что вы задаете для blocksize для дополнительных уровней, при необходимости. Для struct данные, initialValue должны иметь те же имена полей, что и данные. Для categorical данные, initialValue должен иметь тот же категориальный тип, что и конечные данные.

    The destination и initialValue аргументы определяют формат файла, используемый blockedImage:

    • Имя папки (без расширения) - Заблокированное изображение создает папку и использует images.blocked.BINBlocks адаптер для записи одного двоичного файла на блок, заполненный числовым initialValue. Для categorical и struct значения, заблокированное изображение использует images.blocked.MATBlocks адаптер. См. Adapter для получения дополнительной информации.

    • Имя файла с .tif или .tiff расширение файла - Заблокированное изображение использует images.blocked.TIFF адаптер для записи файла TIFF. initialvalue должен быть uint8, int8, uint16, int16, uint32, int32, single, double или logical.

    • Имя файла с .h5 extension - Заблокированное изображение использует images.blocked.H5 адаптер для записи файла HDF5. initialvalue должен быть uint8, int8, uint16, int16, uint32, int32, single, или double.

    • [] (пустые скобки) - Заблокированное изображение использует images.blocked.InMemory для хранения изображения в памяти.

    Чтобы задать пользовательский адаптер для других выходных форматов, используйте Adapter параметр.

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

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

    Источник данных изображения, заданный как числовой массив в памяти, categorical массив, или struct массив, или char массив или string скаляр, задающий имя файла или папки.

    Заблокированные изображения поддерживают следующие форматы файлов:

    • Один файл TIFF. Если файл содержит несколько IFD (Image File Directories), blockedImage рассматривает IFD как несколько уровней разрешения.

    • Любой файл изображений, который можно считать imread.

    • Любой источник, созданный адаптерами, включенными в тулбокс, перечислен в Adapter.

    Источники данных изображений, заданные как массив ячеек char векторы, a string массив, или FileSet объект.

    Файл или папка, содержащая данные, заданные как char вектор или string скаляр.

    Размер изображения на каждом уровне разрешения, заданный как целое число L матрица -by N, где L - количество уровней разрешения, а N - количество размерностей изображения. The blockedImage объект всегда сортирует size в порядке убывания по количеству пикселей, независимо от того, как Source сохраняет уровни.

    Размер блоков, заданный как 1-by-N числовой массив.

    Значение пикселя по умолчанию для выгруженных блоков, заданное как скалярный тип ClassUnderlying. Заблокированное изображение использует это значение для заполнения блоков, которые не имеют данных в базовом источнике. Значение по умолчанию 0 для числовых типов, <undefined> для категориального и скалярного struct для struct данные.

    Свойства

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

    Чтение и запись интерфейса для объекта заблокированного изображения, заданная как один из этих адаптеров. Можно также создать собственный адаптер с помощью images.blocked.Adapter класс.

    АдаптерОписание
    images.blocked.BINBlocks Храните каждый блок как двоичный файл больших двоичных объектов в папке.
    images.blocked.GenericImage Храните блоки в одном изображении.
    images.blocked.GenericImageBlocksХраните каждый блок как файл изображений в папке
    images.blocked.H5 Храните блоки в одном HDF5 изображении
    images.blocked.H5Blocks Храните каждый блок как HDF5 файл в папке
    images.blocked.InMemoryХраните блоки в переменной в основной памяти
    images.blocked.JPEGBlocksХраните каждый блок как файл JPEG в папке
    images.blocked.MATBlocks Храните каждый блок как MAT файла в папке.
    images.blocked.PNGBlocks Сохраните каждый блок в виде файла PNG в папке.
    images.blocked.TIFFХраните блоки в одном файле TIFF.

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

    Пример: ["Z:\datasets", "/mynetwork/datasets"]

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

    Размер блоков, заданный как целое число, L матрицу -by N, где L - количество уровней разрешения и N - количество размерностей. BlockSize служит размером по умолчанию данных, загружаемых в основную память в любое время для использования. Это самый маленький модуль данных, которой можно манипулировать с blockedImage интерфейс. Если вы задаете BlockSize с менее чем N размерностей, blockedImage заполняет изображение элементами из Size свойство.

    Это свойство нельзя задать, когда Mode установлено в 'w'.

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

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

    Тип данных пикселя, заданный как char массив, string массив, struct или categorical массив с L элементами. L - это количество уровней разрешения. Каждый элемент массива является типом данных пикселя с соответствующего уровня разрешения. Значения: "logical", "int8", "uint8", "int16", "uint16", "int32", "uint32", "single", и "double".

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

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

    Значение элемента по умолчанию для выгруженных блоков, заданное как числовой скаляр типа, заданного ClassUnderlying, а categorical значение для категориальных изображений или struct. The blockedImage объект использует это значение для заполнения блоков, которые не имеют данных в базовом источнике. Значение по умолчанию варьируется в зависимости от типа данных: 0 для числовых типов, <undefined> для категориального и скалярного struct.

    Типы данных: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | char | categorical | struct

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

    Размер блока ввода-вывода источника изображения, заданный как целое число, L матрицу -by N где N - количество размерностей, а L - количество уровней разрешения. IOBlockSize - размер базового блока ввода-вывода, используемый адаптером для чтения с источника изображения. Это представляет наименьший модуль данных, которую можно записать или считать. Это свойство только для чтения отражает формат базового источника изображения.

    Примечание

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

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

    Текущий режим чтения или записи объекта, заданный как 'r' для режима чтения и 'w' для режима записи.

    Можно задать только Mode на 'w' при создании объекта. Можно изменить значение Mode от 'w' на 'r', в эту точку никакие дальнейшие записи невозможны. Вы не можете изменить Mode от 'r' на 'w'.

    При открытии blockedImage в режиме записи необходимо также задать значения для ImageSize, BlockSize, и InitialValue свойства.

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

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

    Количество размерностей в изображении, заданное как положительное целое число. Для изображений уровня мультиразрешения, которые имеют различное количество размерностей, NumDimensions - это максимальное значение на всех уровнях. Заблокированное изображение расширяет другие уровни с синглтонными размерностями, при необходимости.

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

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

    Количество уровней разрешения изображения, заданное как положительное целое число. Для изображений с одним разрешением значение 1; для мультирезолюционных изображений с L уровнями значение L.

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

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

    Размер изображения на каждом уровне, заданный как целочисленная L матрица -by N, где L - количество уровней разрешения и N - количество размерностей изображения. The blockedImage объект всегда сортирует Size в порядке убывания по количеству пикселей, независимо от того, как Source сохраняет уровни.

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

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

    Размер, выраженный как количество блоков, заданный как целое число L матрице -by N, где N - количество размерностей, а L - количество уровней разрешения. Это свойство зависит от BlockSize свойство. Значение включает частичные блоки.

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

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

    Источник данных изображения, заданный в виде числа в памяти, categorical, или struct массив, или как string скаляр или char вектор, задающий имя файла или папки.

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

    Мировые координаты конечного ребра изображения, заданные как L -by N числовая матрица, где L - количество уровней разрешения и N - количество размерностей. По умолчанию значение Size + 0.5 для каждой размерности и уровня, в результате чего пиксели имеют ширину в одну единицу. Мировые координаты пиксельных центров совпадают с расположениями пиксельных индексов для первого уровня.

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

    Мировые координаты начального ребра изображения, заданные как L -by N числовая матрица, где L - количество уровней, а N - количество размерностей. По умолчанию значение начального края 0.5 в каждой размерности и уровне.

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

    Пользовательские данные, сопоставленные с изображением, заданные как struct. Это поле может быть пустым. Вы можете обновить значение в любое время. Чтобы сохранить это значение в источнике, запишите blockedImage в файл, используя write function, или задайте данные как параметр при создании объекта.

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

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

    applyОбработка блоков заблокированного изображения
    cropСоздайте обрезанную версию заблокированного изображения
    blocksub2subПреобразуйте индексы блоков в пиксельные индексы
    gatherСобирайте блоки в текущую рабочую область
    getBlockСчитайте определенный блок заблокированного изображения
    getRegionСчитайте произвольную область заблокированного изображения
    setBlockПоместите данные в конкретный блок заблокированного изображения
    sub2blocksubПреобразуйте пиксельные индексы в блочные
    sub2worldПреобразуйте пиксельные индексы в блочные
    world2subПреобразуйте мировые координаты в пиксельные индексы
    writeЗапись данных в новое место назначения

    Примеры

    свернуть все

    Создайте заблокированное изображение из примера изображения, включенного в тулбокс.

    bim = blockedImage('tumor_091R.tif');
    

    Отобразите детали заблокированного изображения в командной строке.

    disp(bim)
    
      blockedImage with properties:
    
       Read only properties
                 Source: "/mathworks/devel/bat/BR2021ad/build/matlab/toolbox/images/imdata/tumor_091R.tif"
                Adapter: [1x1 images.blocked.TIFF]
                   Size: [3x3 double]
           SizeInBlocks: [3x3 double]
        ClassUnderlying: [3x1 string]
    
       Settable properties
              BlockSize: [3x3 double]
    
    

    Просмотр заблокированного изображения в окне рисунка.

    bigimageshow(bim)
    

    Считайте данные в рабочую область. В данном примере прочтите образец тома, включенного в тулбокс.

    dmri = tiffreadVolume('mri.tif');
    

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

    bim = blockedImage(dmri);
    

    Отобразите подробности о заблокированном изображении в командной строке.

    disp(bim)
    
      blockedImage with properties:
    
       Read only properties
                 Source: [128x128x27 uint8]
                Adapter: [1x1 images.blocked.InMemory]
                   Size: [128 128 27]
           SizeInBlocks: [1 1 1]
        ClassUnderlying: "uint8"
    
       Settable properties
              BlockSize: [128 128 27]
    
    

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

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

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

    bims = blockedImage(fs);
    

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

    disp(bims)
    
      1x74 blockedImage array with properties:
    
       Read only properties
                 Source: 'Various'
                Adapter: [1x1 images.blocked.GenericImage]
        ClassUnderlying: 'Various'
    
    

    Создайте заблокированное изображение, на которое можно записать данные. Формат заблокированного изображения задается в destination параметр. Чтобы записать в память, задайте пустую матрицу. Вы также должны задать размер изображения и размер блоков, в которые вы хотите уколоть изображение. Параметр начального значения зависит от формата, заданного в пункте назначения. Чтобы создать заблокированное изображение с возможностью записи, задайте 'Mode' параметр со значением 'w' для режима записи.

    destination = [];
    imgsize = [5 7];
    blocksize = [2 2];
    initval = uint8(0);
    bim = blockedImage(destination,imgsize,blocksize,initval, "Mode", 'w');
    

    Запись данных в указанные блоки в заблокированном изображении при помощи setBlock функция объекта. The blocksubs параметр задает координаты блока, в который вы хотите записать данные. The blockdata параметр задает данные для записи в указанный блок. Размер blockdata должен совпадать с размером блока.

    blocksubs = [1 1];
    blockdata = ones(2,2,"uint8");
    setBlock(bim, blocksubs, blockdata)
    

    Закройте изображение для записи.

    Переключите заблокированное изображение в режим чтения путем установки параметра 'Mode' на 'r' для чтения.

    bim.Mode = 'r'
    
    bim = 
    
      blockedImage with properties:
    
       Read only properties
                 Source: [5x7 uint8]
                Adapter: [1x1 images.blocked.InMemory]
                   Size: [5 7]
           SizeInBlocks: [3 4]
        ClassUnderlying: "uint8"
    
       Settable properties
              BlockSize: [2 2]
    
    

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

    fullImage = gather(bim);
    

    Отобразите детали заблокированного изображения в командной строке.

    disp(fullImage)
    
       1   1   0   0   0   0   0
       1   1   0   0   0   0   0
       0   0   0   0   0   0   0
       0   0   0   0   0   0   0
       0   0   0   0   0   0   0
    
    

    Создайте заблокированное изображение из примера изображения, включенного в тулбокс.

    bim = blockedImage('tumor_091R.tif');
    bigimageshow(bim)
    

    Задайте расстояние между центрами пикселей на самом высоком уровне. Эта информация получена из необработанных данных, доступных в https://camelyon17.grand-challenge.org/Data/.

    pext = 0.000226316; % (in millimeters)
    

    Предположим, что верхнее левое ребро первого пикселя начинается с (0,0).

    worldStart = zeros(bim.NumLevels, bim.NumDimensions);
    

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

    worldEnd = bim.Size(1,:)* pext;
    

    Все уровни разрешения охватывают одни и те же мировые координаты.

    worldEnd = repmat(worldEnd, [bim.NumLevels, 1]);
    

    Третья размерность содержит цветовые каналы. Обновите мировые координаты ребер пикселей, чтобы центрировать их на целочисленных значениях (например, 1, 2 и 3) с единичными границами.

    worldStart(:,3) = 0.5;
    worldEnd(:,3) = 3.5;
    

    Просмотр изображения с обновленными координатами.

    bim = blockedImage('tumor_091R.tif',...
        'WorldStart',worldStart,'WorldEnd',worldEnd);
    figure
    h = bigimageshow(bim);
    title('Measured in Millimeters')
    

    Введенный в R2021a
    Для просмотра документации необходимо авторизоваться на сайте