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版权协议,转载请附上原文出处链接和本声明。