Отличная обработка блока для изображения
B = blockproc(A,[m n],fun)B = blockproc(src_filename,[m n],fun)B = blockproc(adapter,[m n],fun)blockproc(___,Name,Value) обрабатывает изображение с именем файла B = blockproc(src_filename,[m n],fun)src_filename, читая и обрабатывая один блок за один раз. Этот синтаксис полезен для обработки больших изображений.
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; imshow(I2);
![]()
Создайте функцию обработки блока.
fun = @(block_struct) ...
std2(block_struct.data) * ones(size(block_struct.data));Выполните операцию по обработке блока, задав входное изображение именем файла.
I2 = blockproc('moon.tif',[32 32],fun);Отобразите оригинальное изображение и обработанную версию.
figure;
imshow('moon.tif');![]()
figure; imshow(I2,[]);
![]()
Считайте изображение в рабочую область.
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;
imshow('grb_peppers.tif');
Примечание: Чтобы запустить этот пример, необходимо заменить 'largeImage.tif' на имя файла.
Создайте функцию обработки блока.
fun = @(block_struct) block_struct.data;
Преобразуйте изображение TIFF в новое изображение JPEG2000. Замените 'largeImage.tif' на имя файла действительного образа.
blockproc('largeImage.tif',[1024 1024],fun,'Destination','New.jp2');
A Введите изображениеВведите изображение, заданное как числовая матрица.
src_filename — Имя исходного файлаИмя исходного файла, заданное как вектор символов. Файлы должны иметь одни из этих типов файлов и должны быть названы с одним из перечисленных расширений файла.
TIFF (*.tif, *.tiff)
JPEG2000 (*.jp2, *.jpf, *.jpx, *.j2c, *.j2k)
Типы данных: char
adapter — Отобразите адаптерImageAdapterОтобразите адаптер, заданный как объект ImageAdapter. ImageAdapter является пользовательским классом, который предоставляет blockproc общий API для чтения и записи в конкретный формат файла изображения. Для получения дополнительной информации смотрите, Выполняют Обработку Блока на Файлах изображений в Неподдерживаемых форматах.
m, n Размер блокаРазмер блока, заданный как вектор с 2 элементами. m является количеством строк, и n является количеством столбцов в блоке.
fun — Указатель на функциюУказатель на функцию, заданный как указатель. Функция должна принять block_struct как вход и возвратить матрицу, вектор или скаляр. Если fun возвращается пустой, то blockproc не генерирует вывода и возвращается пустой после обработки всех блоков.
Для получения дополнительной информации об указателях на функцию, см. Создание указателя на функцию (MATLAB).
Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
'BorderSize',[8 4]'Destination' — Место назначенияImageAdapterМесто назначения для вывода, заданного как пара, разделенная запятой, состоящая из 'Destination' и одно из следующих.
Вектор символов с целевым именем файла. Файлы должны иметь одни из этих типов файлов и должны быть названы с одним из перечисленных расширений файла.
TIFF (*.tif, *.tiff)
JPEG2000 (*.jp2, *.j2c, *.j2k)
Если файл с этим именем существует, это перезаписывается.
Объект ImageAdapter, который обеспечивает общий API для чтения и записи в конкретный формат файла изображения. Для получения дополнительной информации смотрите, Выполняют Обработку Блока на Файлах изображений в Неподдерживаемых форматах.
Когда вы задаете аргумент 'Destination', blockproc не возвращает обработанное изображение как выходной аргумент, но вместо этого пишет вывод в 'Destination'. Аргумент 'Destination' полезен, когда вы ожидаете, что ваш вывод будет слишком большим, чтобы поместиться в память. Это обеспечивает рабочий процесс для обработки изображений от файла к файлу для произвольно больших изображений.
Вы не можете запросить выходной аргумент, когда the'Destination' аргумент задан.
'BorderSize' — Ограничьте размер[0 0] (значение по умолчанию) | вектор с 2 элементами положительных целых чиселКоличество краевых элементов изображения, чтобы добавить к каждому блоку, заданному как пара, разделенная запятой, состоящая из 'BorderSize' и вектор с 2 элементами положительных целых чисел, формы [v h]. Функция добавляет строки v выше и ниже каждого блока и столбцов h, левых и правых из каждого блока. Размер каждого получившегося блока:
[m+2*v, n+2*h]
По умолчанию функция автоматически удаляет границу из результата fun. Смотрите аргумент TrimBorder для получения дополнительной информации.
Функция заполняет блоки расширением границ вне ребер изображений с нулями.
'PadPartialBlocks' — Заполните частичные блокиfalse (значение по умолчанию) | trueЗаполните частичные блоки, чтобы сделать их полноразмерными, заданными как пара, разделенная запятой, состоящая из 'PadPartialBlocks' и false или true. Частичные блоки возникают, когда размер изображения не является точно делимым размером блока. Если они существуют, частичные блоки простираются вдоль правого края и базового края изображения.
Когда установлено в true, blockproc заполняет частичные блоки, чтобы сделать их полноразмерным m-by-n блоки. Значением по умолчанию является false, означая, что функция не заполняет частичные блоки, но обрабатывает их как есть. blockproc использует нули, чтобы заполнить частичные блоки при необходимости.
'PadMethod' — Заполните метод0 (значение по умолчанию) | 'replicate' | 'symmetric' | числовой скалярМетод раньше заполнял границу изображения, заданную как пара, разделенная запятой, состоящая из 'PadMethod' и одно из следующих.
| Значение | Описание |
|---|---|
'replicate' | Повторите элементы границы. |
'symmetric' | Заполните изображение зеркальными отражениями себя. |
| числовой скаляр | Заполните изображение скалярным значением. По умолчанию граница изображения дополнена значением 0. |
Типы данных: char | string
'TrimBorder' — Удалите краевые элементы изображенияtrue (значение по умолчанию) | falseУдалите краевые элементы изображения из вывода функции пользователя, заданной как пара, разделенная запятой, состоящая из 'TrimBorder' и true или false. Когда установлено в true, функция blockproc удаляет краевые элементы изображения из вывода функции пользователя, fun. Функция удаляет строки v из верха и низа вывода fun и столбцы h от левых краев и правых краев. Аргумент BorderSize задает v и h.
'UseParallel' Используйте параллельную обработкуfalse (значение по умолчанию) | trueИспользуйте параллельную обработку, заданную как пара, разделенная запятой, состоящая из 'UseParallel' и false или true. Если вам установили Parallel Computing Toolbox™, когда установлено в true, MATLAB® автоматически открывает параллельный пул рабочих на вашей локальной машине. blockproc запускает вычисление через доступных рабочих. Для получения дополнительной информации смотрите, что Параллельный Блок Обрабатывает на Больших Файлах изображений.
'DisplayWaitbar' — Отобразитесь ожидают панельtrue (значение по умолчанию) | falseОтобразитесь ожидают панель, заданная как пара, разделенная запятой, состоящая из 'DisplayWaitbar' и true или false. Когда установлено в true, blockproc отображает waitbar, чтобы указать на прогресс для продолжительных операций. Чтобы препятствовать тому, чтобы blockproc отобразил waitbar, установите DisplayWaitbar на false.
B Выходная матрицаВыходная матрица, возвращенная как числовая матрица.
Struct блока является структурой MATLAB, которая содержит данные о блоке и другую информацию о блоке. Поля в struct блока:
| Поле | Описание |
|---|---|
border | Вектор с 2 элементами формы [v h]. Поле border задает размер вертикального и горизонтального дополнения вокруг блока данных. Смотрите аргумент BorderSize для получения дополнительной информации. |
blockSize | Вектор с 2 элементами формы [rows cols]. Поле blockSize задает размер данных о блоке. Если граница была задана, размер не включает краевые элементы изображения. |
data | m-by-n или m-by-n-by-p матрица данных о блоке. |
imageSize | Вектор с 2 элементами формы [rows cols]. Поле imageSize задает полный размер входного изображения. |
location | Вектор с 2 элементами формы [row col]. Поле location задает положение первого пикселя (минимальная строка, минимальный столбец) данных о блоке во входном изображении. Если граница была задана, местоположение относится к первому пикселю дискретных данных о блоке, не добавленным краевым элементам изображения. |
Выбор соответствующего размера блока может значительно улучшать производительность. Для получения дополнительной информации смотрите Размер блока и Производительность.
Если выходная матрица, B является слишком большим, чтобы поместиться в память, не использует выходной аргумент и вместо этого использует аргумент пары "имя-значение" Destination, чтобы записать вывод в файл.
Указания и ограничения по применению:
Эта функция поддерживает автоматическую параллельную обработку (требует Parallel Computing Toolbox). Чтобы запуститься параллельно, задайте аргумент 'UseParallel' как true. Для получения дополнительной информации смотрите, что Параллельный Блок Обрабатывает на Больших Файлах изображений.
Управляйте параллельным поведением с параллельными настройками, включая увеличение масштаба к кластеру. Смотрите parpool для получения информации о конфигурировании вашей параллельной среды.
Чтобы запуститься параллельно, эта функция требует параллельного пула с включенным SPMD.
Параллельная обработка не поддерживает исходное изображение adapter.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.