bigimage

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

The 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 Объект и устанавливает свойства SpatialReferencing, Channels и ClassBaslying без инициализации данных изображения.

bigimg = bigimage(levelSizes,channels,classUnderlying) создает записываемую bigimage Объект и устанавливает свойства LevelSizes, Channels и ClassBaslying без инициализации данных изображения.

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

bigimg = bigimage(___,Name,Value) использует пары "имя-значение", чтобы задать один или несколько свойств BlockSize, SpatialReferencing, UndefinedID, UnloadedValue. Можно задать несколько пары "имя-значение". Заключайте каждое имя свойства в кавычки.

Для примера, 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

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

Исходные метаданные, заданные как struct, такая как возвращенные 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-на-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. Не указывайте это значение как любое из значений в PixelLabelIDs.

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

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

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

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

Категориальное изображениеСтроковый скаляр, задающий элемент свойства 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 объект использует свойство UnloadedValue в двух ситуациях. Первая ситуация, когда вы создаете записываемое bigimage объект. Блоки записываемого bigimage для объекта задано значение UnloadedValue пока вы не запишете блока данные при помощи setBlock функция. Вторая ситуация, когда apply функция останавливает обработку блоков bigimage объект перед обработкой всех блоков.

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

расширить все

Не рекомендуемый запуск в R2021a

Ссылки

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

Введенный в R2019b