scipy.ndimage.

affine_transform#

scipy.ndimage.affine_transform(input, matrix, offset=0.0, output_shape=None, output=None, order=3, mode='constant', cval=0.0, prefilter=True)[源代码]#

应用仿射变换。

给定输出图像像素索引向量 o,像素值由输入图像在位置 np.dot(matrix, o) + offset 处确定。

这是 ‘拉’ (或 ‘向后’)重采样,将输出空间转换为输入以定位数据。仿射变换通常在 ‘推’ (或 ‘向前’)方向上描述,即将输入转换为输出。 如果你有一个 ‘推’ 变换的矩阵,请在此函数中使用它的逆矩阵 (numpy.linalg.inv)。

参数:
inputarray_like

输入数组。

matrixndarray

逆坐标变换矩阵,将输出坐标映射到输入坐标。如果 ndiminput 的维数,则给定的矩阵必须具有以下形状之一

  • (ndim, ndim):每个输出坐标的线性变换矩阵。

  • (ndim,):假设二维变换矩阵是对角的,对角线由给定的值指定。然后使用更有效的算法来利用问题的可分离性。

  • (ndim + 1, ndim + 1):假设使用齐次坐标指定变换 [1]。在这种情况下,传递给 offset 的任何值都将被忽略。

  • (ndim, ndim + 1):如上所述,但是齐次变换矩阵的底行始终是 [0, 0, ..., 1],并且可以省略。

offsetfloat 或 sequence,可选

变换应用于数组的偏移量。 如果是浮点数,则每个轴的 offset 相同。如果是序列,则 offset 应包含每个轴的一个值。

output_shapeint 元组,可选

形状元组。

outputarray 或 dtype,可选

放置输出的数组,或返回数组的 dtype。默认情况下,将创建与输入具有相同 dtype 的数组。

orderint,可选

样条插值的阶数,默认为 3。阶数必须在 0-5 范围内。

mode{‘reflect’, ‘grid-mirror’, ‘constant’, ‘grid-constant’, ‘nearest’, ‘mirror’, ‘grid-wrap’, ‘wrap’}, 可选

mode 参数确定输入数组如何在其边界之外扩展。 默认值为 ‘constant’。每个有效值的行为如下(请参阅边界模式上的其他绘图和详细信息):

‘reflect’ ( d c b a | a b c d | d c b a)

通过反射最后一个像素的边缘来扩展输入。此模式有时也称为半采样对称。

‘grid-mirror’

这是 ‘reflect’ 的同义词。

‘constant’ ( k k k k | a b c d | k k k k)

通过用相同的常数值填充边缘以外的所有值来扩展输入,该常数值由 cval 参数定义。在输入的边缘之外不执行插值。

‘grid-constant’ ( k k k k | a b c d | k k k k)

通过用相同的常数值填充边缘以外的所有值来扩展输入,该常数值由 cval 参数定义。插值也会在输入范围之外的样本中发生。

‘nearest’ ( a a a a | a b c d | d d d d)

通过复制最后一个像素来扩展输入。

‘mirror’ ( d c b | a b c d | c b a)

通过反射最后一个像素的中心来扩展输入。 此模式有时也称为全采样对称。

‘grid-wrap’ ( a b c d | a b c d | a b c d)

通过环绕到相反的边缘来扩展输入。

‘wrap’ ( d b c d | a b c d | b c a b)

通过环绕到相反的边缘来扩展输入,但方式是使最后一个点和初始点完全重叠。 在这种情况下,重叠点将选择哪个样本是不明确的。

cval标量,可选

如果 mode 为 ‘constant’,则填充输入边缘以外的值。 默认值为 0.0。

prefilterbool,可选

确定是否在插值之前使用 spline_filter 对输入数组进行预过滤。默认值为 True,如果 order > 1,则会创建一个过滤值的临时 float64 数组。 如果将其设置为 False,则如果 order > 1,除非输入已预先过滤,即它是调用 spline_filter 在原始输入上的结果,否则输出将略微模糊。

返回:
affine_transformndarray

变换后的输入。

备注

给定的矩阵和偏移量用于通过仿射变换找到输出中每个点在输入中的对应坐标。 输入在这些坐标处的值由所请求阶数的样条插值确定。根据给定的模式填充输入边界之外的点。

在 0.18.0 版本中更改:以前,仿射变换的确切解释取决于矩阵是作为一维数组还是二维数组提供。 如果将一维数组提供给矩阵参数,则输入图像在位置 matrix * (o + offset) 处确定索引为 o 的输出像素值。

对于复数值的 input,此函数独立变换实部和虚部。

在 1.6.0 版本中添加:增加了复数值支持。

参考文献