医学图像数据增强-重采样itk

 resample_augmentations.py

def resample_image_itk(
    ori_img, 
    new_spacing=[1.0,1.0,1.0],
    new_size=[0,0,0], 
    resamplemethod=sitk.sitkNearestNeighbor):
    """
    @Args:
        :param ori_img: 原始需要对齐的itk图像
        :param new_spacing: 111
        :param new_size: 默认000, 注意非零则自动裁剪
        :param resamplemethod:
                sitk.sitkLinear-线性 - image
                sitk.sitkNearestNeighbor-最近邻 -mask
    @Return: 
        重采样好的itk图像
    """
    ori_size = ori_img.GetSize()            # 原始图像大小  [x,y,z]
    ori_spacing = ori_img.GetSpacing()      # 原始的体素块尺寸    [x,y,z]
    ori_origin = ori_img.GetOrigin()        # 原始的起点 [x,y,z]
    ori_direction = ori_img.GetDirection()  # 原始的方向 [冠,矢,横]=[z,y,x]

    # 计算改变spacing后的size,用物理尺寸/体素的大小
    if new_size==[0,0,0]:
        new_size[0] = int(ori_size[0]*ori_spacing[0]/new_spacing[0] + 0.5)
        new_size[1] = int(ori_size[1]*ori_spacing[1]/new_spacing[1] + 0.5)
        new_size[2] = int(ori_size[2]*ori_spacing[2]/new_spacing[2] + 0.5)

    # itk的方法进行resample
    resampler = sitk.ResampleImageFilter()
    resampler.SetReferenceImage(ori_img)  # 需要重新采样的目标图像
    # 设置目标图像的信息
    resampler.SetSize(new_size)		      # 目标图像大小
    resampler.SetOutputOrigin(ori_origin)
    resampler.SetOutputDirection(ori_direction)
    resampler.SetOutputSpacing(new_spacing)

    # 根据需要重采样图像的情况设置不同的dype
    if resamplemethod == sitk.sitkNearestNeighbor:
        resampler.SetOutputPixelType(sitk.sitkUInt16)   # 近邻插值用于mask的,保存uint16
    else:
        resampler.SetOutputPixelType(sitk.sitkFloat32)  # 线性插值用于PET/CT/MRI之类的,保存float32
    resampler.SetTransform(sitk.Transform(3, sitk.sitkIdentity))
    resampler.SetInterpolator(resamplemethod)
    return resampler.Execute(ori_img)  # 得到重新采样后的图像

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智能之心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值