exponenta event banner

bigimage

(Не рекомендуется) Внешняя обработка очень больших изображений

bigimage объект не рекомендуется. Используйте blockedImage вместо этого объект. Дополнительные сведения см. в разделе Вопросы совместимости.

Описание

A bigimage объект хранит информацию о большом файле изображения TIFF и содержащихся в нем данных изображения. A bigimage представляет изображения как меньшие блоки данных, которые могут быть независимо загружены и обработаны.

Использовать bigimage объект для визуализации и обработки изображений, которые слишком велики для размещения в памяти, или при обработке изображения требуется больше памяти, чем доступно. Кроме того, объект может:

  • Чтение, обработка и отображение изображений с различными уровнями разрешения (пирамиды изображений).

  • Считывание произвольных областей изображения.

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

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

Создание

Описание

пример

bigimg = bigimage(filename) создает bigimage объект из большого файла изображения с именем filename.

bigimg = bigimage(dirname) создает bigimage объект из каталога с именем dirname содержит файлы с данными больших изображений.

bigimg = bigimage(varname) создает bigimage объект из переменной varname в рабочей области.

bigimg = bigimage(spatialReferencing,channels,classUnderlying) создает записываемый bigimage и устанавливает свойства TravingReferencing, Channel и ClassBasing без инициализации данных изображения.

bigimg = bigimage(levelSizes,channels,classUnderlying) создает записываемый bigimage и устанавливает свойства Learch Size, Channel и ClassBasing без инициализации данных изображения.

bigimg = bigimage(___,'Classes',classes,'PixelLabelIDs',pixelLabelIDs) создает bigimage объект с категориальными данными. Укажите имена классов с помощью свойства Classes и сопоставления значений меток пикселей изображения с категориальными именами классов с помощью свойства PixelLabelID.

bigimg = bigimage(___,Name,Value) использует пары «имя-значение» для задания одного или нескольких свойств BlockSize, ReadingReferencing, UndingID, UnloadingValue. Можно указать несколько пар имя-значение. Заключите каждое имя свойства в кавычки.

Например, bigimage(bigfile,'BlockSize',[256 256],'UnloadedValue',128) создает большое изображение из файла bigfile размер блока 256 на 256 пикселей и значение пикселя по умолчанию 128.

Входные аргументы

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

Имя файла большого изображения, указанного как вектор символа или скаляр строки. Поддерживаются форматы файлов TIFF и BigTIFF. Этот аргумент задает свойство DataSource.

Имя каталога больших изображений, заданного как вектор символов или скаляр строки. Этот аргумент задает свойство DataSource.

Большая переменная изображения в рабочей области, заданная как числовой массив размера m-by-n для одноканального изображения или m-by-n-by-c для изображения с цветовыми каналами c.

Свойства

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

Свойства файла изображения

Местоположение данных, поддерживающих большое изображение, указанное как символьный вектор. Поддерживаются форматы файлов TIFF и BigTIFF.

При создании bigimage объект без указания имени большого файла изображения, затем значение DataSource является ''. При создании bigimage объект из переменной в рабочей области, затем значение DataSource является 'variable'.

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

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

Исходные метаданные, указанные как структура, например возвращенные imfinfo.

Свойства данных изображения

Размер блока, заданный как 2-элементный вектор строки положительных целых чисел вида [numrows numcols]. Размер блока - это наименьшая единица данных, bigimage объект может читать или записывать.

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

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

Число цветных или многоспектральных каналов, указанное как положительное целое число.

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

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

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

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

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

"double""uint8""int8"
"single""uint16""int16"
"logical""uint32""int32"
"categorical"  

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

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

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

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

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

Уровень точного разрешения, заданный как положительное целое число. Для изображений с одним разрешением FinestResolutionLevel является 1.

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

Размеры изображения на каждом уровне разрешения, заданные как матрица r-by-2 положительных целых чисел. Каждая строка определяет [numrows numcols] размеры изображения на одном из уровней разрешения r.

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

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

  • Числовой вектор c-элемента, где c - число классов.

  • Числовой массив типа данных c-by-3 uint8. Каждая строка содержит 3-элементный вектор, представляющий значение пикселя RGB для связывания с каждым именем класса. Этот формат используется, когда данные пиксельной метки хранятся в виде изображения RGB.

