Создайте структуру повторной дискретизации
создает разделяемую структуру ресамплера для использования со R
= makeresampler(interpolant
,padmethod
)tformarray
. The interpolant
аргумент задает интерполирующее ядро, которое использует разделяемый повторный усилитель. The padmethod
аргумент управляет тем, как ресамплер интерполирует или присваивает значения выходным элементам, которые сопоставляются близко или вне ребра массива входа.
создайте структуру ресамплера, которая использует записанный пользователем ресамплер, используя пары значений параметров.R
= makeresampler(Name,Value
,...)
Прочтите изображение в рабочую область и отобразите его.
A = imread('moon.tif');
imshow(A)
Создайте разделяемый повторный усилитель.
resamp = makeresampler({'nearest','cubic'},'fill');
Создайте пространственную структуру преобразования (TFORM), которая задает аффинное преобразование.
stretch = maketform('affine',[1 0; 0 1.3; 0 0]);
Примените преобразование, задав пользовательский повторный усилитель.
B = imtransform(A,stretch,resamp);
Отобразите преобразованное изображение.
imshow(B)
interpolant
- Интерполяция ядра'cubic'
| 'linear'
| 'nearest'
| массив ячеекИнтерполяция ядра, заданная как 'nearest'
, 'linear'
, 'cubic'
, или массив ячеек. В следующей таблице перечислены именованные интерполяции:
Interpolant | Описание |
---|---|
| Кубическая интерполяция |
| Линейная интерполяция |
| Интерполяция по ближайшему соседу |
Если вы хотите использовать пользовательское интерполирующее ядро, задайте массив ячеек в любой из следующих форм:
|
|
|
|
Чтобы задать метод интерполяции независимо друг от друга по каждой размерности, объедините оба типа спецификаций интерполяции. Количество элементов в массиве ячеек должно равняться количеству размерностей преобразования. Например, рассмотрим следующий пример interpolant
значение:
{'nearest', 'linear', {2 KERNEL_TABLE}}
В этом примере ресамплер использует интерполяцию по ближайшему соседу по размерности первого преобразования, линейную интерполяцию по второму измерению и пользовательскую табличную интерполяцию по третьему.
Типы данных: char
| string
| cell
padmethod
- Метод, используемый для назначения значений выходным элементам, которые сопоставлены вне входного массива'bound'
| 'circular'
| 'replicate'
| 'symmetric'
| 'fill'
Метод, используемый для назначения значений выходным элементам, которые сопоставлены вне массива входа, заданный как одно из следующих значений.
Метод прокладки | Описание |
---|---|
| Присвоения значения из массива значений заливки в точки, которые сопоставлены вне массива входа. Повторяет элементы границы массива для точек, которые сопоставлены внутри массива (так же, как |
| Массив колодок с циклическим повторением элементов внутри размерности. То же, что и |
| Генерирует массив выхода с гладкими ребрами (за исключением случаев, когда используется интерполяция по ближайшему соседу). Для выходных точек, которые отображаются вблизи ребра массива входа (внутри или снаружи), это объединяет вход собой изображение и значения заливки. Когда |
| Массив заполнителей путем повторения элементов границы массива. То же, что и |
| Массив колодок с зеркальными отражениями самого себя. То же, что и |
Для 'fill'
, 'replicate'
, 'circular'
, или 'symmetric'
, повторную дискретизацию, выполняемую tformarray
происходит в двух логических шагах:
Дополните A массива
бесконечно, чтобы заполнить все входное пространство преобразования.
Оцените свертки заполненных A
с ядром повторной дискретизации в выходных точках, заданных геометрической картой.
Каждая нетрансформная размерность обрабатывается отдельно. Заполнение является виртуальным (выполняется путем переопределения нижних индексов массива) для производительности и эффективности памяти. Если вы реализуете пользовательский ресамплер, можно реализовать это поведение.
Типы данных: char
| string
Задайте необязательные разделенные разделенными запятой парами Name,Value
аргументы. Name
- имя аргумента и Value
- соответствующее значение. Name
должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN
.
resamp = makeresampler('Type','separable','Interpolant','linear','PadMethod','fill');
'Type'
- Тип ресамплера'separable'
| 'custom'
Тип ресамплера, заданный как одно из следующих значений.
Напечатать | Описание |
---|---|
'separable' | Создайте разделяемый повторный усилитель. Если вы задаете это значение, только другие свойства, которые вы можете задать 'Interpolant' и 'PadMethod' . Результат эквивалентен использованию makeresampler(interpolant,padmethod) синтаксис. |
'custom' | Создайте ресамплер клиента. Если вы задаете это значение, необходимо задать 'NDims' и 'ResampleFcn' свойства и, опционально, 'CustomData' свойство. |
Типы данных: char
| string
'PadMethod'
- Метод, используемый для назначения значений выходным элементам, которые сопоставлены близко или снаружи к ребру входного массиваСмотрите padmethod
Аргумент для получения дополнительной информации.
Типы данных: char
| string
'Interpolant'
- Интерполяция ядраСмотрите interpolant
Аргумент для получения дополнительной информации.
Типы данных: char
| string
| cell
'NDims'
- Пользовательский ресамплер размерности может обрабатыватьПользовательский повторный усилитель размерности может обрабатывать, заданный как положительное целое число. Используйте значение Inf
чтобы указать, что пользовательский повторный усилитель может обрабатывать любую размерность. Если 'Type'
является 'custom'
, необходимо указать NDims
.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
'ResampleFcn'
- Функция, которая выполняет повторную дискретизациюФункция, которая выполняет повторную дискретизацию, заданную как указатель на функцию. Вы вызываете эту функцию со следующим интерфейсом:
B = resample_fcn(A,M,TDIMS_A,TDIMS_B,FSIZE_A,FSIZE_B,F,R)
Для получения дополнительной информации о входных параметрах в эту функцию, смотрите справку для tformarray
. Аргумент M
- массив, который отображает нижнее пространство преобразования B
в индексное пространство преобразования A
. Если A
имеет N
преобразование размерностей (N = length(TDIMS_A))
и B
имеет P
преобразование размерностей (P = length(TDIMS_B))
, затем ndims(M) = P + 1
, если N > 1
и P
если N == 1
, и size(M,P + 1) = N
.
Первый P
размерности M
соответствуют пространству преобразования выхода, переопределяемому в соответствии с порядком, в котором перечислены выходы размерности преобразования TDIMS_B
. (В целом TDIMS_A
и TDIMS_B
не нужно сортировать в порядке возрастания, хотя некоторые ресамплеры могут наложить такое ограничение.) Таким образом, первый P
элементы size(M)
определите размеры размерностей преобразования B
. Входы преобразования, с которыми сопоставлена каждая точка, распределены по конечной размерности M
, следуя порядку, указанному в TDIMS_A
. M
должен быть double
. FSIZE_A
и FSIZE_B
являются ли полные размеры A
и B
, заполненный 1
при необходимости согласуется с TDIMS_A
, TDIMS_B
, и size(A)
.
Типы данных: function_handle
'CustomData'
- Пользовательские данныеПользовательские данные, заданные с помощью строкового скаляра, вектора символов или числового массива.
Типы данных: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
| char
| string
R
- РесамплерРесамплер, возвращенный как структура.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.