2017-09-05 22 views
0

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

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

scipy.ndimage.rotatemanual),使用样条内插来执行矩阵旋转和默认使用的3花键顺序,这可能导致输出值成为比输入数据大。

您可以将使用的样条插值的阶数减少到1,这会将行为更改为线性插值。要做到这一点,修改旋转行,如下所示:

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

有关样条插值的更多信息,请参阅本introductory paper

+0

你能解决它吗?或建议其他解决方案 – user8264

+0

答复已更新。 – PKo

+0

谢谢。它运作良好。我发现另一种方式是'prefilter = False'('order = 3')。你认为这是正确的吗 – user8264