主要内容

二维和三维几何变换过程概述

要执行2-D或3-D几何转换,首先创建一个存储有关转换信息的几何转换对象。然后,将待变换图像和几何变换对象传递给imwarp函数。可选地提供关于输入图像的空间引用信息imwarp

imwarp使用几何变换将输出图像中的坐标映射到输入图像中相应的坐标(逆映射)。然后,imwarp使用坐标映射在输入图像内插入像素值并计算输出像素值。

创建几何变换对象

不同类型的几何变换对象存储关于变换的不同信息。

有几种方法可以创建几何转换对象。

创建几何变换的方法

transltform2d

transltform3d

rigidtform2d

rigidtform3d

simtform2d

simtform3d

affinetform2d

affinetform3d

projective2d

geometricTransform2d

geometricTransform3d

其他几何转换
指定平移、旋转或缩放参数 X X
指定变换矩阵 X X X X
指定自定义点映射函数 X
从控制点对估计变换 X(二维) X(二维) X(二维) X
利用相似度优化估计变换 X(二维) X(二维) X(二维)
利用相位相关估计变换 X(二维) X(二维)
生成随机仿射变换 X

指定平移、旋转或缩放参数

如果您知道平移量、旋转角度和比例因子,那么您可以通过指定这些参数来创建转换。

下面的示例定义平移和旋转角度,然后创建一个rigidtform2d几何变换对象从指定的参数。

θ= 30;翻译= [10 20.5];tform = rigidtform2d(θ,翻译)
tform = rigidtform2d with properties: dimension: 2 RotationAngle: 30 Translation: [10 20.5000] R: [2×2 double] A: [3×3 double]

指定变换矩阵

对于更复杂的线性几何变换,可以用矩阵表示变换。例如,对射影变换或涉及反射、各向异性缩放、剪切或线性变换组合的仿射变换使用矩阵表示。指定转换矩阵以创建affinetform2daffinetform3d,或projtform2d对象。有关创建转换矩阵的更多信息,请参见几何变换的矩阵表示

的非各向同性缩放和反射的变换矩阵y坐标轴,然后创建affinetform2d几何变换对象从变换矩阵。

scaleX = 0.8;写入scaleY = 1.5;A = [scaleX 0 0;写入scaley 0;0 0 1);tform = affinetform2d (A)
A: [3×3 double]

指定自定义点映射函数

方法创建自定义2-D和3-D几何变换geometricTransform2dgeometricTransform3d对象分别。

下面的示例指定一个反向映射函数,该函数接受并返回包装(xy)的格式。然后,该示例创建一个geometricTransform2d几何变换对象的逆映射函数。

Inversefn = @(c) [c(:,1)+c(:,2),c(:,1).^2]
inversefn = function_handle价值:@ (c) [c (: 1) + c (:, 2), c(: 1) ^ 2]。
tform = geometricTransform2d (inversefn)
InverseFcn: [function_handle] ForwardFcn:[]维数:2

类似地,下面的示例创建一个geometricTransform3d几何变换对象使用逆映射函数。该示例指定了一个反向映射函数,该函数接受并返回包装中的3-D点(xyz)的格式。

inversefn = @ (c) [c (: 1) + c (:, 2), c (: 1) - c (:, 2), c(:, 3) ^ 2]。
inversefn = function_handle价值:@ (c) [c (: 1) + c (:, 2), c (: 1) - c (:, 2), c(:, 3) ^ 2]。
tform = geometricTransform3d (inversefn)
InverseFcn: [function_handle] ForwardFcn:[]维度:3

从控制点对估计变换

控件传递控制点对,从而创建几何转换对象fitgeotform2d函数。的fitgeotform2d函数从这些点自动估计转换,并返回一个几何转换对象。

不同的转换需要不同数量的点。例如,仿射变换需要每个图像中的三个非共线点(一个三角形),而射影变换需要四个点(一个四边形)。

该示例定义了两对控制点,然后使用fitgeotform2d创建一个affinetform2d几何变换对象。

movingPoints = [11 11;21 11;21日21];fixedPoints = [51 51;61 51;61 61];tform = fitgeotform2d (movingPoints定点,“仿射”
A: [3×3 double]

利用相似度优化估计变换

如果您有一个固定的图像和一个移动的图像,它们有轻微的错位,那么您可以使用imregtform函数估计使图像对齐的仿射几何变换。imregtform优化两幅图像的均方或Mattes互信息相似度度量,使用常规步骤梯度下降或1 + 1进化优化器。有关更多信息,请参见为基于强度的图像配准创建一个优化器和度量

利用相位相关估计变换

如果您有一个固定的图像和一个运动的图像,它们严重失调,那么您可以使用imregcorr函数估计一个改进图像对齐的仿射几何变换。您可以使用相似度优化来优化生成的转换。

生成随机仿射变换

方法可以创建带有随机变换参数的仿射几何变换randomAffine2d而且randomAffine3d功能。这些函数支持所有的仿射参数,包括关于每个轴的反射、旋转、剪切和非各向同性比例因子。随机仿射变换是深度学习中常用的一种数据增强技术。

另请参阅

相关的例子

更多关于

Baidu
map