blockproc

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

Описание

пример

B = blockproc(A,[m n],fun) обрабатывает изображение A путем применения функционального fun с каждым отличным блоком размера [m n] и конкатенация результатов в выходное изображение, B.

пример

B = blockproc(src_filename,[m n],fun) обрабатывает изображение с именем файла src_filename, чтение и обработка одного блока за один раз. Этот синтаксис полезен для обработки больших изображений.

B = blockproc(adapter,[m n],fun) обрабатывает исходное изображение, заданное adapter, ImageAdapter объект. Используйте этот синтаксис, если вам нужен пользовательский API для чтения и записи в конкретный формат файла изображения.

пример

blockproc(___,Name,Value) аргументы пары "имя-значение" использования, чтобы управлять различными аспектами поведения блока.

Примеры

свернуть все

Считайте изображение в рабочую область.

I = imread('pears.png');

Создайте функцию обработки блока.

fun = @(block_struct) imresize(block_struct.data,0.15);

Обработайте изображение, блок блоком.

I2 = blockproc(I,[100 100],fun);

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

figure;
imshow(I);

Figure contains an axes. The axes contains an object of type image.

figure;
imshow(I2);

Figure contains an axes. The axes contains an object of type image.

Создайте функцию обработки блока.

fun = @(block_struct) ...
   std2(block_struct.data) * ones(size(block_struct.data));

Выполните операцию по обработке блока, задав входное изображение именем файла.

I2 = blockproc('moon.tif',[32 32],fun);

Отобразите оригинальное изображение и обработанную версию.

figure;
imshow('moon.tif');

Figure contains an axes. The axes contains an object of type image.

figure;
imshow(I2,[]);

Figure contains an axes. The axes contains an object of type image.

Считайте изображение в рабочую область.

I = imread('peppers.png');

Создайте функцию обработки блока.

fun = @(block_struct) block_struct.data(:,:,[2 1 3]);

Выполните операцию по обработке блока.

blockproc(I,[200 200],fun,'Destination','grb_peppers.tif');

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

figure;
imshow('peppers.png');

Figure contains an axes. The axes contains an object of type image.

figure;
imshow('grb_peppers.tif');

Figure contains an axes. The axes contains an object of type image.

Примечание: Чтобы запустить этот пример, необходимо заменить 'largeImage.tif' с именем вашего файла.

Создайте функцию обработки блока.

fun = @(block_struct) block_struct.data;

Преобразуйте изображение TIFF в новое изображение JPEG2000. Замените 'largeImage.tif' с именем файла действительного образа.

blockproc('largeImage.tif',[1024 1024],fun,'Destination','New.jp2');

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

свернуть все

Отобразите к процессу в виде числового массива.

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

  • TIFF (*.tif, *.tiff)

  • JPEG2000 (*.jp2, *.jpf, *.jpx, *.j2c, *.j2k)

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

Отобразите адаптер в виде ImageAdapter объект. ImageAdapter пользовательский класс, который обеспечивает blockproc с общим API для чтения и записи в конкретный формат файла изображения. Для получения дополнительной информации смотрите, Выполняют Обработку Блока на Файлах изображений в Неподдерживаемых форматах.

Размер блока в виде вектора с 2 элементами. m количество строк и n количество столбцов в блоке.

Указатель на функцию в виде указателя. Функция должна принять block_struct как вход и возвратить массив, вектор или скаляр. Если fun возвращается пустой, затем blockproc не генерирует выхода и возвращается пустой после обработки всех блоков.

Для получения дополнительной информации об указателях на функцию, см. Создание указателя на функцию.

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

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

Пример: 'BorderSize',[8 4]

Место назначения для выхода в виде разделенной запятой пары, состоящей из 'Destination' и одно из следующих. Когда вы задаете 'Destination' аргумент, blockproc не возвращает обработанное изображение как выходной аргумент, но вместо этого пишет выход в целевой файл.

  • Вектор символов или строковый скаляр с целевым именем файла. Файлы должны иметь одни из этих типов файлов и должны быть названы с одним из перечисленных расширений файла.

    • TIFF (*.tif, *.tiff)

    • JPEG2000 (*.jp2, *.j2c, *.j2k)

    Если файл с этим именем существует, то это перезаписывается.

  • ImageAdapter объект, который обеспечивает общий API для чтения и записи в конкретный формат файла изображения. Для получения дополнительной информации смотрите, Выполняют Обработку Блока на Файлах изображений в Неподдерживаемых форматах.

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

Примечание

Вы не можете запросить выходной аргумент, когда вы задаете 'Destination' аргумент.

Количество краевых элементов изображения, чтобы добавить к каждому блоку в виде разделенной запятой пары, состоящей из 'BorderSize' и вектор с 2 элементами из положительных целых чисел, из формы [v h]. Функция добавляет v строки выше и ниже каждого блока и h столбцы, левые и правые из каждого блока. Размер каждого получившегося блока:

[m+2*v, n+2*h]

