要执行2-D或3-D几何转换,首先创建一个存储有关转换信息的几何转换对象。然后,将待变换的图像和几何变换对象传递给imwarp
函数。您可以选择提供关于输入图像的空间引用信息imwarp
.
不同类型的几何变换对象存储关于变换的不同信息。
的rigid2d
,affine2d
,projective2d
,rigid3d
,affine3d
对象存储一个变换矩阵。
的geometricTransform2d
而且geometricTransform3d
对象存储逆逐点映射函数,也可选存储正向逐点映射函数。
其他转换类型,包括LocalWeightedMeanTransformation2D
,PiecewiseLinearTransformation2D
,PolynomialTransformation2D
对象,存储控制点对之间的映射。
有几种方法可以创建几何变换对象。
创建转换对象的方法 | affine2d |
affine3d |
|
projective2d |
|
其他转换对象 |
---|---|---|---|---|---|---|
定义变换矩阵 | X | X | X | X | ||
定义自定义逐点映射函数 | X | |||||
控制点对的估计变换 | X | X | X | |||
利用相似度优化估计变换 | X | X | ||||
使用相位相关估计变换 | X |
如果你知道要进行的几何变换的变换矩阵,那么你就可以创建一个rigid2d
,affine2d
,projective2d
,rigid3d
,或affine3d
几何变换对象直接。有关创建转换矩阵的更多信息,请参见几何变换的矩阵表示法.
下面的例子定义了二维转换的变换矩阵,并创建了一个affine2d
几何变换对象。
Xform = [1 0 0 0 1 0 40 40 1];Tform_translate = affine2d(xform)
tform_translate = affine2d与属性:T: [3x3 double]维度:2
方法定义自定义的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)
InverseFcn: [function_handle] ForwardFcn:[]维数:2
类似地,下面的示例创建一个geometricTransform3d
使用逆映射函数自定义几何变换对象。该示例指定了一个逆映射函数,该函数接受并返回打包(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)
InverseFcn: [function_handle] ForwardFcn:[]维数:3
控件的两组控制点对可以创建几何转换对象fitgeotrans
函数。的fitgeotrans
函数自动从这些点估计转换,并返回一个几何转换对象。
不同的转换需要不同数量的点。例如,仿射变换需要在每个图像中有三个非共线点(三角形),射影变换需要四个点(四边形)。
本例将两组控制点传递给fitgeotrans
,该函数返回affine2d
几何变换对象。
movingPoints = [11 11;21 11;21日21];fixedPoints = [51 51;61 51;61 61];tform_cpp = fitgeotrans(移动点,fixedPoints,仿射的)
tform_cpp = affine2d with properties: T: [3x3 double]维度:2
如果您有一个固定图像和一个稍微不对齐的移动图像,那么您可以使用imregtform
函数来估计使图像对齐的仿射几何变换。imregtform
使用常规阶梯梯度下降或1 + 1进化优化器优化两幅图像的均方或Mattes互信息相似度度量。有关更多信息,请参见为基于强度的图像配准创建一个优化器和度量.
如果固定图像和移动图像严重不对齐,则可以使用imregcorr
函数估计仿射几何变换,改善图像对齐。您可以使用相似度优化来优化结果转换。
在几何变换对象中定义变换后,使用imwarp
函数。在调用函数时,指定要转换的图像和几何转换对象。
imwarp
使用几何变换将输出图像中的坐标映射到输入图像中的对应坐标(逆映射)。然后,imwarp
使用坐标映射在输入图像内插值像素值并计算输出像素值。
imwarp
|fitgeotrans
|affine2d
|affine3d
|rigid2d
|rigid3d
|projective2d
|geometricTransform2d
|geometricTransform3d