bigimage

Обработка из ядра очень больших изображений

Описание

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

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

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

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

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

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

Создание

Описание

пример

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

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

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

bigimg = bigimage(spatialReferencing,channels,classUnderlying) создает writeable bigimage объект и наборы SpatialReferencing, Каналы и свойства ClassUnderlying, не инициализируя данные изображения.

bigimg = bigimage(levelSizes,channels,classUnderlying) создает writeable bigimage объект и наборы LevelSizes, Каналы и свойства ClassUnderlying, не инициализируя данные изображения.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Примеры

свернуть все

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

bim = bigimage('tumor_091R.tif');

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

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

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

clevel = bim.CoarsestResolutionLevel;
clevelLims = bim.SpatialReferencing(clevel);

Создайте маску самого грубого уровня разрешения путем выполнения этих шагов:

  1. Получите изображение одно разрешения самого грубого уровня разрешения.

  2. Преобразуйте изображение в шкалу полутонов.

  3. Binarize изображение. В двоичном изображении предмет интереса является черным, и фон является белым.

  4. Возьмите дополнение двоичного изображения. Получившаяся маска следует соглашению, в котором предмет интереса является белым, и фон является черным.

imcoarse = getFullLevel(bim,clevel);
graycoarse = rgb2gray(imcoarse);
bwcoarse = imbinarize(graycoarse);
mask = imcomplement(bwcoarse);

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

bmask = bigimage(mask,'SpatialReferencing',clevelLims);

Отобразите маску.

figure
bigimageshow(bmask);

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

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

Советы

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

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

Ссылки

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

Введенный в R2019b