tformarray
对N-D数组应用空间变换
语法
B = tformarray(A,T,R,tdims_A,tdims_B,tsize_B,tmap_B,F)
描述
例子
变换棋盘图像
创建一个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是的
T
- - - - - -空间的转换
TFORM
空间转换结构
空间变换,指定为aTFORM
空间转换结构。你通常会使用maketform
函数来创建TFORM
结构。
tformarray
使用T
函数tforminv
计算输出变换下标空间中每个位置在输入变换下标空间中的对应位置。tformarray
定义输入变换空间tdims_B
和tsize_B
输出变换下标空间bytdims_A
和大小(一个)
。
如果T
那么它是空的tformarray
作为直接重采样函数操作。此外,如果tmap_B
是:
不是空的,那么
tformarray
中定义的重采样器R
中定义的每个变换空间位置处的值tmap_B
空,那么
tformarray
在输出变换下标网格中的每个位置应用重采样器
数据类型:结构体
R
- - - - - -重新取样
结构
重新采样器,指定为结构。重采样器结构定义了如何在指定位置插入输入数组的值。R
是由makeresampler
,它允许对如何沿每个维度进行插值进行精细控制。makeresampler
还控制在靠近数组边缘插值时使用的输入数组值。
数据类型:结构体
tdims_A
- - - - - -输入变换尺寸
有限正整数的行向量
tdims_B
- - - - - -输出变换维度
有限正整数的行向量
输出变换维数,指定为有限正整数的行向量。有关更多信息,请参见tdims_A
。
数据类型:双
tmap_B
- - - - - -输出空间中的点位置
非稀疏,有限,实值数组
输出空间中的点位置,指定为非稀疏的有限实值数组。tmap_B
是一个可选参数,它提供了另一种方式来指定元素的位置之间的对应关系B
以及在输出变换空间中的位置。tmap_B
例如,可用于计算输出空间中一组任意位置的图像翘曲的结果。
如果tmap_B
不是空的,那么大小呢tmap_B
是
[D1D2D3.…DNL]
N
=长度(tdims_B)
。tsize_B
应该是[]
。
的价值l
取决于T
是空的。如果T
是:
不是空的,那么
l
是T.ndims_out
中的每个l维点tmap_B
转换为输入空间位置,使用T
空,那么
l
是长度(tdims_A)
,每个l
-维点tmap_B
直接用作输入空间中的位置。
数据类型:双
F
- - - - - -填值
数字数组或标量
填充值,指定为数值数组或标量。的填充值F
可以在三种情况下使用:
在前两种情况下,填充值用于计算映射到输入数组外部或边缘附近的输出位置的值。填充值被复制到B
当输出位置映射到输入数组之外时。看到makeresampler
欲了解更多有关“填满”
和“约束”
。
当F
是:
标量(包括
南
),其值被复制到所有非转换维度。非标量,它的大小取决于
大小(一个)
在非变换维度中。具体来说,如果K
是J
的非变换维数一个
,然后大小(F, J)
肯定是其中之一大小(K)
或1
。为了方便起见,tformarray
复制F
跨任何具有单位大小的维度,以便在复制之后大小(F, J)
=大小(K)
。
例如,假设一个
表示10个RGB图像,大小为200 × 200 × 3 × 10,T
是一个二维变换,那么tdims_A
和tdims_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填充色。
数据类型:双
输出参数
B
-转换后的图像
数字数组
转换后的图像,作为数字数组返回。
R2006a之前引入
MATLAB命令
您点击了与此MATLAB命令对应的链接:
通过在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。万博1manbetx
你亦可选择下列网址:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家网站没有针对您所在位置的访问进行优化。