apply

Обработка блоков заблокированного изображения

    Описание

    пример

    bres = apply(bim,fcn) обрабатывает все заблокированное изображение bim путем применения указателя на функцию fcn каждому блоку. Возвращает bres, новое заблокированное изображение, содержащее обработанные данные.

    [bres1,bres2,...] = apply(bim,fcn) возвращает несколько выходные аргументы. Указанный указатель на функцию, fcn, должен указывать на пользовательскую функцию, которая возвращает то же количество аргументов.

    [bres1s,bres2s,...] = apply(bims,fcn) обрабатывает массив заблокированных изображений bims путем применения указателя на функцию fcn каждому блоку каждого заблокированного изображения. Возвращает массив заблокированных изображений, содержащий обработанные данные.

    Примеры

    свернуть все

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

    bim = blockedImage("tumor_091R.tif");

    Создайте фильтр сглаживания и примените его к блокам в заблокированном изображении.

    smoothing = 2000;

    imguidedfilter работает с соседством по умолчанию 5 пикселей. Добавьте границу к входу, чтобы считать дополнительные данные. Эти пограничные пиксели автоматически обрезаются из выхода, так как их размер совпадает с размером входа.

    benh= apply(bim,...
        @(bs)imguidedfilter(bs.Data,bs.Data,"DegreeOfSmoothing", smoothing),...
        "BorderSize", [5 5]);

    Отобразите оригинальное изображение и улучшенное изображение.

    ha1 = subplot(1,2,1);
    bigimageshow(bim,"ResolutionLevel",1);
    ha2 = subplot(1,2,2);
    bigimageshow(benh);
    linkaxes([ha1, ha2]);
    xlim([2100, 2600])
    ylim([1800 2300])

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

    bim = blockedImage("tumor_091R.tif");

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

    bmask = apply(bim, @(bs)rgb2gray(bs.Data)<80, "Level",3);
    figure
    bigimageshow(bmask)

    Используйте маску, чтобы ограничить области, обрабатываемые вызовом, apply функция объекта.

    bls = selectBlockLocations(bim, "Mask", bmask,"InclusionThreshold", 0.005);
    benh = apply(bim, @(bs)imguidedfilter(bs.Data,bs.Data,"DegreeOfSmoothing", 2000),...
        "BorderSize", [5 5],...
        "BlockLocationSet", bls); 

    Отобразите оригинальное изображение и улучшенное изображение.

    figure
    ha1 = subplot(1,2,1);
    bigimageshow(bim,"ResolutionLevel",1);
    ha2 = subplot(1,2,2);
    bigimageshow(benh);
    linkaxes([ha1, ha2]);      

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

    fs = matlab.io.datastore.FileSet(...
        fullfile(matlabroot,'toolbox','images','imdata'),...
        "FileExtensions", {'.jpg'});

    Создайте массив заблокированных изображений из набора файлов.

    bims = blockedImage(fs);

    Преобразуйте изображения в бинарные изображения.

    outputFolder = tempname;
    outputAdapter = images.blocked.GenericImage;
    outputAdapter.Format = 'jpg';
    bos = apply(bims, @(bs)imbinarize(im2gray(bs.Data)), ...
        "OutputLocation", outputFolder,...
        "Adapter", outputAdapter);

    Чтобы просмотреть результаты, используйте Image Browser для просмотра содержимого папки выхода: imageBrowser(outputFolder);

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

    свернуть все

    Заблокированное изображение, заданное как blockedImage объект.

    Массив заблокированных изображений, заданный как blockedImage объектный массив.

    Функция обработки, заданная как указатель на функцию. Для получения дополнительной информации см. Раздел «Создание указателя на функцию». Функция обработки fcn необходимо принять bstruct как вход. Чтобы передать дополнительные аргументы, задайте fcn как анонимная функция. Для получения дополнительной информации см. «Анонимные функции».

    bstruct является struct с этими полями:

    ОбластьОписание
    DataБлок данных из bim
    StartИндексы первого элемента в блоке. Если BorderSize задан, этот индекс может быть выходным для ребер.
    EndИндексы последнего элемента в блоке. Если BorderSize задан, этот индекс может быть выходным для ребер.
    BlocksubБлокируйте индексы текущего блока
    BorderSizeЗначение параметра BorderSize.
    BlockSizeЗначение BlockSize параметр. Примечание: size(data) может быть меньше этого значения для пограничных блоков при PadPartialValue является ложным.
    BatchSizeЗначение BatchSize параметр
    ImageNumberИндексируйте в bim массив для текущего изображения.
    LevelУровень разрешения, с которого считываются данные.

    Функция fcn обычно возвращает результаты для одного блока. Результаты могут быть числовыми, а struct, или categorical.

    Аргументы в виде пар имя-значение

    Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

    Пример: bmask = apply(bim,@(bs)rgb2gray(bs.Data)<80, "Level",3);

    Адаптер, используемый для записи выхода, задается как адаптер, который подклассифицирован из images.blocked.Adapter класс. Эти классы адаптеров реализуют все методы, необходимые для интерфейса. Чтобы задать различные адаптеры для различных выходов, используйте массив ячеек. Расширяют скалярные значения.

    В этой таблице перечислены адаптеры, включенные в тулбокс.

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

    Вы должны задать значение для 'OutputLocation' свойство для всех адаптеров, кроме images.blocked.InMemory. Если вы не задаете значение для OutputLocation параметр, write использует images.blocked.InMemory в качестве адаптера по умолчанию. В противном случае адаптер по умолчанию images.blocked.BINBlocks для числовых и логических данных и images.blocked.MATBlocks для struct и категориальные данные.

    Количество блоков, поступающих в функцию обработки fcn в каждом пакете, заданном как числовой скаляр. The BatchSize - последняя размерность входа, для fcn. Все выходы fcn должно иметь последнюю размерность то же, что и BatchSize. BatchSize более 1 полезно для оптимальной загрузки графические процессоры при применении вызовов вывода глубокого обучения. Когда BatchSize больше 1, PadPartialBlocks должен быть true.

    Набор блоков для обработки, заданный как скаляр blockLocationSet объект. The ImageNumber индексы свойств в bims массив. Установка блоков для обработки может улучшить эффективность путем ограничения количества обработанных блоков. Для примера используйте selectBlockLocations с маской для ограничения применения функции обработки к определенным областям. Блоки должны находиться на обычной сетке.

    Размер блока, заданный как целочисленный вектор длины, равной NumDimensions свойство bim. Задает размер блока, подаваемого в качестве входов fcn. Если BlockSize содержит меньше элементов, apply функция объекта заполняет отсутствующие размерности элементами Size свойство.

    Размер границы, заданный как целочисленный вектор длины, равной NumDimensions свойство bim. Задает дополнительные данные из соседней области, которая будет включена в блок. Для краевых блоков, apply функция объекта использует 'PadMethod'. Если BorderSize содержит меньше элементов, apply функция объекта заполняет границу 0s.

    Отобразите полосу ожидания, заданную как логический скаляр. Когда установлено значение true, а apply Объект отображает полосу ожидания для длительных операций. Если вы отменяете панель ожидания, apply функция объекта возвращает частичный выход, если он доступен.

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

    Дополнительные входы для fcn, заданный как массив blockedImage объекты. Блоки из этого массива предоставляются в fcn как дополнительные входы после bstruct: __ = fcn(bstruct, extrablock1,...). Функция объекта apply извлекает эти блоки из той же мировой области, из которой находится основной блок bim, представленный в bstruct.

    Уровень разрешения, заданный как вектор целочисленных значений той же длины, что и 'ExtraImages'. Это значение задает уровень мультиразрешения, используемый из соответствующего blockedImage в ExtraImages.

    Используемый уровень разрешения, заданный как целочисленный скаляр. Для blockedImage мультиразрешения это значение определяет уровень разрешения, который используется для получения блоков для обработки.

    Расположение выхода папки в виде string скаляр или char вектор. Если существует один выход, apply функция объекта запишет его непосредственно в это место. Для нескольких выходов, apply объект создаёт подпапки формата output<N>/ для N '-го выхода. Если вход является массивом, apply функция object выводит выходное имя из Source свойство соответствующего элемента. Если вход в памяти, apply объект использует числовой индекс. Когда свойство UseParallel true, OutputLocation должен быть допустимым путем к сеансу клиента. Используйте свойство AlternateFileSystemRoots входа, чтобы задать необходимое отображение для сеансов. Все выходы наследуют это значение.

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

    Значение

    Значение

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

    Заполните числовой массив с элементами массива постоянного значения типа, заданными ClassUnderlying свойство заблокированного изображения.

    'replicate'

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

    Дополните частичные блоки, заданные как логический скаляр. Указывает, должны ли частичные блоки, которые могут существовать на ребрах, быть заполнены до заданного размера блока. Функция объекта apply использует метод, указанный в PadMethod для выполнения операции заполнения.

    • Когда false, функцию обработки fcn действует на частичных блоках без заполнения и может возвращать блоки меньше BlockSize.

    • Когда true, apply function заполняет частичные блоки, используя заданную PadMethod. Функция обработки fcn работает и возвращает полноразмерные блоки.

    Когда BatchSize больше 1, установите PadPartialBlocks на true

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

    Продолжите обработку, откуда остановился предыдущий запуск, заданную как логический скаляр. Если true, и заданную 'OutputLocation' имеет содержимое из предыдущего запуска, текущий запуск продолжит обработку, откуда остановился предыдущий запуск. Эта поддержка зависит от используемого выхода адаптера (см. images.blocked.Adapter для получения дополнительной информации). Если false, а apply Объект удаляет предыдущее содержимое.

    Используйте параллельную обработку, заданную как логический скаляр. Определяет, следует ли использовать новый или существующий параллельный пул. Если параллельный пул не активен, открывается новый пул на основе параметров параллели по умолчанию. Все адаптеры, заданные свойством Adapter, должны реализовать openInParallelToAppend метод (См images.blocked.Adapter). Допустимое OutputLocation необходимо указать. Для этого синтаксиса требуется Parallel Computing Toolbox.

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

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

    свернуть все

    Новое заблокированное изображение, возвращенное как blockedImage объект.

    Совет

    • The apply объект определяет выходной размер путем обработки первого блока. Если обработка первого блока приводит к блоку выхода того же размера, что и вход, то конечный размер выхода устанавливается таким образом, чтобы он совпадал с входом. В противном случае последний блок обрабатывается, чтобы определить окончательный размер выхода. Первый блок не должен быть частичным блоком.

    • The apply объект устанавливает InitialValue свойство выхода на основе типа выхода:

      • Числовые или логические выходы - InitialValue установлено в 0.

      • Категориальные выходы - InitialValue устанавливается в <undefined> значение соответствующего типа.

      • struct выходы - InitialValue получают из выхода первого блока. Для всех полей задано пустое значение.

    Введенный в R2021a