nii 增强(翻转&旋转) with nibabel

nii_flip&rotate

import os
import nibabel as nib
import numpy as np
import math

src_us_folder = "E:\My_job\CAT_08_nii"
# src_seg_folder = 'G:/src/seg'

aug_us_folder = "E:\My_job\CAT_08_nii_aug"
# aug_seg_folder = 'G:/aug/seg'

img_n = 8
rotate_theta = np.array([0, math.pi / 2])

# augmentation
aug_cnt = 0
for k in range(img_n):
    src_us_file = os.path.join(src_us_folder, ("image0" + str(k) + ".nii.gz"))
    #   src_seg_file = os.path.join(src_seg_folder, (str(k) + '_seg.nii'))
    # load .nii files
    src_us_vol = nib.load(src_us_file)
    #   src_seg_vol = nib.load(src_seg_file)
    # volume data
    us_vol_data = src_us_vol.get_data()
    us_vol_data = (np.array(us_vol_data)).astype("uint16")  # 此处应根据灰度值设置类型大小
    #   seg_vol_data = src_seg_vol.get_data()
    #   seg_vol_data = (np.array(seg_vol_data)).astype('uint8')
    # get refer affine matrix
    ref_affine = src_us_vol.affine

    ############### flip volume ###############
    flip_us_vol = np.fliplr(us_vol_data)
    #   flip_seg_vol = np.fliplr(seg_vol_data)
    # construct new volumes
    new_us_vol = nib.Nifti1Image(flip_us_vol, ref_affine)
    #   new_seg_vol = nib.Nifti1Image(flip_seg_vol, ref_affine)
    # save
    aug_us_file = os.path.join(aug_us_folder, ("image0" + str(aug_cnt) + ".nii"))
    #   aug_seg_file = os.path.join(aug_seg_folder, (str(aug_cnt) + '_seg.nii'))
    nib.save(new_us_vol, aug_us_file)
    #   nib.save(new_seg_vol, aug_seg_file)

    aug_cnt = aug_cnt + 1

    ############### rotate volume ###############
    for t in range(len(rotate_theta)):
        print("rotating %d theta of %d volume..." % (t, k))
        cos_gamma = np.cos(t)
        sin_gamma = np.sin(t)
        rot_affine = np.array(
            [[1, 0, 0, 0], [0, cos_gamma, -sin_gamma, 0], [0, sin_gamma, cos_gamma, 0], [0, 0, 0, 1]]
        )
        new_affine = rot_affine.dot(ref_affine)
        # construct new volumes
        new_us_vol = nib.Nifti1Image(us_vol_data, new_affine)
        # new_seg_vol = nib.Nifti1Image(seg_vol_data, new_affine)
        # save
        aug_us_file = os.path.join(aug_us_folder, ("image0" + str(aug_cnt) + ".nii"))
        # aug_seg_file = os.path.join(aug_seg_folder, (str(aug_cnt) + '_seg.nii'))
        nib.save(new_us_vol, aug_us_file)
        # nib.save(new_seg_vol, aug_seg_file)

        aug_cnt = aug_cnt + 1
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值