maketform

Создайте пространственную структуру преобразования N-D (TFORM)

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

Описание

Создайте N-D аффинные и проективные преобразования из матриц

пример

T = maketform('affine',A) создает пространственную структуру преобразования T для N-мерного аффинного преобразования, заданного как матричный A. Структура преобразования T имеет и вперед и обратные преобразования.

Пространственная структура преобразования (названный TFORM структура), может использоваться с tformarray, tformfwd, и tforminv функции.

T = maketform('projective',P) создает TFORM структура для N-мерного проективного преобразования, заданного как матричный PT имеет и вперед и обратные преобразования.

Создайте преобразование из прямых или обратных функций

T = maketform('custom',ndims_in,ndims_out,forward_fcn,inverse_fcn,tdata) создает пользовательский TFORM структура T на основе обеспеченных пользователями указателей на функцию и параметров. ndims_in и ndims_out количества размерностей ввода и вывода. forward_fcn и inverse_fcn указатели на функцию должны передать и обратные функции. tdata аргументом может быть любой MATLAB® массив и обычно используется, чтобы сохранить параметры пользовательского преобразования. Это доступно для forward_fcn и inverse_fcn через tdata поле T.

Создайте преобразование для пространственной ссылки

T = maketform('box',tsize,outCornerStart,outCornerEnd) создает N-мерный аффинный TFORM структура T это сопоставляет поле ввода, заданное координатами угла, ones(1,N), и размер tsize, к окну для вывода, заданному противоположными углами outCornerStart и outCornerEnd. 'box' TFORM структура обычно используется, чтобы указать индексы строки и столбца изображения или массива к некоторой системе мировой координаты.

T = maketform('box',inCorners,outCorners) создает N-мерный аффинный TFORM структура T. Преобразование сопоставляет поле ввода, заданное противоположными углами inCorners(1,:) и inCorners(2,:) к окну для вывода, заданному противоположными углами outCorners(1,:) и outCorners(2,:).

Создайте составное преобразование

T = maketform('composite',T1,T2,...,TL) создает TFORM структура T это - составной объект преобразований T1, T2, ..., TL заданный как разделенный от запятой TFORM структуры. Прямые и обратные функции T функциональные составы прямых и обратных функций преобразований компонента T1, T2, ..., TL.

T = maketform('composite',[T1,T2,...,TL]) создает TFORM структура T это - составной объект преобразований T1, T2, ..., TL заданный в векторе. Прямые и обратные функции T функциональные составы прямых и обратных функций преобразований компонента T1, T2, ..., TL.

Примеры

свернуть все

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

T = maketform('affine',[.5 0 0; .5 2 0; 0 0 1])
T = 

  struct with fields:

       ndims_in: 2
      ndims_out: 2
    forward_fcn: @fwd_affine
    inverse_fcn: @inv_affine
          tdata: [1×1 struct]

Примените прямое преобразование.

tformfwd([10 20],T)
ans =

    15    40

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

I = imread('cameraman.tif');
imshow(I)

Примените преобразование к изображению.

I2 = imtransform(I,T);

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

imshow(I2)

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

свернуть все

Аффинное преобразование в виде (N +1) (N +1) матрица или (N +1)-by-N матрица, где N является размерностью аффинного преобразования. Матрица должна быть несингулярной и действительной.

Если A (N +1) (N +1), последний столбец A должен быть [zeros(N,1);1]. В противном случае, A увеличивается автоматически, такой, что его последним столбцом является [zeros(N,1);1]. Матричный A задает прямое преобразование, таким образом что tformfwd(U,T), где U 1 N вектором, возвращает 1 N векторным X, таким образом, что X = U * A(1:N,1:N) + A(N+1,1:N).

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

Проективное преобразование в виде (N +1) (N +1) матрица, где N является размерностью проективного преобразования. Матрица должна быть несингулярной и действительной. P(N+1,N+1) не может быть 0.

Матричный P задает прямое преобразование, таким образом что tformfwd(U,T), где U 1 N вектором, возвращает 1 N векторным X, таким образом, что X = W(1:N)/W(N+1), где W = [U 1] * P.

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

Количество входных размерностей в виде положительного целого числа.

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

Количество выходных размерностей в виде положительного целого числа.

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

Передайте функцию в виде указателя на функцию, который поддерживает синтаксис X = forward_fcn(U,T)U numpts-by-ndims_in матрица, строки которой являются точками во входном пространстве преобразования и X numpts-by-ndims_out матрица, строки которой являются точками в преобразовании выходной пробел.

forward_fcn может быть пустым.

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

Обратная функция в виде указателя на функцию, который поддерживает синтаксис U = inverse_fcn(X,T)U numpts-by-ndims_in матрица, строки которой являются точками во входном пространстве преобразования и X numpts-by-ndims_out матрица, строки которой являются точками в преобразовании выходной пробел.

inverse_fcn может быть пустым. Однако использовать TFORM struct T с tformarray функция, необходимо задать inverse_fcn.

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

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

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

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

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

Запуск угловых координат на выходном пробеле в виде N-вектора. outCornerStart(k) и outCornerEnd(k) должен отличаться если tsize(k) равняется 1, в этом случае аффинный масштабный коэффициент вдоль k-th размерность принят, чтобы быть 1.0.

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

Противоположные угловые координаты на выходном пробеле в виде N-вектора. outCornerStart(k) и outCornerEnd(k) должен отличаться если tsize(k) равняется 1, в этом случае аффинный масштабный коэффициент вдоль k-th размерность принят, чтобы быть 1.0.

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

Угловые координаты во входном пространстве в виде числовой матрицы N-2. Первый столбец представляет координаты одного угла, и второй столбец представляет координаты противоположного угла. inCorners(1, k) и inCorners(2, k), должно отличаться если outCorners(1, k) и outCorners(2, k), то же самое.

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

Угловые координаты на выходном пробеле в виде числовой матрицы N-2. Первый столбец представляет координаты одного угла, и второй столбец представляет координаты противоположного угла. outCorners(1, k) и outCorners(2, k), должно отличаться если inCorners(1, k) и inCorners(2, k), то же самое.

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

Преобразования компонента в виде TFORM структуры.

Входные параметры T1, T2, ..., TL упорядочены, как они были бы при использовании стандартного обозначения для композиции функций: T = T1T2...TL. Состав является ассоциативным, но не коммутативным. Это означает это применять T к входу U, необходимо применить TL сначала и T1 в последний раз. Таким образом, если L = 3, например, затем tformfwd(U,T) совпадает с tformfwd(tformfwd(tformfwd(U,T3),T2),T1). Компоненты T1 через TL должно быть совместимым в терминах количеств размерностей ввода и вывода.

T имеет заданную прямую функцию преобразования, только если все преобразования компонента задали, вперед преобразовывают функции. T имеет заданную обратную функцию преобразования, только если все преобразования компонента задали инверсию, преобразовывают функции.

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

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

свернуть все

Многомерное пространственное преобразование, возвращенное как TFORM структура.

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

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

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

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

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