Main Content

projective2d

(不推荐)使用后乘约定的二维投影几何变换

不建议使用 projective2d。请改用 projtform2d 对象。有关详细信息,请参阅兼容性注意事项

说明

projective2d 对象封装一个二维投影几何变换。

创建对象

您可以使用以下方法创建一个 projective2d 对象:

  • fitgeotrans - 估计在两个图像之间映射成对控制点的几何变换

  • 此处介绍的 projective2d 函数

描述

tform = projective2d 创建一个 projective2d 对象,其默认属性设置对应于恒等变换。

示例

tform = projective2d(A) 将属性 T 设置为指定的二维投影变换矩阵 t

属性

全部展开

正向二维投影变换,指定为非奇异矩阵 3×3 数值矩阵。矩阵 T 使用如下约定:

[x y 1] = [u v 1] * T

其中,T 采用以下形式:

[a b c; ...
 d e f; ...
 g h i];

T 的默认值为恒等变换。

数据类型: double | single

此 属性 为只读。

输入点和输出点的几何变换维度,指定为值 2。

对象函数

invertInvert geometric transformation
outputLimitsFind output spatial limits given input spatial limits
transformPointsForwardApply forward geometric transformation
transformPointsInverseApply inverse geometric transformation

示例

全部折叠

将旋转和倾斜组合成一个变换矩阵 tm。使用此变换矩阵创建一个 projective2d 几何变换对象 tform

theta = 10;
tm = [cosd(theta) -sind(theta) 0.001; ...
      sind(theta) cosd(theta) 0.01; ...
      0 0 1];
tform = projective2d(tm)
tform = 
  projective2d with properties:

                 T: [3x3 double]
    Dimensionality: 2

检查 T 属性的值。

tform.T
ans = 3×3

    0.9848   -0.1736    0.0010
    0.1736    0.9848    0.0100
         0         0    1.0000

扩展功能

版本历史记录

在 R2013a 中推出

全部展开

R2022b: 不推荐

从 R2022b 开始,大多数 Image Processing Toolbox™ 函数都使用前乘约定来创建和执行几何变换。因此,不推荐使用 projective2d 对象,因为它使用后乘约定。虽然当前没有删除 projective2d 对象的计划,但您可以通过切换到支持前乘约定的 projtform2d 对象来简化几何变换工作流。有关详细信息,请参阅Migrate Geometric Transformations to Premultiply Convention

要更新您的代码,请执行以下操作:

  • 将函数名称 projective2d 的实例更改为 projtform2d

  • 将变换矩阵指定为矩阵 T 的转置矩阵,其中 Tprojective2d 对象的 T 属性的值,或用于创建 projective2d 对象的变换矩阵。

不推荐使用推荐的替代项

此示例基于后乘约定中的变换矩阵 T 创建一个 projective2d 对象。

T = [2 0.33 0; 0 1 0; 5 10 1];
tformPost = projective2d(T);

此示例基于变换矩阵 T 的转置创建一个 projtform2d 对象。

T = [2 0.33 0; 0 1 0; 5 10 1];
A = T';
tform = projtform2d(A);

此示例从一个名为 tformPostprojective2d 对象开始,并基于 tformPostT 属性的转置创建一个 projtform2d 对象。

T = tformPost.T;
tform = projtform2d(T');