По умолчанию функция автоматически удаляет границу из результата fun. Смотрите TrimBorder аргумент для получения дополнительной информации.

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

Заполните частичные блоки, чтобы сделать их полноразмерными в виде разделенной запятой пары, состоящей из 'PadPartialBlocks' и false или true. Частичные блоки возникают, когда размер изображения не является точно делимым размером блока. Если они существуют, частичные блоки простираются вдоль правого края и базового края изображения.

Когда установлено в true, blockproc заполняет частичные блоки, чтобы сделать их полноразмерным m- n блоки. Значением по умолчанию является false, подразумевать, что функция не заполняет частичные блоки, но обрабатывает их как есть. blockproc нули использования, чтобы заполнить частичные блоки при необходимости.

Метод раньше заполнял границу изображения в виде разделенной запятой пары, состоящей из 'PadMethod' и одно из следующих.

ЗначениеОписание
'replicate'Повторите элементы границы.
'symmetric'Заполните изображение зеркальными отражениями себя.
числовой скалярЗаполните изображение скалярным значением. По умолчанию граница изображения дополнена значением 0.

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

Удалите краевые элементы изображения из выхода функции пользователя в виде разделенной запятой пары, состоящей из 'TrimBorder' и true или false. Когда установлено в true, blockproc функция удаляет краевые элементы изображения из выхода функции пользователя, fun. Функция удаляет v строки от верха и низа выхода fun, и h столбцы от левых краев и правых краев. BorderSize аргумент задает v и h.

Используйте параллельную обработку в виде разделенной запятой пары, состоящей из 'UseParallel' и false или true. Если вам установили Parallel Computing Toolbox™, когда установлено в true, MATLAB® автоматически открывает параллельный пул рабочих на вашей локальной машине. blockproc запускает расчет через доступных рабочих. Для получения дополнительной информации смотрите, что Параллельный Блок Обрабатывает на Больших Файлах изображений.

Отобразитесь ожидают панель в виде разделенной запятой пары, состоящей из 'DisplayWaitbar' и true или false. Когда установлено в true, blockproc отображает панель ожидания, чтобы указать на прогресс для продолжительных операций. Предотвратить blockproc от отображения панели ожидания, набор DisplayWaitbar к false.

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

свернуть все

Обработанное изображение, возвращенное как числовой массив.

Больше о

свернуть все

Блокируйте Struct

Struct блока является структурой MATLAB, которая содержит данные о блоке и другую информацию о блоке. Поля в struct блока:

Поле Описание
borderВектор с 2 элементами из формы [v h]. border поле задает размер вертикального и горизонтального дополнения вокруг блока данных. Смотрите BorderSize аргумент для получения дополнительной информации.
blockSizeВектор с 2 элементами из формы [rows cols]. blockSize поле задает размер данных о блоке. Если граница была задана, размер не включает краевые элементы изображения.
datam- n или m- n- p массив данных о блоке.
imageSizeВектор с 2 элементами из формы [rows cols]. imageSize поле задает полный размер входного изображения.
locationВектор с 2 элементами из формы [row col]. location поле задает положение первого пикселя (минимальная строка, минимальный столбец) данных о блоке во входном изображении. Если граница была задана, местоположение относится к первому пикселю дискретных данных о блоке, не добавленным краевым элементам изображения.

Советы

  • Выбор соответствующего размера блока может значительно улучшать производительность. Для получения дополнительной информации смотрите Размер блока и Эффективность.

  • Если выходное изображение B является слишком большим, чтобы поместиться в память, затем не использовать выходной аргумент и вместо этого использовать Destination аргумент пары "имя-значение", чтобы записать выход в файл.

  • blockproc может считать изображения BigTIFF, но ограничил поддержку записи изображений BigTIFF к файлу. Если вы пишете изображение в файл, то blockproc автоматически выбирает тип файла согласно размеру файла. Если изображение меньше чем или равно 4,0 Гбитам, то blockproc сохраняет образ как стандартное изображение TIFF. Если размер файла больше, чем 4,0 Гбита, то blockproc сохраняет образ как изображение BigTIFF.

    blockproc не обеспечивает аргумент, который позволяет вам задать тип файла как BigTIFF, когда размер файла меньше чем или равен 4,0 Гбитам. Если вы хотите записать маленькое изображение как файл BigTIFF, то задайте адаптер пользовательского изображения с помощью adapter аргумент. Для получения дополнительной информации смотрите TIFF, BigTIFF и blockproc.

  • Чтобы определить, является ли записанным файлом TIFF стандартный TIFF или BigTIFF, запросите подпись формата изображения с помощью imfinfo функция:

    tiffinfo = imfinfo(Destination);
    tiffformat = tiffinfo.FormatSignature

    Если последнее ненулевое значение tiffformat 42, затем файл находится в стандартном формате TIFF. Если последнее ненулевое значение равняется 43, то файл находится в формате BigTIFF.

Расширенные возможности

Представленный в R2009b