我正在尝试在没有插入(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 =(120,120,120))。请注意,如果我们删除行代码中的选项,堆栈将具有不同的大小。旋转度为10°
Original stack: slice 39 Rotated stack: slice 39
使用插值方法: ske_rotate = scipy.ndimage.rotate(stack,angle)
3D骨架如下图所示(好像添加了新形状..): 3D skeleton after a rotation with interpolation
如何获得自由扭曲的旋转3D堆栈?