本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

affine2d

二维仿射几何变换

说明

affine2d 对象存储有关二维仿射几何变换的信息,并支持正向变换和逆变换。

创建对象

您可以使用以下方法创建 affine2d 对象:

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

  • imregcorr - 使用相位相关性来估计将运动图像映射到固定图像的几何变换

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

  • randomAffine2d - 创建随机二维仿射变换

  • 本文介绍的 affine2d 函数

说明

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

示例

tform = affine2d(A) 使用非奇异矩阵 A 定义的有效仿射变换设置 T 属性。

属性

全部展开

正向二维仿射变换,指定为非奇异矩阵 3×3 数值矩阵。

矩阵 T 使用如下约定:

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

其中,T 采用以下形式:

 [a b 0;
  c d 0;
  e f 1];

T 的默认值为恒等变换。

数据类型: double | single

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

对象函数

invertInvert geometric transformation
isRigidDetermine if transformation is rigid transformation
isSimilarityDetermine if transformation is similarity transformation
isTranslationDetermine if transformation is pure translation
outputLimitsFind output spatial limits given input spatial limits
transformPointsForwardApply forward geometric transformation
transformPointsInverseApply inverse geometric transformation

示例

全部折叠

创建一个 affine2d 对象,该对象定义围绕原点逆时针方向旋转 30 度。

theta = 30;
tform = affine2d([cosd(theta) sind(theta) 0;...
    -sind(theta) cosd(theta) 0; 0 0 1])
tform = 
  affine2d with properties:

    Dimensionality: 2
                 T: [3x3 double]

对点 (10,0) 应用正向几何变换。

[x,y] = transformPointsForward(tform,10,0)
x = 8.6603
y = 5

通过绘制原始点(蓝色)和变换后的点(红色)来验证变换。

figure
plot(10,0,'bo',x,y,'ro')
axis([0 12 0 12]); axis square;

将图像读入工作区。

A = imread('pout.tif');

创建定义仿射几何变换的 affine2d 对象。此示例结合使用了垂直剪切和水平拉伸。

tform = affine2d([2 0.33 0; 0 1 0; 0 0 1])
tform = 
  affine2d with properties:

    Dimensionality: 2
                 T: [3x3 double]

使用 imwarp 对图像应用几何变换。

B = imwarp(A,tform);

显示应用变换后的图像。

figure
imshow(B);
axis on equal;

扩展功能

在 R2013a 中推出