maketform

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

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

Синтаксис

T = maketform('affine',A)
T = maketform('affine',U,X)
T = maketform('projective',A)
T = maketform('projective',U,X)
T = maketform('custom',NDIMS_IN,NDIMS_OUT,FORWARD_FCN,INVERSE_FCN,TDATA)
T = maketform('box',tsize,LOW,HIGH)
T = maketform('box',INBOUNDS, OUTBOUNDS)
T = maketform('composite',T1,T2,...,TL)
T = maketform('composite', [T1 T2 ... TL])

Описание

пример

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 имеет и вперед и обратные преобразования.

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

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

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

T = maketform('custom',NDIMS_IN,NDIMS_OUT,FORWARD_FCN,INVERSE_FCN,TDATA) создает пользовательский struct TFORM T на основе обеспеченных пользователями указателей на функцию и параметров. NDIMS_IN и NDIMS_OUT являются количествами размерностей ввода и вывода. FORWARD_FCN и INVERSE_FCN являются указателями на функцию, чтобы передать и обратные функции. Прямая функция должна поддержать следующий синтаксис: X = FORWARD_FCN(U,T). Обратная функция должна поддержать следующий синтаксис: U = INVERSE_FCN(X,T). В этих синтаксисах U является P-by-NDIMS_IN матрица, строки которой являются точками на входном пробеле преобразования. X является P-by-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-мерный аффинный struct TFORM 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, в этом случае аффинный масштабный коэффициент по измерению Kth принят, чтобы быть 1.0. Точно так же INBOUNDS(1,K) и INBOUNDS(2,K) должны отличаться, если OUTBOUNDS(1,K) и OUTBOUNDS(2,K) не являются тем же самым, и с другой стороны. TFORM 'box' обычно используется, чтобы указать индексы строки и столбца изображения или массива к некоторой системе мировой координаты.

T = maketform('composite',T1,T2,...,TL) или
T = maketform('composite', [T1 T2 ... TL]) создает struct TFORM 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