Применение пространственного преобразования к массиву N-D
Создайте квадратное шахматное изображение 2 на 2, где каждый квадрат имеет ширину 20 пикселей. Отображение изображения.
I = checkerboard(20,1,1); figure imshow(I)

Трансформируйте шашечную доску проективным преобразованием. Сначала создайте структуру пространственного преобразования.
T = maketform('projective',[1 1; 41 1; 41 41; 1 41],... [5 5; 40 5; 35 30; -10 30]);
Создайте ресамплер. Используйте метод pad 'circular' при создании ресамплера, так что выходной сигнал представляет собой перспективный вид бесконечной шахматной доски.
R = makeresampler('cubic','circular');
Выполните преобразование, указав структуру преобразования и ресамплер. В этом примере следует поменять местами выходные размеры и указать выходное изображение «100 на 100». Оставить аргумент tmap_B пустой, поскольку указан аргумент tsize_B. Оставить аргумент F пустой, так как значение заливки не требуется.
J = tformarray(I,T,R,[1 2],[2 1],[100 100],[],[]); figure imshow(J)

Создайте квадратное шахматное изображение 2 на 2, где каждый квадрат имеет ширину 20 пикселей. Отображение изображения.
I = checkerboard(20,1,1); figure imshow(I)

Трансформируйте шашечную доску проективным преобразованием. Сначала создайте структуру пространственного преобразования.
T = maketform('projective',[1 1; 41 1; 41 41; 1 41],... [5 5; 40 5; 35 30; -10 30]);
Создайте ресамплер. Используйте метод pad 'circular' при создании ресамплера, так что выходной сигнал представляет собой перспективный вид бесконечной шахматной доски.
R = makeresampler('cubic','circular');
Создание массивов, задающих сопоставление точек из пространства ввода в пространство вывода. В этом примере используется анизотропная выборка, где расстояние между образцами больше в одном направлении, чем в другом.
samp_x = 1:1.5:150; samp_y = 1:100; [x,y] = meshgrid(samp_x,samp_y); tmap = cat(3,x,y); size(tmap)
ans = 1×3
100 100 2
Обратите внимание на размер tmap. Выходное изображение будет иметь размеры 100 на 100.
Выполните преобразование, указав структуру преобразования и ресамплер. Укажите карту вывода как tmap. Оставить аргумент tsize_B пустой, так как вы указываете аргумент tmap_B. Значение заполнения не имеет значения, так как ресамплер имеет круглую форму.
J = tformarray(I,T,R,[1 2],[1 2],[],tmap,[]); figure imshow(J)

