主要内容

几何变换的矩阵表示

您可以使用几何变换矩阵来执行图像的全局转换。首先,定义变换矩阵并使用它来创建几何变换对象。然后,通过调用将全局转换应用于图像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矩阵。与仿射变换不同,在变换矩阵的最后一列没有限制。

2-D投影转型 例子 转型矩阵
倾斜

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

E.F影响消失点。

什么时候E.F很大,消失点越靠近原点,因此平行线似乎更快地收敛。

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

投影转换经常用于注册失调的图像。如果您有两个要对齐的图像,请先选择控制点对使用cpselect.。然后,适用于使用投影转换矩阵来控制点对FitegeOtrans.并设置转型型'投影'。这会自动创建一个projective2d.几何变换对象。将转换矩阵存储为属性projective2d.目的。然后可以将转换应用于其他图像imwarp.

创建复合2-D仿射变换

您可以使用矩阵乘法将多个转换组合成单个矩阵。矩阵乘法事项的顺序。

此示例显示了如何创建2-D翻译和旋转变换的复合。

创建将经过转换的棋盘图像。还为图像创建一个空间引用对象。

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

为了说明图像的空间位置,创建平坦的背景图像。覆盖棋盘在背景上,突出显示棋盘的位置绿色。

背景=零(150);Imshowpair(CB,CB_REF,背景,IMREF2D(大小(背景)))

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

创建翻译矩阵,并将其存储为Affine2d.几何变换对象。此转换将通过100像素水平移动图像。

t = [1 0 0; 0 1 0; 100 0 1];tform_t = actifine2d(t);

创建旋转矩阵,并将其存储为Affine2d.几何变换对象。此平移将在原点上顺时针旋转图像30度。

R = [COSD(30)SIND(30)0;  -   -   -   -   -   -   -  0 0 1]; 0 0 1];tform_r = actifine2d(r);

翻译随后旋转

首先执行翻译和旋转秒。在转换矩阵的乘法中,翻译矩阵T.位于左侧,旋转矩阵R.在右边。

tr = t * r;tform_tr = Affine2D(TR);[OUT,OUT_REF] = IMWARP(CB,CB_REF,TFORM_TR);imshowpair(Out,Out_ref,Background,IMREF2D(大小(背景)))

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

旋转后跟翻译

反转转换的顺序:首先执行旋转和翻译秒。在变换矩阵的乘法中,旋转矩阵R.在左边,以及翻译矩阵T.在右边。

RT = R * T;tform_rt = Affine2d(RT);[OUT,OUT_REF] = IMWARP(CB,CB_REF,TFORM_RT);imshowpair(Out,Out_ref,Background,IMREF2D(大小(背景)))

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

请注意,转换图像的空间位置如何与转换后方的旋转相比不同。

3-D仿射变换

下表列出了使用用于定义它们的转换矩阵的3-D仿射转换。请注意,在3-D情况下,有多个矩阵,具体取决于您想要旋转或剪切图像的方式。最后一列必须包含[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. COS. 一种 一种 0. 0. - 一种 COS. 一种 0. 0. 0. 0. 1 ]

关于y轴:

[ COS. 一种 0. - 一种 0. 0. 1 0. 0. 一种 0. COS. 一种 0. 0. 0. 0. 1 ]

关于Z.轴:

[ COS. 一种 一种 0. 0. - S. 一世 N 一种 COS. 一种 0. 0. 0. 0. 1 0. 0. 0. 0. 1 ]

对于N-D仿射变换,最后一列必须包含[零(n,1);1]imwarp.不支持超过三维的变金宝app换。

也可以看看

||||||

相关例子

更多关于