blockedImage

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

    Описание

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

    Создание

    Описание

    Создайте blockedImage Только для чтения Объекты

    пример

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

    bims = blockedImage(sources) создает массив blockedImage объекты от многочисленных источников. Источник может быть набором файлов или папок с данными изображения. Длина bims равно количеству источников в sources.

    ___ = blockedImage(___,Name,Value) создает blockedImage объект, с помощью аргументов name-value, чтобы установить свойства объектов.

    Создайте перезаписываемый blockedImage Объект

    wbim = blockedImage(destination,size,blockSize,initialValue,'Mode','w') создает writeable blockedImage объект в один или несколько уровней разрешения. destination задает местоположение перезаписываемых данных. size указывает на размер изображения на каждом уровне разрешения. initialValue указывает на начальное значение для каждого элемента массива.

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

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

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

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

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

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

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

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

    Местоположение, чтобы поместить перезаписываемые данные в виде вектора символов или строкового скаляра.

    Целевой тип'imageFormat'
    Имя папки (без расширения файла)

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

    • Для числовых данных изображения, blockedImage хранилища каждый блок как двоичный файл с помощью BINBlocks адаптер.

    • Для категориального и данных изображения struct, blockedImage хранилища каждый блок как файл MAT в папке с помощью MATBlocks адаптер.

    Имя файла с TIF или расширением файла TIFF

    blockedImage данные об объектно-ориентированной памяти как одно изображение TIFF с помощью TIFF адаптер.

    initialValue должно быть числовым или логическим с типом данных uint8int8uint16int16uint32int32единственный'double' или logical.

    Имя файла с расширением файла H5

    blockedImage данные об объектно-ориентированной памяти как одно изображение HDF5 с помощью H5 адаптер.

    initialValue должно быть числовым с типом данных uint8int8uint16int16uint32int32единственный, или double.

    []

    blockedImage данные об объектно-ориентированной памяти как переменная в памяти с помощью InMemory адаптер.

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

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

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

    Если изображение имеет несколько уровней разрешения, то можно задать blockSize как 1 N вектором, чтобы использовать тот же размер блока для всех уровней разрешения.

    Пример: [64 128] задает размер блока 64 128 пикселей для одного изображения разрешения

    Пример: [128 128; 64 64; 32 32] задает три различных размера блока для трех уровней разрешения

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

    • Числовой скаляр. Тип данных initialValue задает значение ClassUnderlying свойство. Значение по умолчанию 0.

    • категориальный скаляр. Значением по умолчанию является <undefined>.

    • Скаляр struct с теми же именами полей как данные. Значением по умолчанию является <undefined>.

    Свойства

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

    Считайте и запишите интерфейс для блокированного объекта изображения в виде одного из этих объектов адаптера.

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

    Можно также создать собственный адаптер с помощью images.blocked.Adapter класс.

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

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

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

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

    Вы не можете задать это свойство, когда вы задаете Mode как 'w'.

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

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

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

    Примечание

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

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

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

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

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

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

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

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

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

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

    Количество уровней разрешения изображения в виде положительного целого числа.

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

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

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

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

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

    Размер, описанный как количество блоков в виде L-by-N матрица положительных целых чисел, где L является количеством уровней разрешения и N, является количеством размерностей. Это свойство зависит от 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/BR2021bd/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'
    
       Settable properties
        No properties.
    

    Создайте блокированное изображение, к которому можно записать данные. Вы задаете формат блокированного изображения в 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]);
    

    Третья размерность содержит цветовые каналы, каждого с пиксельной степенью 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