主要内容

affine2d

二维仿射几何变换

描述

一个affine2d对象存储有关2-D仿射几何变换的信息,并启用正向和逆变换。

创建

你可以创建一个affine2d对象使用以下方法:

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

  • imregcorr.-估计一个使用相位相关将移动图像映射到固定图像的几何变换。

  • FitegeOtrans.- 估计几何变换,即在两个图像之间映射的控制点对。

  • randomAffine2d- 创建随机的2-D仿射变换。

  • affine2d这里描述的功能。

描述

tform = affine2d创建一个affine2d对象,其默认属性设置对应于标识转换。

例子

tform = actifine2d(T设置属性T作为指定的有效仿射变换矩阵。

属性

全部展开

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

矩阵T使用“公约”:

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

在哪里T的形式:

[a b 0;c d 0;E F 1];

默认值T是身份转换。

数据类型:双倍的|

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

对象的功能

逆几何变换
isRigid 确定变换是否为刚性变换
isSimilarity 确定转换是否是相似性转换
istranslation. 确定转换是否为纯转换
产出 给定输入空间限制,求输出空间限制
变换点飞机向前 应用正向几何变换
transformPointsInverse 应用逆几何变换

例子

全部收缩

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

θ= 30;tform = acfine2d([...cosd(θ)信德(θ)0;...信德(θ)cosd(θ)0;...0 0 1])
tform = affine2d与属性:T: [3x3双]维度:2

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

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

通过绘制原始点(蓝色)和变换点(以红色)进行验证转换。

图(10 0'博', x, y,“罗”)轴([0 12 0 12])正方形

图包含一个坐标轴对象。轴线对象包含2个线型对象。

读取并显示图像。

我= imread (“kobi.png”);imshow(我)

图包含一个坐标轴对象。轴线对象包含一个图像类型的对象。

创建一个affine2d旋转图像的转换对象。的randomAffine2d功能从间隔内的连续均匀分布随机拾取旋转角度[35,55]。

tform1 = randomAffine2d (“旋转”,[35 55]);

旋转图像并显示结果。

J = imwarp(我tform1);imshow (J)

图包含一个坐标轴对象。轴线对象包含一个图像类型的对象。

转换对象,tform1,以相同的数量旋转所有图像。通过不同随机选择的量旋转图像,创建一个新的affine2d转型对象。

tform2 = ronsomaffine2d(“旋转”,[ -  10 10]);J2 = imwarp(i,tform2);imshow(J2)

图包含一个坐标轴对象。轴线对象包含一个图像类型的对象。

这个示例展示了如何创建可用于对齐两个图像的几何变换。

创建一个棋盘图像并旋转它来创建一个不对齐的图像。

i =棋盘(40);j = imrootate(i,30);imshowpair(我,j,“蒙太奇”

图包含一个坐标轴对象。轴线对象包含一个图像类型的对象。

在固定图像(棋盘格)和移动图像(旋转棋盘格)上定义一些匹配的控制点。您可以使用控制点选择工具交互式地定义点。

fixedPoints = [41 41;281 161);movingPoints = [56 175;324 160);

创建一个可用于对齐两个图像的几何变换,返回为affine2d几何变换对象。

tform = fitgeotrans (movingPoints定点,“NonreflectiveSimilarity”
tform = affine2d与属性:T: [3x3双]维度:2

使用tform.估计重新采样旋转图像,使其与固定图像注册。假色叠加图像的颜色(绿色和洋红色)区域表明配准错误。这个错误来自于控制点缺乏精确的对应。

tform Jregistered = imwarp (J,'outputview'imref2d(大小(I)));图imshowpair(我Jregistered)

图包含一个坐标轴对象。轴线对象包含一个图像类型的对象。

通过检查一个平行于x轴的单位矢量是如何旋转和拉伸来恢复角度和变换的规模。

u = [0 1];v = [0 0];[x,y] = TransformPointSforward(TForm,U,V);dx = x(2) -  x(1);dy = y(2) -  y(1);角度=(180 / pi)* atan2(dy,dx)
角= 29.7686
标度= 1 /√(dx²+ dy²)
scale = 1.0003

扩展功能

在R2013A介绍