Python读取医学图象nii格式数据进行裁剪,并保存

Python读取医学图象nii格式数据进行裁剪,并保存

本文是通过nibabel和numpy模块实现可视化的。如有不足请多多指教,一起学习。


导入模块:

import time, os
import nibabel as nib
import numpy as np


使用nibabel进行裁剪:
裁剪指定大小函数:

def cut_newdata(img_t1_name,img_t1_name1):
    img_t1 = nib.load(img_t1_name)
    img_t1_affine = img_t1.get_affine()
    img_t1_data = img_t1.get_data()
    img_t1_data1 = img_t1_data[10:490,10:470,18:138] # 可改大小,本实验裁成480*460*120
    img_t1 = nib.Nifti1Image(img_t1_data1, img_t1_affine)
    nib.save(img_t1, img_t1_name1)


使用nibabel进行补齐指定大小:
补齐指定大小函数:
# 可改大小,原大小145174145,现大小128160128

def padding_data(img_t1_name,img_t1_name1):
    img_t1 = nib.load(img_t1_name)
    img_t1_affine = img_t1.get_affine()
    img_t1_data = img_t1.get_data()
    img_t1_data = np.squeeze(img_t1_data)
    empty_data = np.zeros([145,174,145])   
    empty_data[10:138,10:170,10:138] = img_t1_data
    img_t1 = nib.Nifti1Image(empty_data, img_t1_affine)
    nib.save(img_t1, img_t1_name1)


主函数

path = '/media/gll/Work/1/test/'
    dir = os.listdir(path)
    for data in dir:
        data_path = path + data
        cut_newdata(data_path,data_path)
        # cut_newdata(data_path, data_path)

完整程序

import time, os
import nibabel as nib
import numpy as np


def cut_newdata(img_t1_name,img_t1_name1):
    img_t1 = nib.load(img_t1_name)
    img_t1_affine = img_t1.get_affine()
    img_t1_data = img_t1.get_data()
    img_t1_data1 = img_t1_data[10:490,10:470,18:138]
    img_t1 = nib.Nifti1Image(img_t1_data1, img_t1_affine)
    nib.save(img_t1, img_t1_name1)
def padding_data(img_t1_name,img_t1_name1):
    img_t1 = nib.load(img_t1_name)
    img_t1_affine = img_t1.get_affine()
    img_t1_data = img_t1.get_data()
    img_t1_data = np.squeeze(img_t1_data)
    empty_data = np.zeros([145,174,145])
    empty_data[10:138,10:170,10:138] = img_t1_data
    img_t1 = nib.Nifti1Image(empty_data, img_t1_affine)
    nib.save(img_t1, img_t1_name1)
if __name__ == '__main__':
    path = '/media/xl/Work/1/test/'
    dir = os.listdir(path)
    for data in dir:
        data_path = path + data
        cut_newdata(data_path,data_path)
        # cut_newdata(data_path, data_path)

版权声明:本文为weixin_43213117原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。