Длина шашечных квадратов больше в направлении y, чем в направлении x, что согласуется с большим расстоянием выборки между точками в векторе samp_x. По сравнению с результатом с использованием сопоставления изотопных точек (см. пример «Преобразовать изображение контрольной доски»), справа от преобразованного изображения появляются три дополнительных столбца шахматной доски, и к преобразованному изображению не добавляются новые строки.
A - Входное изображениеВходное изображение, указанное как числовой массив. A может быть реальным или сложным.
Типы данных: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | logical
Поддержка комплексного номера: Да
T - Пространственное преобразованиеTFORM структура пространственного преобразованияПространственное преобразование, указанное как TFORM структура пространственного преобразования. Как правило, используется maketform для создания функции TFORM структура.
tformarray использование T и функции tforminv вычисляют соответствующее расположение в подстрочном пространстве входного преобразования для каждого расположения в подстрочном пространстве выходного преобразования. tformarray определяет пространство входного преобразования с помощью tdims_B и tsize_B и пространство нижнего индекса выходного преобразования tdims_A и size(A).
Если T пуст, затем tformarray работает как функция прямой повторной выборки. Далее, если tmap_B является:
Не пусто, тогда tformarray применяет ресамплер, определенный в R для вычисления значений в каждом местоположении пространства преобразования, определенном в tmap_B
Пустое, затем tformarray применяет ресамплер в каждом местоположении в сетке нижнего индекса выходного преобразования
Типы данных: struct
R - РесамплерРесамплер, указанный как структура. Структура ресамплера определяет способ интерполяции значений входного массива в указанных местоположениях. R создается с помощью makeresampler, что позволяет точно контролировать способ интерполяции вдоль каждого измерения. makeresampler также управляет значениями входного массива, которые будут использоваться при интерполяции рядом с краем массива.
Типы данных: struct
tdims_A - Размеры входного преобразованияРазмеры входного преобразования, заданные как вектор строки конечных положительных целых чисел.
tdims_A и tdims_B укажите, какие размеры входных и выходных массивов участвуют в пространственном преобразовании. Каждый элемент должен быть уникальным. Записи не должны перечисляться в порядке увеличения, но порядок имеет значение. Порядок указывает точное соответствие между размерами массивов A и B и входное и выходное пространства преобразования T.
length(tdims_A) должны равняться T.ndims_in, и length(tdims_B) должны равняться T.ndims_out.
Например, если T является 2-D преобразованием, tdims_A = [2 1], и tdims_B = [1 2], затем размеры строки и столбца A соответствуют второму и первому измерениям входного пространства преобразования соответственно. Размеры строк и столбцов B соответствуют первому и второму размерам выходного пространства соответственно.
Типы данных: double
tdims_B - Размеры выходного преобразованияРазмеры выходного преобразования, заданные как вектор строки конечных положительных целых чисел. Дополнительные сведения см. в разделе tdims_A.
Типы данных: double
tsize_B - Размер выходного массива в измерениях преобразованияРазмер размеров преобразования выходного массива, заданного как вектор строки конечных положительных целых чисел. Размер B вдоль нетрансформных размеров берется непосредственно из размера A вдоль этих размеров.
Например, если T является 2-D преобразованием, size(A) = [480 640 3 10], tdims_B является [2 1], и tsize_B является [300 200], то size(B) является [200 300 3 10].
Типы данных: double
tmap_B - Расположение точек в пространстве выводаРасположение точек в выходном пространстве, указанное как конечный массив вещественных значений. tmap_B является необязательным аргументом, который предоставляет альтернативный способ указания соответствия между положением элементов B и расположение в пространстве выходного преобразования. tmap_B может использоваться, например, для вычисления результата деформации изображения в наборе произвольных местоположений в выходном пространстве.
Если tmap_B не пуст, то размер tmap_B является
[D1 D2 D3 ... DN L]
N равняется length(tdims_B). tsize_B должно быть [].
Значение L зависит от того, T пуст. Если T является:
Не пусто, тогда L является T.ndims_outи каждая точка L-размера в tmap_B преобразуется в местоположение пространства ввода с помощью T
Пустое, затем L является length(tdims_A), и каждый L-мерная точка в tmap_B используется непосредственно в качестве местоположения во входном пространстве.
Типы данных: double
F - Значения заливкиЗначения заливки, заданные как числовой массив или скаляр. Значения заполнения в F может использоваться в трех ситуациях:
При создании разделяемого ресамплера с помощью makeresampler и его padmethod имеет значение: 'fill' или 'bound'.
Когда используется пользовательская ресамплер, поддерживающая 'fill' или 'bound' методы pad (с поведением, специфичным для настройки).
Когда карта из размеров преобразования B к размерам преобразования A намеренно не определен для некоторых моментов. Такие точки кодируются во входном пространстве преобразования посредством NaNs в любом tmap_B или в выходных данных tforminv.
В первых двух случаях значения заливки используются для вычисления значений для местоположений вывода, которые отображаются снаружи или вблизи краев входного массива. Значения заливки копируются в B когда местоположения вывода хорошо отображаются за пределами входного массива. Посмотрите makeresampler для получения дополнительной информации о 'fill' и 'bound'.
Когда F является:
Скаляр (включая NaN), его значение реплицируется по всем нетрансформным измерениям.
Нескалярный, его размер зависит от size(A) в нетрансформированных измерениях. В частности, если K является Jный нетрансформный размер A, то size(F,J) должно быть либо size(A,K) или 1. Для удобства, tformarray копирует F по всем измерениям с размером единицы, таким, что после репликации size(F,J) равняется size(A,K).
Например, предположим A представляет 10 изображений RGB и имеет размер 200 на 200 на 3 на 10, T является 2-D преобразованием, и tdims_A и tdims_B оба [1 2]. Другими словами, tformarray применяет одно и то же преобразование 2-D к каждой цветовой плоскости каждого из 10 изображений RGB. В этой ситуации имеется несколько вариантов F:
F может быть скаляром, в этом случае одно и то же значение заливки используется для каждой цветовой плоскости всех 10 изображений.
F может быть вектором 3 на 1, [R G B]'. tformarray использует значение RGB в качестве значения заливки для соответствующих цветовых плоскостей каждого из 10 изображений.
F может быть вектором 1 на 10. tformarray использует разное значение заливки для каждого из 10 изображений, причем это значение заливки используется для всех трех цветовых плоскостей.
F может быть матрицей 3 на 10. tformarray использует разные цвета заливки RGB для каждого из 10 изображений.
Типы данных: double
B - Преобразованное изображениеПреобразованное изображение, возвращаемое в виде числового массива.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.