主要内容

tformarray

将空间变换应用于N-D阵列

tformarray函数不建议用于2-D和3-D空间转换。使用imwarp函数来代替。有关更多信息,请参见兼容性的考虑

描述

例子

B= tformarray (一个TRtdims_Atdims_Btsize_Btmap_BF应用空间变换T到数组一个生成数组B

例子

全部折叠

创建一个2乘2的正方形棋盘图像,每个正方形是20像素宽。显示图像。

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

图中包含一个轴对象。axis对象包含一个image类型的对象。

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

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

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

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

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

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

图中包含一个轴对象。axis对象包含一个image类型的对象。

创建一个2乘2的正方形棋盘图像,每个正方形是20像素宽。显示图像。

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

图中包含一个轴对象。axis对象包含一个image类型的对象。

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

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

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

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)

图中包含一个轴对象。axis对象包含一个image类型的对象。

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

输入参数

全部折叠

输入图像,指定为数字数组。一个可以是真实的,也可以是复杂的。

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

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

tformarray使用T这个函数tforminv为输出变换下标空间中的每个位置计算输入变换下标空间中的相应位置。tformarray定义输入变换空间tdims_B而且tsize_B输出变换下标空间bytdims_A而且大小(一个)

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

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

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

数据类型:结构体

重新采样器,指定为结构。重采样器结构定义了如何在指定位置插入输入数组的值。R是用makeresampler,可以很好地控制如何沿着每个维度进行插值。makeresampler还可以控制在接近数组边缘的位置进行插值时使用的输入数组值。

数据类型:结构体

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

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

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

例如,如果T是一个二维变换,tdims_A = [2 1],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“填满”“约束”填充方法(具有特定于定制的行为)。

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

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

F是:

  • 标量(包括),它的值在所有非转换维度上复制。

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

  • 空([]),tformarray函数使用的填充值为0

例如,假设一个表示10张RGB图像,大小为200 × 200 × 3 × 10,T是一个二维变换,并且tdims_A而且tdims_B都是[12]。换句话说,tformarray将相同的2-D变换应用到10个RGB图像的每个颜色平面。在这种情况下,您有几个选项F

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

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

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

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

数据类型:

输出参数

全部折叠

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

兼容性的考虑

全部展开

不建议从R2018b开始

扩展功能

R2006a之前介绍