主要内容

rigidtform3d

三维刚性几何变换

自 R2022b 起. 建议替换 rigid3d.

    说明

    rigidtform3d 对象存储有关三维刚性几何变换的信息,并支持正向变换和逆变换。

    创建对象

    您可以通过以下方式创建一个 rigidtform3d 对象:

    • imregtform - 使用相似性优化来估计将运动图像映射到固定图像的几何变换。

    • 其他工具箱中返回几何变换的函数,包括(但不限于):

    • 此处介绍的 rigidtform3d 函数。

    描述

    tform = rigidtform3d 创建一个执行恒等变换的 rigidtform3d 对象。

    tform = rigidtform3d(rotMat,t) 创建一个 rigidtform3d 对象,该对象基于指定的旋转矩阵 rotMat 和每个维度上的平移量 t 执行刚性变换。

    tform = rigidtform3d(eulerAngles,t) 创建一个 rigidtform3d 对象,该对象基于指定的欧拉角和每个维度上的平移量 t 执行刚性变换。

    示例

    tform = rigidtform3d(rigidMat) 从指定的三维刚性变换矩阵 rigidMat 创建一个 rigidtform3d 对象。

    tform = rigidtform3d(tformIn) 基于另一个几何变换对象 tformIn 创建一个 rigidtform3d 对象,该对象表示有效的三维刚性几何变换。

    输入参量

    全部展开

    旋转矩阵,指定为 3×3 数值矩阵。旋转矩阵的效果是先绕 z 轴旋转,然后绕 y 轴旋转,最后绕 x 轴旋转。

    此参量设置 R 属性。

    平移量,指定为 [tx ty tz] 形式的三元素数值向量。这些平移量对应于由 A 定义的刚性变换矩阵中的值 txtytz

    此参量设置 Translation 属性。

    数据类型: double | single

    x,y,z 顺序的欧拉角(以度为单位),指定为 [rx ry rz] 形式的三元素数值向量。欧拉角根据以下公式将 R 属性设置为三个旋转矩阵的乘积:

     Rx = [1 0 0; 0 cosd(rx) -sind(rx); 0 sind(rx) cosd(rx)];
     Ry = [cosd(ry) 0 sind(ry); 0 1 0; -sind(ry) 0 cosd(ry)];
     Rz = [cosd(rz) -sind(rz) 0; sind(rz) cosd(rz) 0; 0 0 1];
      R = Rz*Ry*Rx;

    数据类型: double | single

    正向三维刚性变换,指定为 4×4 数值矩阵。创建对象时,还可以将 rigidMat 指定为 3×4 数值矩阵。在这种情况下,该对象会将行向量 [0 0 0 1] 串联到矩阵的末尾,形成一个 4×4 矩阵。

    有效的三维刚性变换 A 具有以下形式:

    Α=[R(1,1)R(1,2)R(1,3)txR(2,1)R(2,2)R(2,3)tyR(3,1)R(3,2)R(3,3)tz0001]

    R(i,j) 是旋转矩阵的元素并设置 R 属性。txtytz 分别是 xyz 方向上的平移量并设置 Translation 属性。

    此参量设置 A 属性。

    数据类型: double | single

    刚性三维几何变换,指定为 affinetform3d 对象、rigidtform3d 对象、simtform3d 对象或 transltform3d 对象。

    输出参量

    全部展开

    刚性三维几何变换,以 rigidtform3d 对象形式返回。

    属性

    全部展开

    正向三维刚性变换,指定为 4×4 数值矩阵。A 的默认值为单位矩阵。

    矩阵 A 使用以下约定将输入坐标空间中的点 (u, v, w) 转换为输出坐标空间中的点 (x, y, z):

    [xyz1]=Α×[uvw1]

    对于刚性变换,A 具有以下形式:

    Α=[R(1,1)R(1,2)R(1,3)txR(2,1)R(2,2)R(2,3)tyR(3,1)R(3,2)R(3,3)tz0001]

    其中每个元素 R(i,j) 是由 R 属性指定的旋转矩阵的元素 (i, j)。txtytz 分别是 xyz 方向上的平移量,并对应于 Translation 属性。

    数据类型: double | single

    旋转矩阵,指定为 3×3 数值矩阵。旋转矩阵的效果是先绕 z 轴旋转,然后绕 y 轴旋转,最后绕 x 轴旋转。

    平移量,指定为 [tx ty tz] 形式的三元素数值向量。

    数据类型: double | single

    此 属性 为只读。

    输入点和输出点的几何变换维度,以值 3 的形式返回。

    数据类型: double

    对象函数

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

    示例

    全部折叠

    指定欧拉角和平移量。

    angles = [30 0 90];
    translation = [10 20.5 15];

    创建一个执行指定的旋转和平移的 rigidtform3d 对象。

    tform = rigidtform3d(angles,translation)
    tform = 
      rigidtform3d with properties:
    
        Dimensionality: 3
           Translation: [10 20.5000 15]
                     R: [3×3 double]
    
                     A: [     0   -0.8660    0.5000   10.0000
                         1.0000         0         0   20.5000
                              0    0.5000    0.8660   15.0000
                              0         0         0    1.0000]
    
    

    检查 A 属性的值。

    tform.A
    ans = 4×4
    
             0   -0.8660    0.5000   10.0000
        1.0000         0         0   20.5000
             0    0.5000    0.8660   15.0000
             0         0         0    1.0000
    
    

    扩展功能

    全部展开

    版本历史记录

    在 R2022b 中推出

    全部展开