在python中裁剪一个体积(2D切片堆栈)

时间:2018-07-11 03:13:49

标签: python image-processing vtk itk

我有一组3D数据(MRI量).nii图像,例如,形状为98×240×342(98:切片,240:W和342:H)。卷的大小互不相同。我想对所有卷进行中心裁剪,如果宽度或高度小于256,则用零填充该尺寸。我知道可以通过分别应用在每个切片上来完成此操作,但是,我在问是否有一种医学图像分析工具可以裁剪某个体积中的宽度和高度?

谢谢

2 个答案:

答案 0 :(得分:2)

ITK,一个n维库可以满足您的需求。它具有padcrop过滤器。如果不清楚如何使用它,可以看看documentation

答案 1 :(得分:0)

我找到了center cropping in SO的简单方法,该方法适用于N维数组。 @Loss Don响应,这是中心裁剪的明智方法。填充部分,我添加了自己。

def cropND(img, bounding):
    start = tuple(map(lambda a, da: a//2-da//2, img.shape, bounding))
    end = tuple(map(operator.add, start, bounding))
    slices = tuple(map(slice, start, end))
    return img[slices]