transformPointsForward
应用正向几何变换
语法
描述
例子
应用二维几何变换的正变换
定义一个3 × 3的几何变换矩阵。这个例子指定了一个包含垂直剪切和水平拉伸的仿射变换矩阵。
A = [1.5 0 0;0.8 10 0;0 0 1];
创建一个affinetform2d
对象的变换矩阵。
tform = affinetform2d(A);
对输入点应用正向几何变换。
U = 5;V = 10;[x,y] = transformPointsForward(tform,u,v)
X = 7.5000
Y = 14
使用自定义2-D变换变换坐标数组
指定要变换的5个点的x坐标和y坐标向量。
X = [10 11 15 2 2];Y = [15 32 34 7 10];
定义反向映射函数和正向映射函数。两个函数都接受和返回打包(x,y)格式的点。
Inversefn = @(c) [c(:,1).^2,根号(c(:,2))];Forwardfn = @(c)[√(c(:,1)),c(:,2).^2];
创建一个二维几何变换对象,tform
,它存储逆映射函数和可选的正向映射函数。
tform = geometricTransform2d(inversefn,forwardfn)
tform = geometricTransform2d属性:InverseFcn: @ (c) [c(: 1)。^ 2,sqrt (c (:, 2))] ForwardFcn: @ (c) [sqrt (c (: 1)), c(:, 2)。^2]维度:2
对输入点应用逆几何变换。
[u,v] = transformPointsInverse(tform,x,y)
u =1×5100 121 225 4 4
v =1×53.8730 5.6569 5.8310 2.6458 3.1623
对变换后的点应用正向几何变换u
而且v
.
[x,y] = transformPointsForward(tform,u,v)
x =1×510 11 15 2 2
y =1×515.0000 32.0000 34.0000 7.0000 10.0000
应用三维几何变换的正变换
定义一个只包含平移的刚性几何变换。
T = [10 20.5 15];Tform = transltform3d(t);
对输入点应用正向几何变换。
U = 1;V = 1;W = 1.01;[x,y,z] = transformPointsForward(tform,u,v,w)
X = 11
Y = 21.5000
Z = 16.0100
使用自定义3-D变换变换坐标数组
指定x- - - - - -,y-以及z-坐标向量的五个点进行变换。
X = [3 5 7 9 11];Y = [2 4 6 8 10];Z = [5 9 13 17 21];
定义反向和正向映射函数,它们接受和返回打包(x,y,z)的格式。
inverseFcn = @ (c) [c(: 1)。^ 2,c (:, 2) ^ 2, c(:, 3)。^ 2];forwardFcn = @ (c) [sqrt (c (: 1)), sqrt (c (:, 2)), sqrt (c (:, 3)));
创建一个三维几何变换对象,tform
,存储这些反向映射函数和正向映射函数。
tform = geometricTransform3d(inverseFcn,forwardFcn)
tform = geometricTransform3d属性:InverseFcn: @(c)[c(:,1).^2,c(:,2).^2,c(:,3).]^ 2] ForwardFcn: @ (c) [sqrt (c (: 1)), sqrt (c (:, 2)), sqrt (c(:, 3)))维度:3
对输入点应用这个三维几何变换的逆变换。
[u,v,w] = transformPointsInverse(tform,x,y,z)
u =1×59 25 49 81 121
v =1×54 16 36 64 100
w =1×525 81 169 289 441
对变换后的点应用正向几何变换u
,v
,w
.
[x,y,z] = transformPointsForward(tform,u,v,w)
x =1×53 5 7 9 11
y =1×52 4 6 8
z =1×55 9 13 17 21
输入参数
tform
- - - - - -几何变换
几何变换对象
几何变换,指定为表中列出的几何变换对象。
几何变换对象 | 描述 |
---|---|
二维线性几何变换 | |
transltform2d |
翻译转换 |
rigidtform2d |
刚性变换:平移和旋转 |
simtform2d |
相似度转换:平移、旋转和各向同性缩放 |
affinetform2d |
仿射变换:平移、旋转、各向异性缩放、反射和剪切 |
projtform2d |
射影变换 |
三维线性几何变换 | |
transltform3d |
翻译转换 |
rigidtform3d |
刚性变换:平移和旋转 |
simtform3d |
相似度转换:平移、旋转和各向同性缩放 |
affinetform3d |
仿射变换:平移、旋转、各向异性缩放、反射和剪切 |
非线性几何变换 | |
geometricTransform2d |
使用逐点映射函数的自定义2-D几何变换 |
geometricTransform3d |
使用逐点映射函数自定义3-D几何变换 |
u
- - - - - -x-要转换的点的坐标
米——- - - - - -n或米——- - - - - -n——- - - - - -p数字数组
x-要转换的点的坐标,指定为米——- - - - - -n或米——- - - - - -n——- - - - - -p数字数组。的维数u
的维度匹配tform
.
数据类型:单
|双
v
- - - - - -y-要转换的点的坐标
米——- - - - - -n或米——- - - - - -n——- - - - - -p数字数组
y-要转换的点的坐标,指定为米——- - - - - -n或米——- - - - - -n——- - - - - -p数字数组。的大小v
一定要搭配大小的u
.
数据类型:单
|双
U
- - - - - -待变换点的坐标
l——- - - - - -2或l——- - - - - -3.数字数组
要转换的点的坐标,指定为l——- - - - - -2或l——- - - - - -3.数字数组。的列数U
的维度匹配tform
.
第一列列出x-坐标,第二列列出y协调。如果tform
表示三维几何变换,U
有大小l——- - - - - -3.第三列列出z-要变换点的坐标。
数据类型:单
|双
输出参数
x
- - - - - -x-变换后点的坐标
米——- - - - - -n或米——- - - - - -n——- - - - - -p数字数组
x-转换后的点坐标,返回为米——- - - - - -n或米——- - - - - -n——- - - - - -p数字数组。的维数x
的维度匹配tform
.
数据类型:单
|双
y
- - - - - -y-变换后点的坐标
米——- - - - - -n或米——- - - - - -n——- - - - - -p数字数组
y-转换后的点坐标,返回为米——- - - - - -n或米——- - - - - -n——- - - - - -p数字数组。的大小y
匹配的大小x
.
数据类型:单
|双
z
- - - - - -z-变换后点的坐标
米——- - - - - -n——- - - - - -p数字数组
z-转换后的点坐标,返回为米——- - - - - -n——- - - - - -p数字数组。的大小z
匹配的大小x
.
数据类型:单
|双
版本历史
在R2013a中引入R2022b:金宝app支持新的几何变换对象
从R2022b开始,大多数图像处理工具箱™函数使用预乘法约定创建和执行几何转换。因此,您现在可以指定tform
作为使用前置乘法约定的几何变换对象,例如affinetform2d
对象。
之前,对于线性几何变换,你指定了tform
作为使用后乘约定的几何变换对象,例如affine2d
对象。虽然transformPointsForward
仍然接受使用后乘约定的对象,不建议使用这些对象。有关更多信息,请参见将几何变换迁移到前置乘法约定.
对非线性几何变换的支持没有改变。金宝app
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。