您可以使用几何变换矩阵来进行图像的全球转变。首先,定义一个变换矩阵,并使用它来创建一个几何变换对象。然后,通过调用应用全局转换为图像imwarp
与几何变换对象。对于一个示例,请参见执行简单的2-D转换.
与变换矩阵表列出了2-d仿射变换用于定义它们。对于2-d仿射变换,最后一列中必须包含[0 0 1]齐次坐标。
使用2-d变换矩阵的任何组合来创建affine2d
几何变换对象。2-d平移和旋转矩阵使用组合创建rigid2d
几何变换对象。
2-d仿射变换 | 实施例(原始和变换图像) | 变换矩阵 | |
---|---|---|---|
翻译 |
有关像素坐标的更多信息,请参阅图像坐标系统. |
||
规模 |
|
||
剪 |
|
||
回转 |
|
射影变换使图像的平面倾斜。平行线可以收敛到消失点,创造出深度的外观。
该变换是一个3×3矩阵。不同于仿射变换,则对变换矩阵的最后一列没有限制。
二维射影变换 | 例子 | 变换矩阵 | |
---|---|---|---|
倾斜 |
|
当 注意,当 |
射影变换经常用于注册是不对齐的图像。如果你有两张图片,你想对齐,先用选择控制点对cpselect
.然后,利用投影变换矩阵拟合控制点对fitgeotrans
并设置transformationType
到“投影”
.这将自动创建一个projective2d
几何变换对象。的变换矩阵被存储为一个属性projective2d
对象。然后,可以将该转换应用于使用imwarp
.
您可以使用矩阵乘法将多个变换组合成一个矩阵。矩阵乘法的顺序很重要。
这个例子展示了如何创建一个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(大小(背景)))
注意变换图像的空间位置如何是当翻译随后旋转比不同。
下表列出了三维仿射变换以及用于定义它们的变换矩阵。请注意,在3d情况下,有多个矩阵,这取决于您想要旋转或剪切图像的方式。最后一列必须包含[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换。
imwarp
|fitgeotrans
|affine2d
|affine3d
|rigid2d
|rigid3d
|projective2d