Python 使用scipy旋转而不进行插值

Python 使用scipy旋转而不进行插值,python,scipy,Python,Scipy,我尝试在(x,y)平面(围绕z轴)上旋转而不插值我的3D堆栈(3D numpy阵列)。为此,我使用软件包Scipy中的rotate函数,如下所示: ske_rotate = scipy.ndimage.rotate(stack, angle, (1, 0), False, None, 0, 'constant', 0.0, False) 问题是,我获得了一个扭曲的旋转3D堆栈,如我的两幅图所示 之前: 之后: 以下是旋转前后3D堆栈的构建3D骨骼。可以指出骨架是不同的(旋转后在骨架上添加点

我尝试在(x,y)平面(围绕z轴)上旋转而不插值我的3D堆栈(3D numpy阵列)。为此,我使用软件包Scipy中的rotate函数,如下所示:

ske_rotate = scipy.ndimage.rotate(stack, angle, (1, 0), False, None, 0, 'constant', 0.0, False)
问题是,我获得了一个扭曲的旋转3D堆栈,如我的两幅图所示

之前:

之后:

以下是旋转前后3D堆栈的构建3D骨骼。可以指出骨架是不同的(旋转后在骨架上添加点),这意味着(以定量方式)旋转后形状被修改

对于2D分析,我从两个堆栈中提取39个切片。这两个堆栈具有相同的大小(stack.shape=(120120))。请注意,如果我们删除行代码中的选项,堆栈将具有不同的大小。旋转角度为10°

使用插值方法: ske_rotate=scipy.ndimage.rotate(堆栈、角度)

三维骨架如下图所示(好像添加了新形状..):


如何获得自由扭曲的旋转3D堆栈?

屏幕截图并不真实,因为它们也受到照明的影响。请使用matplotlib(或任何其他打印库)在二维中打印以简化问题,并以定量方式指定旋转图像如何不符合您的期望。我通过添加初始三维堆栈和旋转堆栈中的三维构造骨架进行编辑。他们是不同的。这表明堆栈在旋转后被修改。我尝试使用:plt.matplotlib(我的_堆栈)在2D中绘图。但它没有策划任何事情。可以使用matplotlib从三维堆栈绘制二维图形?什么是
stack.shape
?使用matplotlib,您可以绘制堆栈的切片:
plt.imshow(堆栈[0])
。就3D观察而言,由于渲染涉及插值,此时无法判断差异是由旋转还是渲染造成的。我通过添加两个堆栈中相同切片的绘图进行编辑。屏幕截图并不是真正的说话,因为它们也受到照明的影响。请使用matplotlib(或任何其他打印库)在二维中打印以简化问题,并以定量方式指定旋转图像如何不符合您的期望。我通过添加初始三维堆栈和旋转堆栈中的三维构造骨架进行编辑。他们是不同的。这表明堆栈在旋转后被修改。我尝试使用:plt.matplotlib(我的_堆栈)在2D中绘图。但它没有策划任何事情。可以使用matplotlib从三维堆栈绘制二维图形?什么是
stack.shape
?使用matplotlib,您可以绘制堆栈的切片:
plt.imshow(堆栈[0])
。就3D观察而言,由于渲染涉及插值,此时无法判断差异是由于旋转还是渲染造成的。我通过添加两个堆栈中相同切片的绘图进行编辑