SimpleITK resample 到固定尺寸

1. 需求
比如想把[48, 48, 32]的数据采样成[64, 64, 64]. Spacing可以会改变

2. 实现代码

def resample_ct(original_CT, save_path, label_flag=False):  # target_size for sitk xyz):
    # original_CT = sitk.ReadImage(patient_CT, sitk.sitkInt32)
    dimension = original_CT.GetDimension()
    reference_physical_size = np.zeros(original_CT.GetDimension())
    reference_physical_size[:] = [(sz - 1) * spc if sz * spc > mx else mx for sz, spc, mx in
                                  zip(original_CT.GetSize(), original_CT.GetSpacing(), reference_physical_size)]

    reference_origin = original_CT.GetOrigin()
    reference_direction = original_CT.GetDirection()

    reference_size = target_size
    reference_spacing = [phys_sz / (sz - 1) for sz, phys_sz in zip(reference_size, reference_physical_size)]

    reference_image = sitk.Image(reference_size, original_CT.GetPixelIDValue())
    reference_image.SetOrigin(reference_origin)
    reference_image.SetSpacing(reference_spacing)
    reference_image.SetDirection(reference_direction)

    centering_transform = sitk.TranslationTransform(dimension)
   

    if label_flag:
        regis = sitk.Resample(original_CT, reference_image, centering_transform, sitk.sitkNearestNeighbor, 0.0)
    else:
        regis = sitk.Resample(original_CT, reference_image, centering_transform, sitk.sitkLinear, 0.0)

    sitk.WriteImage(regis, save_path)
    return regis

3. 困惑
核心代码就这一行,具体细节还不清楚,centering_transform在这里面起什么作用(希望后面能补充)
regis = sitk.Resample(original_CT, reference_image, centering_transform, sitk.sitkNearestNeighbor, 0.0)

4. 参考
Image Registration Method 3 — SimpleITK 2.0rc2 documentation

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值