Если пиксель имеет значение, которое не существует в PixelLabelIDs, то bigimage сопоставляет пиксель с классом '<undefined>'.

Местоположения и размеры пикселей, заданные как скаляр imref2d объект для большого изображения с одним разрешением или вектора r-by-1 imref2d объекты для большого изображения с множественным разрешением. Каждый элемент определяет размер пикселя, размер изображения и мировые пределы на одном из уровней разрешения r.

Значение метки пикселя для '<undefined>' категориальный класс, указанный как числовой скаляр или числовой вектор 1 на 3. Не указывайте это значение как одно из значений в PixelLabelID.

Значение пикселя по умолчанию, используемое для заполнения блоков, не существующих в источнике данных, указанное как значение в таблице. Если не указать UnloadedValue, то bigimage использует значение пикселя 0 для числовых и логических блоков и missing для категориальных блоков.

Тип данных изображенияФормат UnloadedValue
Логический образЛогический скаляр.
Числовое изображение

Числовой скаляр для изображений в градациях серого или 1-by-1-by-Channels числовой вектор для трюэколора и многоспектральных изображений. Если указать числовой скаляр при Channels больше 1, то bigimage расширяет значение до значения 1 на 1-by-Channels числовой вектор.

Тип данных UnloadedValue должен соответствовать типу данных, указанному ClassUndering

Категориальное изображениеСкаляр строки, указывающий элемент свойства Classes.

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

applyТехнологические блоки большого изображения
isequalСравнение двух bigimages за равенство
getBlockСчитывание блока большого изображения
getFullLevelПолучить все данные на одном уровне большого образа
getRegionЧтение произвольной области большого изображения
setBlockПоместить данные в определенный блок большого изображения
writeНаписать bigimage содержимое в новый файл

Примеры

свернуть все

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

bim = blockedImage('tumor_091R.tif');

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

bshow = bigimageshow(bim,'ResolutionLevel','fine',...
    'GridVisible','on','GridLevel',1);

Создайте маску самого крупного уровня разрешения.

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

imcoarse = gather(bim);
% Convert the coarse image to grayscale.
graycoarse = rgb2gray(imcoarse);
% Binarize the grayscale image. In the binarized image, the object of
% interest is black and the background is white.
bwcoarse = imbinarize(graycoarse);
% Take the complement of the binarized image. The resulting mask follows
% the convention in which the object of interest is white and the
% background is black.
mask = imcomplement(bwcoarse);

Создание заблокированного изображения, содержащего маску.

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

coarsestLevel = bim.NumLevels;
originalWorldStartcoarsest = bim.WorldStart(coarsestLevel,1:2);
originalWorldEndcoarsest = bim.WorldEnd(coarsestLevel,1:2);
%
% Create the blocked image for the mask.
bmask = blockedImage(mask,'WorldStart',originalWorldStartcoarsest,...
   'WorldEnd',originalWorldEndcoarsest);

Отображение изображения маски.

figure
bigimageshow(bmask);

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

showmask(bshow,bmask,'InclusionThreshold',0);

Совет

  • Вы можете писать в bigimage объекты, которые созданы, используя синтаксисы SpatialReferencing или LevelSizes. Записать в эти bigimage с помощью setBlock функция. Запись в bigimage объектов, созданных с помощью filename, dirname, или varname синтаксисы.

  • A bigimage объект использует свойство UnployedValue в двух ситуациях. Первая ситуация - создание записываемого bigimage объект. Блоки записываемого bigimage для объекта установлено значение UnloadedValue пока вы не запишите данные блока с помощью setBlock функция. Вторая ситуация - когда apply функция останавливает обработку блоков bigimage перед обработкой всех блоков.

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

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

Не рекомендуется начинать с R2021a

Ссылки

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

Представлен в R2019b