2 d和3 d几何转换过程概述
执行一个2 d或3 d几何变换,首先创建一个几何转换对象存储的信息转换。然后,通过图像进行几何变换和转换对象的imwarp
函数。你还可以提供空间引用输入图像的信息imwarp
。
imwarp
采用几何变换输出图像的坐标映射到相应的输入图像坐标(逆映射)。然后,imwarp
使用坐标映射到插入输入图像中的像素值和计算输出像素值。
创建几何变换对象
不同类型的几何转换对象存储不同的信息转换。
一些对象存储一个变换矩阵,表示一个特定类型的线性几何变换。这些对象包括:
affinetform2d
,affinetform3d
,rigidtform2d
,rigidtform3d
,simtform2d
,simtform3d
,transltform2d
,transltform3d
,projtform2d
。的
geometricTransform2d
和geometricTransform3d
对象存储一个逆逐点映射函数,和一个可选的逐点映射函数。的
PolynomialTransformation2D
对象存储一个逆映射二维多项式的形式。的
LocalWeightedMeanTransformation2D
和PiecewiseLinearTransformation2D
对象代表不同形式的locally-varying逐点映射功能。
有几种方法可以创建一个几何变换对象。
创建几何转换的方法 |
|
|
|
projective2d |
|
其他几何转换 |
---|---|---|---|---|---|---|
指定平移、旋转、尺度参数 | X | X | ||||
指定变换矩阵 | X | X | X | X | ||
指定自定义逐点映射函数 | X | |||||
从控制点估计变换对 | X(二维) | X(二维) | X(二维) | X | ||
估计转换使用相似的优化 | X(二维) | X(二维) | X(二维) | |||
估计转换使用相关联 | X(二维) | X(二维) | ||||
生成随机仿射变换 | X |
指定平移、旋转、尺度参数
如果你知道的翻译、旋转角度,和比例因子,然后您可以创建一个转换通过指定这些参数。
指定要创建的翻译
transltform2d
和transltform3d
对象代表翻译转换。指定平移、旋转角度、创建或两者
rigidtform2d
和rigidtform3d
对象代表刚性转换。指定的任意组合平移、旋转、各向同性的比例因子
simtform2d
和simtform3d
代表无反射的对象相似变换。
下面的例子定义了一个平移和旋转角度,然后创建一个rigidtform2d
几何变换对象从指定的参数。
θ= 30;翻译= 20.5 [10];tform = rigidtform2d(θ,翻译)
tform = rigidtform2d属性维数:2 RotationAngle: 30翻译:20.5000 [10]R:[2×2双]A:(3×3双)
指定变换矩阵
对于更复杂的线性几何变换,可以转换表示为一个矩阵。例如,使用一个矩阵表示为射影变换或仿射转换涉及反射各向异性缩放、剪切或成分的线性变换。指定要创建一个变换矩阵affinetform2d
,affinetform3d
,或projtform2d
对象。关于创建一个变换矩阵的更多信息,请参阅几何变换的矩阵表示。
下面的例子定义了各向异性的变换矩阵扩展和反射y轴,然后创建一个affinetform2d
几何变换对象的变换矩阵。
scaleX = 0.8;写入scaleY = 1.5;一个= [scaleX 0 0;写入scaley 0;0 0 1);tform = affinetform2d (A)
tform = affinetform2d属性维数:2:(3×3双)
指定自定义逐点映射函数
如果你有一个逆逐点映射函数,那么您可以创建一个定制的2 d和3 d几何转换使用geometricTransform2d
和geometricTransform3d
对象分别。
下面的示例指定一个逆映射函数,接受并返回二维点包装(x,y)的格式。然后,创建一个示例geometricTransform2d
几何变换对象的逆映射函数。
inversefn = @ (c) [c (: 1) + c (:, 2), c (: 1) ^ 2]。
inversefn = function_handle价值:@ (c) [c (: 1) + c (:, 2), c (: 1) ^ 2]。
tform = geometricTransform2d (inversefn)
tform = geometricTransform2d属性:InverseFcn: [function_handle] ForwardFcn:[]维度:2
同样,下面的例子创建了一个geometricTransform3d
几何变换对象使用逆映射函数。示例指定一个逆映射函数,接受并返回3 d分包装(x,y,z)的格式。
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)
tform = geometricTransform3d属性:InverseFcn: [function_handle] ForwardFcn:[]维度:3
从控制点估计变换对
您可以创建一个几何转换对象通过对控制点fitgeotform2d
函数。的fitgeotform2d
自动从这些点估计转换函数,并返回一个对象几何变换。
不同的转换需要不同数量的点。例如,仿射变换non-collinear三点要求每个图像(三角形)和投影转换需要4分(四边形)。
这个例子定义了两个对控制点,然后使用fitgeotform2d
创建一个affinetform2d
几何变换对象。
movingPoints = [11 11; 21 11;21日21];定点= [51 51;61 51;61 61];tform = fitgeotform2d (movingPoints定点,“仿射”)
tform = affinetform2d属性维数:2:(3×3双)
估计转换使用相似的优化
如果你有一个固定的形象和一个移动的形象略有偏差,然后您可以使用imregtform
函数来估计一个仿射几何变换将图像。imregtform
优化意味着广场或锍两幅图像的互信息的相似性度量,使用常规步骤梯度下降或一加一进化的优化器。有关更多信息,请参见创建一个为灰度图像配准的优化和度量。
估计转换使用相关联
如果你有一个固定的形象和一个移动的图像严重失调,那么你可以使用imregcorr
函数来估计一个仿射几何变换,提高了图像对齐。你可以通过使用相似优化完善产生的转换。
生成随机仿射变换
您可以创建一个使用仿射几何变换与随机变换参数randomAffine2d
和randomAffine3d
功能。这些功能支持所有仿射参数包括反射金宝app对每个轴,旋转、剪切、和各向异性规模因素。随机仿射变换通常用作数据增强技术深度学习。