文档

tformarray

对N-D数组应用空间变换

语法

B = tformarray(A,T,R,tdims_A,tdims_B,tsize_B,tmap_B,F)

描述

例子

B= tformarray (一个TRtdims_Atdims_Btsize_Btmap_BF对数组应用空间转换一个生成数组B

例子

全部折叠

创建一个2 × 2的正方形棋盘图像,其中每个正方形的宽度为20像素。显示图像。

I = checkerboard(20,1,1);图imshow(我)

用投影变换变换棋盘。首先创建一个空间转换结构。

T = maketform(“射影”, 1;41 1;41 41;1 41],(5 5;40 5;35 30;-10年30]);

创建重采样器。使用pad方法“圆”在创建重采样器时,使输出看起来是一个无限棋盘的透视图。

R = makeresampler(“立方”“圆”);

执行转换,指定转换结构和重采样器。对于本例,交换输出尺寸,并指定一个100 × 100的输出图像。离开论点tmap_B空,因为指定了参数tsize_B。离开论点F空,因为不需要填充值。

J = tformarray (T, R, 2[1],[2 1], 100年[100],[],[]);图imshow (J)

创建一个2 × 2的正方形棋盘图像,其中每个正方形的宽度为20像素。显示图像。

I = checkerboard(20,1,1);图imshow(我)

用投影变换变换棋盘。首先创建一个空间转换结构。

T = maketform(“射影”, 1;41 1;41 41;1 41],(5 5;40 5;35 30;-10年30]);

创建重采样器。使用pad方法“圆”在创建重采样器时,使输出看起来是一个无限棋盘的透视图。

R = makeresampler(“立方”“圆”);

创建指定从输入空间到输出空间的点的映射的数组。这个例子使用各向异性采样,其中样本之间的距离在一个方向上比另一个方向上大。

Samp_x = 1:1.5:150;Samp_y = 1:100;[x,y] = meshgrid(samp_x,samp_y);Tmap = cat(3,x,y);大小(tmap)
ans =1×3100 100 2

注意的大小tmap。输出图像的尺寸为100 × 100。

执行转换,指定转换结构和重采样器。将输出映射指定为tmap。离开论点tsize_B空,因为您指定了参数tmap_B。填充值并不重要,因为重采样器是圆形的。

J = tformarray(I,T,R,[1 2],[1 2],[],tmap,[]);图imshow (J)

棋盘格的长度在y——方向比在x-方向,这与向量中点之间较大的采样距离一致samp_x。与使用同位素点映射的结果进行比较(参见示例变换棋盘图像),则在转换后的图像右侧出现棋盘棋盘的另外三列,并且不会向转换后的图像添加新行。

输入参数

全部折叠

输入图像,指定为非稀疏数值数组。一个可以是实数,也可以是复数。

数据类型:||int8|int16|int32|uint8|uint16|uint32|逻辑
复数支持:万博1manbetx是的

空间变换,指定为aTFORM空间转换结构。你通常会使用maketform函数来创建TFORM结构。

tformarray使用T函数tforminv计算输出变换下标空间中每个位置在输入变换下标空间中的对应位置。tformarray定义输入变换空间tdims_Btsize_B输出变换下标空间bytdims_A大小(一个)

如果T那么它是空的tformarray作为直接重采样函数操作。此外,如果tmap_B是:

  • 不是空的,那么tformarray中定义的重采样器R中定义的每个变换空间位置处的值tmap_B

  • 空,那么tformarray在输出变换下标网格中的每个位置应用重采样器

数据类型:结构体

重新采样器,指定为结构。重采样器结构定义了如何在指定位置插入输入数组的值。R是由makeresampler,它允许对如何沿每个维度进行插值进行精细控制。makeresampler还控制在靠近数组边缘插值时使用的输入数组值。

数据类型:结构体

输入变换维数,指定为有限正整数的行向量。

tdims_Atdims_B指示输入和输出阵列的哪些维度参与了空间转换。每个元素必须是唯一的。条目不需要按递增顺序列出,但顺序很重要。顺序指定数组维度之间的精确对应关系一个B以及变换的输入和输出空间T

长度(tdims_A)必须等于T.ndims_in,长度(tdims_B)必须等于T.ndims_out

例如,如果T是一个二维变换,tdims_A = [21],tdims_B = [1 2]的行维和列维一个分别对应于第二个和第一个转换输入空间维度。的行维和列维B分别对应于第一个和第二个输出空间维度。

数据类型:

输出变换维数,指定为有限正整数的行向量。有关更多信息,请参见tdims_A

数据类型:

输出数组变换维度的大小,指定为有限正整数的行向量。的大小B沿非变换维度直接取自的大小一个沿着这些维度。

例如,如果T是一个二维变换,size(A) = [480 640 3 10]tdims_B(2 - 1),tsize_B(300 200),然后大小(B)[200 300 3 10]

数据类型:

输出空间中的点位置,指定为非稀疏的有限实值数组。tmap_B是一个可选参数,它提供了另一种方式来指定元素的位置之间的对应关系B以及在输出变换空间中的位置。tmap_B例如,可用于计算输出空间中一组任意位置的图像翘曲的结果。

如果tmap_B不是空的,那么大小呢tmap_B

[D1D2D3.…DNL]
在哪里N=长度(tdims_B)tsize_B应该是[]

的价值l取决于T是空的。如果T是:

  • 不是空的,那么lT.ndims_out中的每个l维点tmap_B转换为输入空间位置,使用T

  • 空,那么l长度(tdims_A),每个l-维点tmap_B直接用作输入空间中的位置。

数据类型:

填充值,指定为数值数组或标量。的填充值F可以在三种情况下使用:

  • 创建可分离重采样器时makeresampler和它的padmethod被设置为“填满”“约束”

  • 的自定义重采样器万博1manbetx“填满”“约束”Pad方法(具有特定于自定义的行为)。

  • 当从映射变换维度时B的变换维数一个在某些点上故意未定义。这些点在输入变换空间中被编码为S在任意位置tmap_B的输出tforminv

在前两种情况下,填充值用于计算映射到输入数组外部或边缘附近的输出位置的值。填充值被复制到B当输出位置映射到输入数组之外时。看到makeresampler欲了解更多有关“填满”“约束”

F是:

  • 标量(包括),其值被复制到所有非转换维度。

  • 非标量,它的大小取决于大小(一个)在非变换维度中。具体来说,如果KJ的非变换维数一个,然后大小(F, J)肯定是其中之一大小(K)1。为了方便起见,tformarray复制F跨任何具有单位大小的维度,以便在复制之后大小(F, J)=大小(K)

例如,假设一个表示10个RGB图像,大小为200 × 200 × 3 × 10,T是一个二维变换,那么tdims_Atdims_B都是[12]。换句话说,tformarray对10个RGB图像中的每个颜色平面应用相同的二维变换。在这种情况下,您有几个选项F

  • F可以是标量,在这种情况下,对所有10张图像的每个颜色平面使用相同的填充值。

  • F可以是一个3 × 1的向量,[qh]tformarray使用RGB值作为10个图像中每个对应颜色平面的填充值。

  • F可以是一个1 × 10的向量。tformarray为10张图片中的每一张使用不同的填充值,并将该填充值用于所有三个颜色平面。

  • F可以是一个3 × 10矩阵。tformarray为这10张图片中的每一张使用不同的RGB填充色。

数据类型:

输出参数

全部折叠

转换后的图像,作为数字数组返回。

R2006a之前引入

这个话题有帮助吗?