我正在查看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中的一个自由参数?
答案 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