在scipy.ndimage中应用旋转后获得不同的范围

时间:2017-09-05 07:06:00

标签: python python-2.7 scipy

我有一个范围为[0,3]的随机矩阵A。我将对矩阵应用角度为10的旋转。但是,我在旋转矩阵中得到了不同的范围。我的代码有什么问题?谢谢

from scipy.ndimage import rotate
import numpy as np
A = np.random.randint(0, 4, size=(64,128,128))
print (A.max(), A.shape)
B=rotate(A, angle=10, reshape=False, axes=(0,1))
print (B.max(), B.shape)

输出

(3, (128, 128, 128))
(4, (128, 128, 128))

1 个答案:

答案 0 :(得分:1)

scipy.ndimage.rotatemanual)使用样条插值执行矩阵旋转,默认情况下使用样条线顺序3,这可能导致输出值变得大于输入数据。

您可以将使用的样条插值的顺序减少为1,从而将行为更改为线性插值。为此,请按如下所示修改旋转线:

B=rotate(A, angle=10, order=1, reshape=False, axes=(0,1))

有关样条插值的详细信息,请参阅此introductory paper