blockedImage

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

    Описание

    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') создает writeable blockedImage объект.

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

    Чтобы создать перезаписываемое блокированное изображение, представляющее изображение уровня мультиразрешения, задайте size как L-by-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 должен быть uint8int8uint16int16uint32int32единственный'double' или logical.

    • Имя файла с .h5 расширение – Блокированное изображение использует images.blocked.H5 адаптер, чтобы записать файл HDF5. initialvalue должен быть uint8int8uint16int16uint32int32единственный, или double.

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

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

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

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

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

    Блокированные изображения поддерживают эти форматы файлов:

    • Один файл TIFF. Если файл содержит несколько IFDs (Директории Файла изображения), blockedImage обрабатывает IFDs как несколько уровней разрешения.

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

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

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

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

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

    Размер блоков в виде числового массива 1 на 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"int8uint8int16uint16int32uint32единственный, и "double".

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

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

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

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

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

    Размер блока ввода-вывода источника изображения в виде с целочисленным знаком, L-by-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 с целочисленным знаком-by-N матрица, где L является количеством уровней разрешения и N, является количеством размерностей изображения. 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 функция, или задают данные как параметр, когда вы создаете объект.

    Типы данных: 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]
    
    

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

    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)
    

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

    Переключите блокированное изображение на режим чтения путем устанавливания параметра 'Режима' на '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]);
    

    Третья размерность содержит цветовые каналы. Обновите мировые координаты ребер пикселей, чтобы сосредоточить их на целочисленных значениях (e.g. 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