主要内容

几何变换的矩阵表示

可以使用几何变换矩阵对图像进行全局变换。首先,定义一个变换矩阵,并用它创建一个几何变换对象。然后,通过调用对图像应用全局变换imwarp几何变换对象。例如,请参见执行简单的二维转换

二维仿射变换

表格列出了二维仿射变换和用来定义它们的变换矩阵。对于二维仿射变换,最后一列必须包含[0,0 1]齐次坐标。

使用任何二维变换矩阵的组合来创建affine2d几何变换对象。使用2-D平移和旋转矩阵的组合创建rigid2d几何变换对象。

二维仿射变换 示例(原始图像和转换后的图像) 变换矩阵
翻译

tx的位移x

ty的位移y轴。

有关像素坐标的更多信息,请参见图像坐标系

规模

年代x指定沿方向的比例因子x

年代y指定沿方向的比例因子y轴。

剪切

上海x指定沿剪切线的剪切系数x

上海y指定沿剪切线的剪切系数y轴。

旋转

指定绕原点旋转的角度。

二维射影变换

投影变换使图像的平面倾斜。平行线可以收敛到消失点,形成深度的外观。

这个变换是一个3 × 3矩阵。不像仿射变换,变换矩阵的最后一列没有限制。

二维射影变换 例子 变换矩阵
倾斜

1 0 E 0 1 F 0 0 1

EF影响消失点。

什么时候EF时,消失点更接近原点,因此平行线似乎收敛得更快。

注意,当EF等于0时,这个变换就变成了一个仿射变换。

射影变换经常用于配准不对齐的图像。如果你有两个图像想要对齐,首先选择控制点对使用cpselect. 然后,用投影变换矩阵拟合控制点对菲吉奥特兰斯并设置转换类型“射影”.这将自动创建一个投影2D几何变换对象。转换矩阵作为属性存储在投影2D然后,可以使用imwarp

创建复合2-D仿射变换

可以使用矩阵乘法将多个变换组合成一个矩阵。矩阵乘法的顺序很重要。

此示例演示如何创建二维平移和旋转变换的组合。

创建将进行转换的棋盘图像。还要为图像创建空间参照对象。

cb =棋盘(4,2);cb_ref = imref2d(大小(cb));

要演示图像的空间位置,请创建一个平面背景图像。将棋盘覆盖在背景上,以绿色突出显示棋盘的位置。

背景= 0 (150);imshowpair (cb、cb_ref、背景、imref2d(大小(背景)))

图中包含一个轴对象。axis对象包含一个image类型的对象。

创建一个翻译矩阵,并将其存储为affine2d几何变换对象。这个平移将使图像水平移动100像素。

T=[1 0;0 1 0;100 0 1];T形式T=affine2d(T);

创建一个旋转矩阵,并将其存储为affine2d几何变换对象。此平移将围绕原点顺时针旋转图像30度。

R = [sind(30) sind(30) 0;-sind(30) sind(30) 0;0 0 1];tform_r = affine2d (R);

平移后旋转

首先执行平移,然后执行旋转。在变换矩阵的乘法中,平移矩阵T在左边,旋转矩阵呢R在右边。

TR=T*R;tform_tr=仿射2d(tr);[out,out\u ref]=imwarp(cb,cb\u ref,tform\u tr);imshowpair(out,out\u ref,background,imref2d(size(background)))

图中包含一个轴对象。axis对象包含一个image类型的对象。

先旋转后平移

反转转换的顺序:首先执行旋转,然后执行平移。在变换矩阵的乘法中,旋转矩阵R在左边,平移矩阵T在右边。

RT=R*T;t形式_rt=仿射2d(rt);[out,out\u ref]=imwarp(cb,cb\u ref,tform\u rt);imshowpair(out,out\u ref,background,imref2d(size(background)))

图中包含一个轴对象。axis对象包含一个image类型的对象。

注意变换后图像的空间位置与平移后旋转时的空间位置是不同的。

三维仿射变换

下表列出了三维仿射变换以及用于定义它们的变换矩阵。请注意,在三维情况下,有多个矩阵,具体取决于您希望旋转或剪切图像的方式。最后一列必须包含[0 1]。

使用任何三维变换矩阵的组合来创建一个affine3d几何变换对象。使用3-D平移和旋转矩阵的组合创建rigid3d几何变换对象。

三维仿射变换 变换矩阵
翻译

1 0 0 0 0 1 0 0 0 0 1 0 t x t y t z 1

规模

年代 x 0 0 0 0 年代 y 0 0 0 0 年代 z 0 0 0 0 1

剪切

x, y剪切力:

x x + 一个 z y y + b z z z

1 0 0 0 0 1 0 0 一个 b 1 0 0 0 0 1

x, z剪切力:

x x + 一个 y y y z z + c y

1 0 0 0 一个 1 c 0 0 0 1 0 0 0 0 1

y, z剪切力:

x x y y + b x z z + c x

1 b c 0 0 1 0 0 0 0 1 0 0 0 0 1

旋转

关于x轴:

1 0 0 0 0 余弦 一个 一个 0 0 一个 余弦 一个 0 0 0 0 1

关于y轴:

余弦 一个 0 一个 0 0 1 0 0 一个 0 余弦 一个 0 0 0 0 1

关于z轴:

余弦 一个 一个 0 0 年代 n 一个 余弦 一个 0 0 0 0 1 0 0 0 0 1

对于N-D仿射变换,最后一列必须包含[0 (N, 1);1]imwarp不支持超过三个维度万博1manbetx的转换。

另请参阅

||||||

相关的例子

更多关于