文档

maketform

创建空间转换结构(TFORM

maketform不建议使用。使用fitgeotransaffine2daffine3d,或projective2d代替。

语法

T = maketform('affine',A)
T = maketform('affine',U,X)
T = maketform('projective',A)
T = maketform('投影',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(仿射,一个创建多维空间转换结构T对于n维仿射变换。一个是一个非奇异实(N+1) × (N+1)或(N+1) × N矩阵。如果一个是(N+1)-by-(N+1),一个必须[0 (N, 1); 1].否则,一个自动增广,使其最后一列为[0 (N, 1); 1].矩阵一个定义前向转换,如下所示tformfwd (U, T),在那里U是一个1 × n向量,返回一个1 × n向量X,以致于X = u * a (1: n,1: n) + a (n +1,1: n)T既有正变换也有逆变换。

空间转换结构(称为空间转换结构)TFORM结构),该结构可以与tformfwdtforminvfliptformimtransform,或tformarray功能。

T= maketform(仿射,U, X创建一个TFORM结构体T对于一个二维仿射变换映射每一行U对应的行X.的U而且X参数每个都是3 × 2,并定义输入和输出三角形的角。这些角不能共线。

T= maketform(“投影”,一个创建一个TFORM一个n维射影变换的结构。一个是一个非奇异实(N+1)-by-(N+1)矩阵。(N + 1, N + 1)不能为0。矩阵一个定义前向转换,如下所示tformfwd (U, T),在那里U是一个1 × n向量,返回一个1 × n向量X,以致于X = w (1: n)/ w (n +1),在那里W = [u 1] * a.转换结构T既有正变换也有逆变换。

T= maketform(“投影”,U, X创建一个TFORM结构体T对于一个二维射影变换它映射每一行U对应的行X.的U而且X每个参数都是4乘2的,并定义输入和输出四边形的角。没有三个角可以共线。

T= maketform(“自定义”,NDIMS_IN, NDIMS_OUTFORWARD_FCN, INVERSE_FCNTDATA创建自定义TFORM结构体T基于用户提供的函数句柄和参数。NDIMS_IN而且NDIMS_OUT是输入和输出维数。FORWARD_FCN而且INVERSE_FCN是正向和逆函数的函数句柄。forward函数必须支持以下语法:万博1manbetxX = forward_fcn (u, t).逆函数必须支持以下语法:万博1manbetxU = inverse_fcn (x, t).在这些语法中,U是一个P——- - - - - -NDIMS_IN矩阵,它的行是变换输入空间中的点。X是一个P——- - - - - -NDIMS_OUT矩阵,它的行是变换输出空间中的点。的TDATA参数可以是任何MATLAB®数组,通常用于存储自定义转换的参数。它可以被FORWARD_FCN而且INVERSE_FCN通过tdata领域的T.要么FORWARD_FCNINVERSE_FCN可以是空的,虽然至少INVERSE_FCN必须定义才能使用Ttformarrayimtransform

T= maketform(“盒子”,tsize低,高
T = maketform('box',INBOUNDS, OUTBOUNDS)建立一个n维仿射TFORM结构体T.的tsize参数是一个n元正整数向量。而且也是n元向量。转换映射由对角定义的输入框(1, N)而且tsize,或通过拐角:发边线球的(1)而且入站(2),到由对角定义的输出框而且:禁止击球区(1)而且:禁止击球区(2)低(K)而且高(K)必须不同,除非tsize (K)为1,则假设沿k维的仿射尺度因子为1.0。同样的,发边线球的(K)而且发边线球的(2 K)必须不同,除非禁止击球区(K)而且禁止击球区(2 K)是相同的,反之亦然。的“盒子”TFORM通常用于将图像或数组的行下标和列下标注册到某个世界坐标系统。

T= maketform(“复合”,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)。

maketform(仿射的,(。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 (20 [10], T)
Ans = 15 40

将图像读入工作区并显示它。

I = imread(“cameraman.tif”);imshow(我),

将变换应用于图像。

I2 = imtransform(I,T);

显示原始图像和转换后的图像。

图中,imshow (I2)

输入参数

全部折叠

变换矩阵,指定为一个非奇异的,实(N+1)-by-(N+1)或(N+1)-by-N矩阵。

数据类型:

角,指定为3 × 2矩阵(用于仿射变换)或4 × 2矩阵(用于射影变换)。矩阵定义三角形(用于仿射变换)或四边形(用于射影变换)的角。

数据类型:

输入和输出维数,指定为标量。

数据类型:

正向和逆函数,指定为函数句柄。

数据类型:function_handle

自定义转换的参数,指定为数组。

数据类型:

输入框的大小,指定为正整数的n元素向量。

数据类型:

输出框的角,指定为n元素向量。

数据类型:

正向和逆函数,指定为函数句柄。

数据类型:function_handle

输出参数

全部折叠

多维空间转换结构,返回为转换结构(TFORM)。

提示

  • 对于3 × 2矩阵,仿射变换或射影变换也可以这样表示一个

    [x y]' = a ' * [u v 1] '

    或者,像这个3 × 3矩阵的方程一个

    [x y 1]' = a ' * [u v 1]'

R2006a之前介绍

这个话题有用吗?