bigimageDatastore

Datastore, чтобы управлять блоками больших данных изображения

Описание

bigimageDatastore объект управляет набором блоков изображений, которые принадлежат одному или нескольким bigimage объекты. bigimageDatastore походит на imageDatastore, который управляет набором несвязанных изображений.

Создание

Описание

Создайте Datastore который Блоки Чтений По Целому Изображению

bigds = bigimageDatastore(images) создает datastore, который управляет набором блоков изображений на самом прекрасном уровне разрешения одного или нескольких bigimage объекты, Изображения.

bigds = bigimageDatastore(images,levels) создает datastore, который управляет набором блоков изображений одного или нескольких bigimage объекты, Изображения, на заданных уровнях разрешения, Уровнях.

пример

bigds = bigimageDatastore(images,levels,Name,Value) также пары "имя-значение" использования, чтобы установить одно или несколько Свойств за исключением BlockLocationSet. Можно задать несколько пар "имя-значение". Заключите каждое имя свойства в кавычки.

Пример: bigimageDatastore(bigimg,3,'BlockSize',[128 128],'IncompleteBlocks','pad') создает datastore, который читает блоки размера 128 128 на уровне 3 разрешения от большого изображения bigimg и нулевые клавиатуры частичные блоки ребра.

Создайте Datastore который Блоки Чтений в Заданных Местоположениях

пример

bigds = bigimageDatastore(images,'BlockLocationSet',blockLocationSet) создает datastore, который читает блоки из bigimage объекты, Изображения, с помощью уровня разрешения, размера блока и положений блока заданы BlockLocationSet.

bigds = bigimageDatastore(images,'BlockLocationSet',blockLocationSet,Name,Value) также пары "имя-значение" использования, чтобы установить один или несколько BorderSize, IncompleteBlocks, PadMethod и свойств ReadSize. Можно задать несколько пар "имя-значение". Заключите каждое имя свойства в кавычки.

Пример: bigimageDatastore(bigimg,'BlockLocationSet',bls,'ReadSize',4) создает datastore, который читает четыре блока за один раз из больших изображений bigimg согласно положению, размер блока и уровень разрешения заданы bls.

Свойства

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

Блокируйте местоположения в виде a blockLocationSet объект.

Блокируйте смещения в виде вектора 1 на 2 положительных целых чисел формы [numrows numcols].

Значение по умолчанию равно BlockSize. Перекрывать блоки во время вызовов read, задайте меньшее значение. Чтобы добавить разрыв между блоками, задайте большее значение.

Размер блока считанных данных в виде вектора 1 на 2 положительных целых чисел формы [numrows numcols]. Значение по умолчанию равно свойству BlockSize первого большого изображения в Изображениях на первом уровне разрешения на Уровнях.

Ограничьте размер в виде вектора 1 на 2 неотрицательных целых чисел формы [m n]. Функция добавляет m строки выше и ниже каждого блока и n столбцы налево и право на каждый блок с данными из соседних блоков. Для блоков, которые лежат на ребре изображения, данные дополнены по данным IncompleteBlocks. По умолчанию datastore не добавляет границу в блоки.

Большие изображения, которые предоставляют блоки для bigimageDatastoreВ виде b - вектор элемента из bigimage объекты. Чтобы считать различные уровни разрешения из того же большого изображения, задайте то же изображение многократно в векторе.

Метод, чтобы обработать блоки ребра, которые меньше, чем BlockSize в виде одного из этих значений.

Значение

Значение

"same"

Возвратите данные одного размера с блоком ребра.

"exclude"

Не включайте блоки ребра в вызовы read.

"pad"

Заполните неполные блоки к тому же размеру как BlockSize использование метода клавиатуры задано PadMethod.

Уровень разрешения блоков из каждого большого изображения в Изображениях в виде положительного целочисленного скаляра или b - вектор элемента из положительных целых чисел. Если вы задаете скалярное значение, то все большие блоки предоставления изображений к datastore на том же уровне разрешения.

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

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

Значение

Значение

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

Заполните числовой массив элементами постоянного значения.

скаляр строки

