tformarray

Примените пространственное преобразование к массиву N-D

tformarray функция не рекомендуется для 2D и 3-D пространственных преобразований. Используйте imwarp функцию вместо этого. Для получения дополнительной информации см. Вопросы совместимости.

Описание

пример

B = tformarray(A,T,R,tdims_A,tdims_B,tsize_B,tmap_B,F) применяет пространственное преобразование T выстраивать A произвести массив B.

Примеры

свернуть все

Создайте квадратное изображение шахматной доски 2 на 2, где каждый квадрат 20 пикселей шириной. Отобразите изображение.

I = checkerboard(20,1,1);
figure
imshow(I)

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

Преобразуйте шахматную доску с проективным преобразованием. Сначала создайте пространственную структуру преобразования.

T = maketform('projective',[1 1; 41 1; 41 41;   1 41],...
                           [5 5; 40 5; 35 30; -10 30]);

Создайте resampler. Используйте метод клавиатуры 'circular' при создании resampler, так, чтобы выход, казалось, был видом в перспективе бесконечной шахматной доски.

R = makeresampler('cubic','circular');

Выполните преобразование, задав структуру преобразования и resampler. В данном примере подкачайте выходные размерности и задайте 100 100 выходное изображение. Оставьте аргумент tmap_B пустой, поскольку вы задаете аргумент tsize_B. Оставьте аргумент F пустой, поскольку значение заливки не нужно.

J = tformarray(I,T,R,[1 2],[2 1],[100 100],[],[]);
figure
imshow(J)

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

Создайте квадратное изображение шахматной доски 2 на 2, где каждый квадрат 20 пикселей шириной. Отобразите изображение.

I = checkerboard(20,1,1);
figure
imshow(I)

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

Преобразуйте шахматную доску с проективным преобразованием. Сначала создайте пространственную структуру преобразования.

T = maketform('projective',[1 1; 41 1; 41 41;   1 41],...
                           [5 5; 40 5; 35 30; -10 30]);

Создайте resampler. Используйте метод клавиатуры 'circular' при создании resampler, так, чтобы выход, казалось, был видом в перспективе бесконечной шахматной доски.

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.

Выполните преобразование, задав структуру преобразования и resampler. Задайте выходную карту как tmap. Оставьте аргумент tsize_B пустой, поскольку вы задаете аргумент tmap_B. Значение заливки не имеет значения, поскольку resampler является круговым.

J = tformarray(I,T,R,[1 2],[1 2],[],tmap,[]);
figure
imshow(J)

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

Длина квадратов шахматной доски больше в направлении Y, чем в направлении X, которое соглашается с большим расстоянием выборки между точками в векторном samp_x. По сравнению с результатом с помощью изотопического отображения точки (см. Изображение Шахматной доски Преобразования в качестве примера), три дополнительных столбца шахматной доски появляются справа от преобразованного изображения, и никакие новые строки не добавляются к преобразованному изображению.

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

свернуть все

Введите изображение в виде числового массива. A может быть действительным или комплексным.

Типы данных: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | logical
Поддержка комплексного числа: Да

Пространственное преобразование в виде TFORM пространственная структура преобразования. Вы обычно используете maketform функция, чтобы создать TFORM структура.

tformarray использование T и функция tforminv чтобы вычислить соответствующее местоположение во входе преобразовывают пробел индекса для каждого местоположения в выходе, преобразовывают пробел индекса. tformarray задает вход, преобразовывают пробел tdims_B и tsize_B и выход преобразовывает пробел индекса tdims_A и size(A).

Если T пусто, затем tformarray действует в качестве прямой функции передискретизации. Далее, если tmap_B :

  • Не пустой, затем tformarray применяет resampler, заданный в R чтобы вычислить значения в каждом преобразовывают местоположение пробела, заданное в tmap_B

  • Пустой, затем tformarray применяется resampler в каждом местоположении в выходе преобразовывают сетку индекса

Типы данных: struct

Resampler в виде структуры. resampler структура задает, как интерполировать значения входного массива в заданных местоположениях. R создается с makeresampler, который позволяет точную регулировку по тому, как интерполировать по каждому измерению. makeresampler также средства управления, что значения входного массива использовать при интерполяции близко к ребру массива.

Типы данных: struct

