maketform

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

maketform не рекомендуется. Используйте fitgeotrans, affine2d, affine3d, или projective2d вместо этого.

Описание

пример

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

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

T = maketform('affine',U,X) создает TFORM struct T для двумерного аффинного преобразования, которое сопоставляет каждую строку U к соответствующей строке X. U и X аргументы - каждый 3 2 и задают углы треугольников ввода и вывода. Углы не могут быть коллинеарными.

T = maketform('projective',A) создает TFORM struct для N-мерного проективного преобразования. A несингулярное действительное (N+1) матрицей (N+1). A(N+1,N+1) не может быть 0. Матричный A задает прямое преобразование, таким образом что tformfwd(U,T), где U вектор 1 на n, возвращает векторный X 1 на n, таким образом, что X = W(1:N)/W(N+1), где W = [U 1] * A. Структура преобразования T имеет и вперед и обратные преобразования.

T = maketform('projective',U,X) создает TFORM struct T для двумерного проективного преобразования, которое сопоставляет каждую строку U к соответствующей строке X. U и X аргументы - каждый 4 2 и задают углы четырехугольников ввода и вывода. Никакие три угла не могут быть коллинеарными.

T = maketform('custom',NDIMS_IN,NDIMS_OUT,FORWARD_FCN,INVERSE_FCN,TDATA) создает пользовательский TFORM struct T на основе обеспеченных пользователями указателей на функцию и параметров. NDIMS_IN и NDIMS_OUT количества размерностей ввода и вывода. FORWARD_FCN и INVERSE_FCN указатели на функцию должны передать и обратные функции. Прямая функция должна поддержать следующий синтаксис: X = FORWARD_FCN(U,T). Обратная функция должна поддержать следующий синтаксис: U = INVERSE_FCN(X,T). В этих синтаксисах, U P- NDIMS_IN матрица, строки которой являются точками на входном пробеле преобразования. X P- NDIMS_OUT матрица, строки которой являются точками в преобразовании выходной пробел. TDATA аргумент может быть любым массивом MATLAB® и обычно используется, чтобы сохранить параметры пользовательского преобразования. Это доступно для FORWARD_FCN и INVERSE_FCN через tdata поле T. Любой FORWARD_FCN или INVERSE_FCN может быть пустым, несмотря на то, что, по крайней мере, INVERSE_FCN должен быть задан, чтобы использовать T с tformarray или imtransform.

T = maketform('box',tsize,LOW,HIGH) или
T = maketform('box',INBOUNDS, OUTBOUNDS) создает N-мерный аффинный TFORM struct T. tsize аргумент является N-вектором положительных целых чисел. LOW и HIGH также N-вектора. Преобразование сопоставляет поле ввода, заданное противоположными углами ones(1,N) и tsize, или углами INBOUNDS(1,:) и INBOUND(2,:), к окну для вывода, заданному противоположными углами LOW и HIGH или OUTBOUNDS(1,:) и OUTBOUNDS(2,:). LOW(K) и HIGH(K) должно отличаться если tsize(K) 1, в этом случае аффинный масштабный коэффициент по K-ому измерению принят, чтобы быть 1.0. Точно так же INBOUNDS(1,K) и INBOUNDS(2,K) должно отличаться если OUTBOUNDS(1,K) и OUTBOUNDS(2,K) то же самое, и с другой стороны. 'box' TFORM обычно используется, чтобы указать индексы строки и столбца изображения или массива к некоторой системе мировой координаты.

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

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

Примеры

свернуть все

Создайте структуру преобразования (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);

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

figure, imshow(I2)

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

свернуть все

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

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

Углы в виде 3-на-2 матрицы (для аффинных преобразований) или 4 2 матрица (для проективных преобразований). Матрицы задают углы треугольников (для аффинных преобразований) или четырехугольники (для проективных преобразований).

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

Количество размерностей ввода и вывода в виде скаляра.

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

Вперед и обратные функции в виде указателей на функцию.

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

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

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

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

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

Углы окна для вывода в виде вектора n-элемента.

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

Вперед и обратные функции в виде указателей на функцию.

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

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

свернуть все

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

Советы

  • Аффинное или проективное преобразование может также быть выражено как это уравнение, для 3 2 A:

    [X Y]'  =  A' * [U V 1] ' 
    

    Или, как это уравнение, для 3х3 A:

    [X Y 1]'  =  A' * [U V 1]'

Смотрите также

| | | |

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