exponenta event banner

maketform

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

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

Описание

пример

T = maketform('affine',A) создает многомерную структуру пространственного преобразованияT для N-мерного аффинного преобразования. A является неингулярной вещественной (N + 1) -by- (N + 1) или (N + 1) -by-N матрицей. ЕслиA является (N + 1) -by- (N + 1), последним столбцомA должно быть [zeros(N,1);1]. В противном случае A увеличивается автоматически, так что его последний столбец [zeros(N,1);1]. Матрица A определяет прямое преобразование таким образом, что tformfwd(U,T), где U является вектором 1-by-N, возвращает вектор 1-by-N X, такой, что 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 структура T для двумерного аффинного преобразования, которое отображает каждую строку U в соответствующую строку X. U и X аргументы 3 на 2 и определяют углы входных и выходных треугольников. Углы не могут быть коллинеарными.

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

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

T = maketform('custom',NDIMS_IN,NDIMS_OUT,FORWARD_FCN,INVERSE_FCN,TDATA) создает пользовательский TFORM структура 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 структура 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 структура 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) -by- (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