Введите преобразовывают размерности в виде вектора-строки из конечных, положительных целых чисел.

tdims_A и tdims_B укажите, какие размерности массивов ввода и вывода вовлечены в пространственное преобразование. Каждый элемент должен быть уникальным. Записи не должны быть перечислены в увеличивающемся порядке, но вопросах порядка. Порядок задает точное соответствие между размерностями массивов A и B и пробелы ввода и вывода преобразования T.

length(tdims_A) должен равняться T.ndims_in, и length(tdims_B) должен равняться T.ndims_out.

Например, если T 2D преобразование, tdims_A = [2 1], и tdims_B = [1 2], затем размерности строки и столбца A соответствуйте вторым и первым размерностям входного пространства преобразования, соответственно. Размерности строки и столбца B соответствуйте первым и вторым размерностям выходного пробела, соответственно.

Типы данных: double

Выведите преобразовывают размерности в виде вектора-строки из конечных, положительных целых чисел. Для получения дополнительной информации смотрите tdims_A.

Типы данных: double

Размер выходного массива преобразовывает размерности в виде вектора-строки из конечных, положительных целых чисел. Размер B вдоль непреобразования размерности взят непосредственно из размера A по тем измерениям.

Например, если T 2D преобразование, size(A) = [480 640 3 10], tdims_B [2 1], и tsize_B [300 200], затем size(B) [200 300 3 10].

Типы данных: double

Укажите местоположения на выходном пробеле в виде конечного массива с действительным знаком. tmap_B дополнительный аргумент, который обеспечивает альтернативный способ задать соответствие между положением элементов B и местоположение в выходе преобразовывает пробел. tmap_B может использоваться, например, чтобы вычислить результат деформации изображений в наборе произвольных местоположений на выходном пробеле.

Если tmap_B не пусто, затем размер tmap_B

 [D1 D2 D3 ... DN L]
где N равняется length(tdims_B). tsize_B должен быть [].

Значение L зависит от ли T isempty. Если T :

  • Не пустой, затем L T.ndims_out, и каждая L-размерность указывает в tmap_B преобразовывается к местоположению входного пространства с помощью T

  • Пустой, затем L length(tdims_A), и каждый L- размерная точка в tmap_B используется непосредственно в качестве местоположения во входном пространстве.

Типы данных: double

Заполните значения в виде числового скаляра, числового массива, или пустой ([]). Значения заливки в F может использоваться в трех ситуациях:

  • Когда отделимый resampler создается с makeresampler и его padmethod установлен в любой 'fill' или 'bound'.

  • Когда пользовательский resampler используется, который поддерживает 'fill' или 'bound' заполните методы (с поведением, которое характерно для индивидуальной настройки).

  • Когда карта от размерностей преобразования B к размерностям преобразования A сознательно не определено для некоторых точек. Такие точки закодированы во входе, преобразовывают пробел NaNs в любом tmap_B или в выходе tforminv.

В первых двух случаях значения заливки являются использованными для расчета значениями для выходных местоположений, которые сопоставляют снаружи или около ребер входного массива. Заполните значения копируются в B когда выведенные местоположения сопоставляют хорошо вне входного массива. Смотрите makeresampler для получения дополнительной информации о 'fill' и 'bound'.

Когда F :

  • Скаляр (включая NaN), его значение реплицировано через все размерности непреобразования.

  • Нескалярный, его размер зависит от size(A) в размерностях непреобразования. А именно, если K Jth не преобразовывают размерность A, затем size(F,J) должен быть любой size(A,K) или 1. Как удобство, tformarray реплицирует F через любые размерности с модулем измеряют таким образом что после репликации size(F,J) равняется size(A,K).

  • Пустой), tformarray функционируйте использует значение заливки 0.

Например, предположите A представляет 10 изображений RGB и имеет размер 200 200 3 10, T 2D преобразование и tdims_A и tdims_B оба [1 2]. Другими словами, tformarray применяет то же 2D преобразование к каждой цветной плоскости каждого из 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

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

свернуть все

Преобразованное изображение, возвращенное как числовой массив.

Вопросы совместимости

развернуть все

Не рекомендуемый запуск в R2018b

Расширенные возможности

Представлено до R2006a
Для просмотра документации необходимо авторизоваться на сайте