exponenta event banner

blockedImage

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

    Описание

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

    Создание

    Описание

    Создание объектов BlockedImage, доступных только для чтения

    пример

    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-на-N, где L представляет количество уровней разрешения. blockedImage реплицирует все, что указано для blocksize для дополнительных уровней, при необходимости. Для struct данные, initialValue должны иметь те же имена полей, что и данные. Для categorical данные, initialValue должен иметь тот же категориальный тип, что и окончательные данные.

    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), blockedImage обрабатывает IFD как несколько уровней разрешения.

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

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

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

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

    Размер изображения на каждом уровне разрешения, определяемый как целочисленная матрица L-на-N, где L - количество уровней разрешения, а N - количество размеров изображения. 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-на-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, a categorical значение для категориальных изображений или struct. blockedImage объект использует это значение для заполнения блоков, не имеющих данных в базовом источнике. Значение по умолчанию зависит от типа данных: 0 для числовых типов, <undefined> для категориального и скаляра struct.

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

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

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

    Примечание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Типы данных: 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 объектная функция. blocksubs параметр указывает координаты блока, в который требуется записать данные. 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