在2D仿射变换中剪切

时间:2015-11-03 12:34:33

标签: geometry computer-vision affinetransform scikit-image

我正在查看python skimage工具包中有关在2D中表示仿射变换的一些代码,并且有一个AffineTransform类,其定义为:

Parameters
----------
matrix : (3, 3) array, optional
    Homogeneous transformation matrix.
scale : (sx, sy) as array, list or tuple, optional
    Scale factors.
rotation : float, optional
    Rotation angle in counter-clockwise direction as radians.
shear : float, optional
    Shear angle in counter-clockwise direction as radians.
translation : (tx, ty) as array, list or tuple, optional
    Translation parameters.

我注意到剪切仅采用一个参数(逆时针方向的剪切角度)。但是,为什么这不应该是两个参数?我可以在x和y方向上剪切。为什么这两个操作如何映射到2D中的一个自由参数?

1 个答案:

答案 0 :(得分:1)

目前在我们的代码中,对于转换矩阵:

            [sx * math.cos(rotation), -sy * math.sin(rotation + shear), 0],
            [sx * math.sin(rotation),  sy * math.cos(rotation + shear), 0],
            [                      0,                                0, 1]

我想知道这是否确实是指定剪切的最直观方式。我打开了一个问题:https://github.com/scikit-image/scikit-image/issues/1779