makeresampler

Создайте структуру повторной дискретизации

Описание

пример

R = makeresampler(interpolant,padmethod) создает разделяемую структуру ресамплера для использования со tformarray. The interpolant аргумент задает интерполирующее ядро, которое использует разделяемый повторный усилитель. The padmethod аргумент управляет тем, как ресамплер интерполирует или присваивает значения выходным элементам, которые сопоставляются близко или вне ребра массива входа.

R = makeresampler(Name,Value,...) создайте структуру ресамплера, которая использует записанный пользователем ресамплер, используя пары значений параметров.

Примеры

свернуть все

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

A = imread('moon.tif');
imshow(A)

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

Создайте разделяемый повторный усилитель.

resamp = makeresampler({'nearest','cubic'},'fill');

Создайте пространственную структуру преобразования (TFORM), которая задает аффинное преобразование.

stretch = maketform('affine',[1 0; 0 1.3; 0 0]);

Примените преобразование, задав пользовательский повторный усилитель.

B = imtransform(A,stretch,resamp);

Отобразите преобразованное изображение.

imshow(B)

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

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

свернуть все

Интерполяция ядра, заданная как 'nearest', 'linear', 'cubic', или массив ячеек. В следующей таблице перечислены именованные интерполяции:

Interpolant

Описание

'cubic'

Кубическая интерполяция

'linear'

Линейная интерполяция

'nearest'

Интерполяция по ближайшему соседу

Если вы хотите использовать пользовательское интерполирующее ядро, задайте массив ячеек в любой из следующих форм:

{half_width, positive_half}

half_width - положительная скалярная величина, обозначающая половину ширины симметричного интерполирующего ядра. positive_half вектор значений, регулярно дискретизирующих ядро на закрытом интервале [0 positive_half].

{half_width, interp_fcn}

interp_fcn - указатель на функцию, который возвращает интерполяцию значений ядра, учитывая массив входа значений в интервале
[0 positive_half].

Чтобы задать метод интерполяции независимо друг от друга по каждой размерности, объедините оба типа спецификаций интерполяции. Количество элементов в массиве ячеек должно равняться количеству размерностей преобразования. Например, рассмотрим следующий пример interpolant значение:

{'nearest', 'linear', {2 KERNEL_TABLE}}

В этом примере ресамплер использует интерполяцию по ближайшему соседу по размерности первого преобразования, линейную интерполяцию по второму измерению и пользовательскую табличную интерполяцию по третьему.

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

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

Метод прокладки

Описание

'bound'

Присвоения значения из массива значений заливки в точки, которые сопоставлены вне массива входа. Повторяет элементы границы массива для точек, которые сопоставлены внутри массива (так же, как 'replicate'). Когда interpolant является 'nearest'этот метод pad дает те же результаты, что и 'fill'. 'bound' как 'fill', но избегает смешивания значений заливки и входных значений изображения.

'circular'

Массив колодок с циклическим повторением элементов внутри размерности. То же, что и padarray.

'fill'

Генерирует массив выхода с гладкими ребрами (за исключением случаев, когда используется интерполяция по ближайшему соседу). Для выходных точек, которые отображаются вблизи ребра массива входа (внутри или снаружи), это объединяет вход собой изображение и значения заливки. Когда interpolant является 'nearest'этот метод pad дает те же результаты, что и 'bound'.

'replicate'

Массив заполнителей путем повторения элементов границы массива. То же, что и padarray.

'symmetric'

Массив колодок с зеркальными отражениями самого себя. То же, что и padarray.

Для 'fill', 'replicate', 'circular', или 'symmetric', повторную дискретизацию, выполняемую tformarray происходит в двух логических шагах:

  1. Дополните A массива бесконечно, чтобы заполнить все входное пространство преобразования.

  2. Оцените свертки заполненных A с ядром повторной дискретизации в выходных точках, заданных геометрической картой.

Каждая нетрансформная размерность обрабатывается отдельно. Заполнение является виртуальным (выполняется путем переопределения нижних индексов массива) для производительности и эффективности памяти. Если вы реализуете пользовательский ресамплер, можно реализовать это поведение.

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

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

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

Пример: resamp = makeresampler('Type','separable','Interpolant','linear','PadMethod','fill');

Тип ресамплера, заданный как одно из следующих значений.

НапечататьОписание
'separable'Создайте разделяемый повторный усилитель. Если вы задаете это значение, только другие свойства, которые вы можете задать 'Interpolant' и 'PadMethod'. Результат эквивалентен использованию makeresampler(interpolant,padmethod) синтаксис.
'custom'Создайте ресамплер клиента. Если вы задаете это значение, необходимо задать 'NDims' и 'ResampleFcn' свойства и, опционально, 'CustomData' свойство.

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

Смотрите padmethod Аргумент для получения дополнительной информации.

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

Смотрите interpolant Аргумент для получения дополнительной информации.

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

Пользовательский повторный усилитель размерности может обрабатывать, заданный как положительное целое число. Используйте значение Inf чтобы указать, что пользовательский повторный усилитель может обрабатывать любую размерность. Если 'Type' является 'custom', необходимо указать NDims.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

Функция, которая выполняет повторную дискретизацию, заданную как указатель на функцию. Вы вызываете эту функцию со следующим интерфейсом:

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

Пользовательские данные, заданные с помощью строкового скаляра, вектора символов или числового массива.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string

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

свернуть все

Ресамплер, возвращенный как структура.

См. также

Представлено до R2006a