Заполните категориальный массив заданным классом в свойстве Classes базового bigimage.

"replicate"

Клавиатура путем повторения элементов границы массива.

"symmetric"

Заполните массив зеркальными отражениями себя.

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

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

combineОбъедините данные от нескольких datastores
countEachLabelСчитайте количество пиксельных меток для каждого класса bigimageDatastore
hasdataОпределите, доступны ли данные для чтения
numpartitionsКоличество разделов datastore
partitionРаздел bigimageDatastore
previewПодмножество предварительного просмотра данных в datastore
readСчитайте данные из bigimageDatastore
readRelativeСчитайте соседний блок из bigimageDatastore использование относительного положения
resetСброс Datastore к начальному состоянию
shuffleПереставьте данные в datastore
transformПреобразуйте datastore
isPartitionableОпределите, partitionable ли datastore
isShuffleableОпределите, shuffleable ли datastore

Примеры

свернуть все

Создайте bigimage использование модифицированной версии изображения "tumor_091.tif" от набора данных CAMELYON16. Оригинальное изображение является учебным изображением лимфатического узла, содержащего ткань опухоли. Оригинальное изображение имеет восемь уровней разрешения, и самый прекрасный уровень имеет разрешение 53760 61440. Модифицированное изображение имеет только три крупных уровня разрешения. Пространственная ссылка модифицированного изображения была настроена, чтобы осуществить сопоставимое соотношение сторон и указать функции на каждом уровне.

bim = bigimage('tumor_091R.tif');

Отобразите размер блока по умолчанию bigimage на каждом уровне разрешения. Размер блока является вектором с 2 элементами из формы [numrows, numcols].

