主要内容

几何变换的矩阵表示

您可以使用几何变换矩阵来进行图像的全球转变。首先,定义一个变换矩阵,并使用它来创建一个几何变换对象。然后,通过调用应用全局转换为图像imwarp与几何变换对象。对于一个示例,请参见执行简单的2-D转换

2-d仿射变换

与变换矩阵表列出了2-d仿射变换用于定义它们。对于2-d仿射变换,最后一列中必须包含[0 0 1]齐次坐标。

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

2-d仿射变换 实施例(原始和变换图像) 变换矩阵
翻译

T.X指定沿着位移X

T.y指定沿着位移y轴。

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

规模

S.X指定沿X

S.y指定沿y轴。

SH.X指定沿着的剪切因子X

SH.y指定沿着的剪切因子y轴。

回转

问:指定有关原产地旋转角度。

2-d射影变换

射影变换使图像的平面倾斜。平行线可以收敛到消失点,创造出深度的外观。

该变换是一个3×3矩阵。不同于仿射变换,则对变换矩阵的最后一列没有限制。

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

[ 1 0. E. 0. 1 F 0. 0. 1 ]

E.F影响消失点。

E.F大,消失点更接近原点,因此平行线更迅速出现收敛。

注意,当E.F等于0,则变换成为仿射变换。

射影变换经常用于注册是不对齐的图像。如果你有两张图片,你想对齐,先用选择控制点对cpselect.然后,利用投影变换矩阵拟合控制点对fitgeotrans并设置transformationType“投影”.这将自动创建一个projective2d几何变换对象。的变换矩阵被存储为一个属性projective2d对象。然后,可以将该转换应用于使用imwarp

创建组合2-d仿射变换

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

这个例子展示了如何创建一个2-D平移和旋转转换的组合。

创建一个将经历转换的棋盘图像。同时为图像创建一个空间参考对象。

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

为了说明图像的空间位置,创建一个平面背景图像。将棋盘覆盖在背景上,用绿色突出棋盘的位置。

背景=零(150);imshowpair(CB,cb_ref,背景,imref2d(大小(背景)))

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

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

T = [1 00;0 10;100 0 1];tform_t = affine2d (T);

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

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

翻译依次轮换

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

TR = T * R;tform_tr = affine2d (TR);[, out_ref] = imwarp (cb、cb_ref tform_tr);imshowpair (out_ref,背景,imref2d(大小(背景)))

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

旋转之后是平移

反转转化的顺序:进行旋转第一和第二翻译。在变换矩阵的乘法,旋转矩阵R.在左边,那么平移矩阵呢T.在右边。

RT = R * T;tform_rt = affine2d (RT);[, out_ref] = imwarp (cb、cb_ref tform_rt);imshowpair (out_ref,背景,imref2d(大小(背景)))

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

注意变换图像的空间位置如何是当翻译随后旋转比不同。

3-d仿射变换

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

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

3-d仿射变换 变换矩阵
翻译

[ 1 0. 0. 0. 0. 1 0. 0. 0. 0. 1 0. T. X T. y T. Z. 1 ]

规模

[ S. X 0. 0. 0. 0. S. y 0. 0. 0. 0. S. 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. - S. 一世 N 一种 因为 一种 0. 0. 0. 0. 1 0. 0. 0. 0. 1 ]

对于N-d仿射变换,最后一栏必须包含[零(N,1);1]imwarp不支持多于三维的转金宝app换。

也可以看看

||||||

相关的例子

更多关于