Main Content

fitgeotform2d

根据控制点对组进行二维几何变换拟合

自 R2022b 起

    说明

    示例

    tform = fitgeotform2d(movingPoints,fixedPoints,tformType) 根据控制点对组 movingPointsfixedPoints 进行 tformType 类型的线性几何变换拟合。

    tform = fitgeotform2d(movingPoints,fixedPoints,"polynomial",degree) 根据控制点对组 movingPointsfixedPoints 进行 degree 次多项式变换拟合。指定多项式变换的次数 degree,可以是 2、3 或 4。

    tform = fitgeotform2d(movingPoints,fixedPoints,"pwl") 根据控制点对组 movingPointsfixedPoints 进行分段线性变换拟合。这种变换会创建固定控制点的 德劳内三角剖分,并将运动控制点映射到对应的固定控制点。不同仿射变换映射每个局部区域中的控制点。映射在控制点上是连续的,但不是连续可微分的。

    tform = fitgeotform2d(movingPoints,fixedPoints,"lwm",n) 根据控制点对组 movingPointsfixedPoints 进行局部加权均值变换拟合。局部加权均值变换通过使用相邻控制点在每个控制点上推断多项式来创建映射。在任何位置上的映射都取决于这些多项式的加权平均值。该函数使用 n 个最近点来推断每个控制点对组的二次多项式变换。

    示例

    全部折叠

    创建棋盘图像,并将其旋转以创建未对齐的图像。

    I = checkerboard(40);
    J = imrotate(I,30);
    imshowpair(I,J,"montage")

    在固定图像(棋盘)和运动图像(旋转后的棋盘)上定义一些匹配的控制点。您可以使用“控制点选择”工具以交互方式定义点。

    fixedPoints = [41 41; 281 161];
    movingPoints = [56 175; 324 160];

    创建一个可用于对齐两个图像的相似性几何变换。

    tform = fitgeotform2d(movingPoints,fixedPoints,"similarity");

    使用 tform 估计值对旋转后的图像重采样,将其与固定图像配准。假彩色叠加图像中的着色区域(绿色和品红色)表示配准错误。错误的原因是控制点之间缺乏精确的对应关系。

    Jregistered = imwarp(J,tform,OutputView=imref2d(size(I)));
    imshowpair(I,Jregistered)

    输入参数

    全部折叠

    运动图像中的控制点,指定为 m×2 矩阵。每行指定一个控制点的 (x, y) 坐标。

    示例: movingPoints = [11 11; 41 71];

    数据类型: double | single

    固定图像中的控制点,指定为 m×2 矩阵。每行指定一个控制点的 (x, y) 坐标。

    示例: fixedPoints = [14 44; 70 81];

    数据类型: double | single

    线性变换的类型,指定为 "similarity""reflectivesimilarity""affine""projective"。有关详细信息,请参阅变换类型

    数据类型: char | string

    多项式的次数,指定为整数 234

    用于局部加权均值计算的点数,指定为正整数。n 的最小值为 6,但 n 值较小时容易生成病态多项式。

    输出参量

    全部折叠

    几何变换,以下表中定义的几何变换对象形式返回。

    变换类型

    几何变换对象
    "similarity"simtform2d
    "reflectivesimilarity"affinetform2d
    "affine"affinetform2d
    "projective"projtform2d
    "polynomial"PolynomialTransformation2D
    "pwl"PiecewiseLinearTransformation2D
    "lwm"LocalWeightedMeanTransformation2D

    详细信息

    全部折叠

    变换类型

    下表按复杂度顺序列出 fitgeotform2d 支持的变换类型。

    变换类型

    描述控制点对组的最小数量示例
    "similarity"当运动图像中的形状保持不变,但图像因某种程度的平移、旋转和各向同性缩放而失真时,请使用此变换。直线保持笔直,平行线仍保持平行。2

    Image transformed using "similarity".

    "reflectivesimilarity""similarity" 相同,只是增加了翻转(可选)。3

    Image transformed using "reflectivesimilarity".

    "affine"当运动图像中的形状呈现剪切或各向异性缩放时,请使用此变换。直线保持笔直,平行线仍保持平行,但矩形变为平行四边形。3

    Image transformed using "affine".

    "projective"当场景出现倾斜时,请使用此变换。直线保持笔直,但平行线向消失点收敛。4

    Image transformed using "projective".

    "polynomial"当图像中的对象弯曲时,请使用此变换。多项式的阶数越高,拟合越好,但结果可能比固定图像包含更多曲线。

    6(2 阶)

    10(3 阶)

    15(4 阶)

    Image transformed using "polynomial".

    "pwl"当图像的各个部分失真程度不同时,请使用此变换(分段线性)。4

    Image transformed using "pwl".

    "lwm"当失真在局部有所变化、用分段线性不足以表示时,请使用此变换(局部加权均值)。 6(推荐 12)

    Image transformed using "lwm".

    参考

    [1] Goshtasby, Ardeshir. “Piecewise Linear Mapping Functions for Image Registration.” Pattern Recognition 19, no. 6 (January 1986): 459–66. https://doi.org/10.1016/0031-3203(86)90044-0.

    [2] Goshtasby, Ardeshir. “Image Registration by Local Approximation Methods.” Image and Vision Computing 6, no. 4 (November 1988): 255–61. https://doi.org/10.1016/0262-8856(88)90016-9.

    扩展功能

    版本历史记录

    在 R2022b 中推出

    全部展开