我有一个范围为[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))
答案 0 :(得分:1)
scipy.ndimage.rotate
(manual)使用样条插值执行矩阵旋转,默认情况下使用样条线顺序3,这可能导致输出值变得大于输入数据。
您可以将使用的样条插值的顺序减少为1,从而将行为更改为线性插值。为此,请按如下所示修改旋转线:
B=rotate(A, angle=10, order=1, reshape=False, axes=(0,1))
有关样条插值的详细信息,请参阅此introductory paper。