您可以使用几何变换矩阵来执行图像的全局转换。首先,定义变换矩阵并使用它来创建几何变换对象。然后,通过调用将全局转换应用于图像imwarp.
使用几何变换对象。例如,看到执行简单的2-D翻译变换。
表列出了使用用于定义它们的变换矩阵的2-D仿射变换。对于2-D仿射变换,最后一列必须包含[0 0 1]均匀坐标。
使用2-D转换矩阵的任意组合来创建一个Affine2d.
几何变换对象。使用2-D翻译和旋转矩阵的组合来创建一个rigid2d.
几何变换对象。
2-D仿射变换 | 示例(原始和转换图像) | 转型矩阵 | |
---|---|---|---|
翻译 |
有关像素坐标的更多信息,请参阅图像坐标系。 |
||
规模 |
|
||
剪 |
|
||
回转 |
|
投影转换使图像的平面能够倾斜。平行线可以达到消失点,从而产生深度的外观。
转换是3×3矩阵。与仿射变换不同,在变换矩阵的最后一列没有限制。
2-D投影转型 | 例子 | 转型矩阵 | |
---|---|---|---|
倾斜 |
|
什么时候 注意,当 |
投影转换经常用于注册失调的图像。如果您有两个要对齐的图像,请先选择控制点对使用cpselect.
。然后,适用于使用投影转换矩阵来控制点对FitegeOtrans.
并设置转型型
至'投影'
。这会自动创建一个projective2d.
几何变换对象。将转换矩阵存储为属性projective2d.
目的。然后可以将转换应用于其他图像imwarp.
。
您可以使用矩阵乘法将多个转换组合成单个矩阵。矩阵乘法事项的顺序。
此示例显示了如何创建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情况下,有多个矩阵,具体取决于您想要旋转或剪切图像的方式。最后一列必须包含[0 0 0 1]。
使用3-D转换矩阵的任意组合来创建一个Affine3d.
几何变换对象。使用3-D翻译和旋转矩阵的组合来创建一个rigid3d.
几何变换对象。
3-D仿射变换 | 转型矩阵 | ||
---|---|---|---|
翻译 |
|
||
规模 |
|
||
剪 | X,Y.剪切:
|
X,Z.剪切:
|
y,z.剪切:
|
回转 | 关于X轴:
|
关于y轴:
|
关于Z.轴:
|
对于N-D仿射变换,最后一列必须包含[零(n,1);1]
。imwarp.
不支持超过三维的变金宝app换。
Affine2d.
|Affine3d.
|FitegeOtrans.
|imwarp.
|projective2d.
|rigid2d.
|rigid3d.