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