t = table((1:3)',bim.BlockSize,'VariableNames',["Level" "Block Size"]);
disp(t)
    Level     Block Size 
    _____    ____________

      1      1024    1024
      2      1024    1024
      3      1024    1024

Отобразите bigimage при помощи bigimageshow функция.

bigimageshow(bim);

Создайте bigimageDatastore на уровне 1 разрешения. Задайте размер блока не по умолчанию. Установите datastore читать четыре блока за один раз.

bimds = bigimageDatastore(bim,2,'BlockSize',[512 512],'ReadSize',4)
bimds = 
  bigimageDatastore with properties:

            ReadSize: 4
          BorderSize: [0 0]
           PadMethod: 0
              Images: [1x1 bigimage]
              Levels: 2
           BlockSize: [512 512]
        BlockOffsets: [512 512]
    IncompleteBlocks: 'same'
    BlockLocationSet: [1x1 blockLocationSet]

Считайте один пакет данных из datastore. Заметьте, что третий блок является частичным блоком ребра и имеет меньший размер, чем внутренние блоки. Отобразите возвращенные закрашенные фигуры изображений как монтаж. Монтаж отображает третий блок с более толстой границей, потому что ширина блока меньше, чем ширина полных блоков.

blocks = read(bimds)
blocks=4×1 cell array
    {512x512x3 uint8}
    {512x512x3 uint8}
    {512x316x3 uint8}
    {512x512x3 uint8}

montage(blocks,'Size',[1 bimds.ReadSize],'BorderSize',5,'BackgroundColor','k');

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

blocks = read(bimds)
blocks=4×1 cell array
    {512x512x3 uint8}
    {512x316x3 uint8}
    {226x512x3 uint8}
    {226x512x3 uint8}

montage(blocks,'Size',[1 bimds.ReadSize],'BorderSize',5,'BackgroundColor','k');

Считайте последний пакет данных из datastore. Операция чтения возвращает частичный пакет, который содержит единственную остающуюся закрашенную фигуру. Отобразите закрашенную фигуру.

blocks = read(bimds)
blocks = 1x1 cell array
    {226x316x3 uint8}

montage(blocks,'Size',[1 bimds.ReadSize],'BorderSize',5,'BackgroundColor','k');

Создайте bigimage использование модифицированной версии изображения "tumor_091.tif" от набора данных CAMELYON16. Оригинальное изображение является учебным изображением лимфатического узла, содержащего ткань опухоли. Оригинальное изображение имеет восемь уровней разрешения, и самый прекрасный уровень имеет разрешение 53760 61440. Модифицированное изображение имеет только три крупных уровня разрешения. Пространственная ссылка модифицированного изображения была настроена, чтобы осуществить сопоставимое соотношение сторон и указать функции на каждом уровне.

bim = bigimage('tumor_091R.tif');

Отобразите bigimage при помощи bigimageshow функция.

h = bigimageshow(bim);

Создайте маску на самом грубом уровне разрешения, сохранив исходную пространственную информацию о ссылке.

clevel = bim.CoarsestResolutionLevel;
imcoarse = getFullLevel(bim,clevel);
stainMask = ~imbinarize(rgb2gray(imcoarse));
bmask = bigimage(stainMask,'SpatialReferencing',bim.SpatialReferencing(clevel));

Задайте местоположение блоков, чтобы читать из bigimage при помощи selectBlockLocations функция. Установите размер блока как 256 256 пиксели. Выберите блоки, которые составляют по крайней мере 75% в ROI, заданном маской путем определения 'InclusionThreshold' аргумент пары "имя-значение". По умолчанию, selectBlockLocations выбирает блоки из самого прекрасного уровня разрешения большого изображения.

t = 0.75;
blockSize = [256 256];
blockSet = selectBlockLocations(bim,"BlockSize",blockSize, ...
    "Masks",bmask,"InclusionThreshold",t);

Создайте bigimageDatastore это читает четыре блока за один раз из местоположений, заданных blockLocationSet.

bimds = bigimageDatastore(bim,"BlockLocationSet",blockSet,"ReadSize",4);

К предварительному просмотру, какие закрашенные фигуры читаются datastore, отобразите маску по исходному bigimage использование того же размера блока и порога включения. Наложение подсвечивает в зеленом закрашенные фигуры, которые составляют по крайней мере 75% в ROI, заданном маской.

showmask(h,bmask,'BlockSize',blockSize,'InclusionThreshold',t)

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

blocks = read(bimds);
montage(blocks,'Size',[1 bimds.ReadSize],'BorderSize',5,'BackgroundColor','k');

Создайте bigimage использование модифицированной версии изображения "tumor_091.tif" от набора данных CAMELYON16. Оригинальное изображение является учебным изображением лимфатического узла, содержащего ткань опухоли. Оригинальное изображение имеет восемь уровней разрешения, и самый прекрасный уровень имеет разрешение 53760 61440. Модифицированное изображение имеет только три крупных уровня разрешения. Пространственная ссылка модифицированного изображения была настроена, чтобы осуществить сопоставимое соотношение сторон и указать функции на каждом уровне.

bim = bigimage('tumor_091R.tif');

Отобразите целый bigimage на самом прекрасном уровне разрешения.

bshow = bigimageshow(bim);

Задайте четыре [x y] местоположения блока от самого прекрасного уровня. Первые два блока перекрываются в вертикальном направлении. Вторые два блока смежны горизонтально.

xyLocations = [ ...
    2800 1300; ...
    2800 1400; ...
    1500 2400; ...
    1800 2400];
blockSize = [300,300];

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

imageNumber = [1 1 1 1]';

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

locationSet = blockLocationSet(imageNumber,xyLocations,blockSize);

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

bimds = bigimageDatastore(bim,'BlockLocationSet',locationSet);

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

bimds.ReadSize = 2;
while hasdata(bimds)
    figure
    blocks = read(bimds);
    montage(blocks,'BorderSize',5,'BackgroundColor','b');
end

Вопросы совместимости

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

Ссылки

[1] Bejnordi, Babak Ehteshami, Митко Вета, Пол Джоханнс ван Дист, Брэм ван Джиннекен, Нико Карссемейджер, Герт Литьенс, Йерун А. В. М. ван дер Лак, и др. “Диагностическая Оценка Алгоритмов Глубокого обучения для Обнаружения Метастаз Лимфатического узла в Женщинах С Раком молочной железы”. JAMA 318, № 22 (12 декабря 2017): 2199–2210. https://doi.org/10.1001/jama.2017.14585.

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