【3】SimpleIKT读取.nii文件

【1】参考文献

医学图像处理

SimpleITK、pydicom的安装使用——踏上python生物医学图像处理的初学之路

【2】代码

#!/usr/bin/env python
# -*- encoding: utf-8 -*-
'''
@File    :   test10.py
@Time    :   2021/04/30 17:56:59
@Author  :   Jian Song 
@Contact :   1248975661@qq.com
@Desc    :   None
'''

# here put the import lib

import SimpleITK as itk 
from matplotlib import pyplot as plt 
import cv2
import os
'''
[1]SimpleIKT 读取数据
需要注意,SimpleIKT读取出来的图片的维度顺序与NiBabel 不同
https://blog.csdn.net/Emily_Buffy/article/details/104879558?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-1&spm=1001.2101.3001.4242

[2]批量nii文件转换为png图像
https://blog.csdn.net/weixin_43330946/article/details/89576759


Question1:如果不保存图片,怎么将nii文件的图像信息转换为普通的图像像素信息,
          设计到图像的方向、圆点、缩放尺寸的变化。
'''

#创建一个不存在的文件夹
def  makefilepath(folder_path):   
    if not os.path.exists(folder_path):  #判断是否存在文件夹如果不存在则创建为文件夹
        os.makedirs(folder_path)

#显示.nii文件
def show_nii(img):
    num=1
    for i in range(0,img.shape[0],10):
        plt.imshow(img[i,:,:],cmap='gray')       
        plt.subplot(4,6,num)
        num+=1
    #print("Translate success!The total are %s"%num)

#将.nii文件转换为png图片并存放在文件夹中
def niitopng(img):
    num=1
    for i in range(0,img.shape[0],1):
        makefilepath("./spliteimg/")
        str1="spliteimg/"+str(i)+".png"
        cv2.imwrite(str1,img[i,:,:])
        num+=1

#该函数原本是想将nii文件的图像转换为普通图像后压入到列表中
#问题1:nii文件的像素值范围不在0-255,远大于或者小于该区间,如何调整?? 暂未解决
#将.nii文件转换为单张图像压入到列表中,
def niiintolist(img):
    imglist=[]
    for i in range(0,img.shape[0],1):        
        image_one=img[i,:,:]
        cv2.imshow("test image",image_one)
        if i==1:
            print(image_one.shape)
        cv2.waitKey(100)
        imglist.append(image_one)

#将单张图像的像素数据写入到文件中
def savevalue(image):
    with open("result.txt","a") as f:
        for i in range(image.shape[0]):
            for j in range(image.shape[1]):
                f.write(str(image[i][j]))
                f.write(' ')
            f.write('\n')
        print("打印了第%s行"%j)
    print("save succesful!")


if __name__=="__main__":
    itk_img=itk.ReadImage('F:\\mediacldata\\Pancreasimages\\Pancreas-CT\\data\\PANCREAS_0001.nii.gz')
    img=itk.GetArrayFromImage(itk_img)
    print(img.shape) #(144, 192, 160)
    show_nii(img)
    # niitopng(img)
     plt.show()
    # niiintolist(img)

【3】结果展示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值