【Python医学影像从超详细入门】1.医学影像与勾画文件查看(NII NII.GZ NRRD转JPG)

本文详细介绍了如何使用Python进行医学影像的格式转换,如将DICOM转换为nii.gz格式,并展示了如何调整窗位窗宽以处理不同类型的影像。同时,提供了将原始影像和勾画文件转换为JPG的代码示例。

【Python医学影像从超详细入门】1.医学影像与勾画文件查看(dicom nii nii.gz nrrd)

常见的医学影像格式有dicom nii nii.gz nrrd
建议将原始影像转换为nii.gz格式,便于处理且存储空间占用更小。

本文将展示使用python查看四种常用格式的医学影像的方法
(原始影像支持dicom nii nii.gz nrrd 勾画文件支持nii nii.gz)

影像查看其实也并非想象中那么简单,其中涉及格式转换与窗位窗宽的调整。

本次代码需要以下库:
SimpleITK
nibabel
cv2
numpy

首先您需要在控制台安装缺少的库(只需要安装提示缺少的库)

#SimpleITK:
pip install --user -i https://pypi.tuna.tsinghua.edu.cn/simple SimpleITK
#nibabel:
pip install --user -i https://pypi.tuna.tsinghua.edu.cn/simple nibabel
#cv2:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python
#numpy:
pip install numpy

安装完毕后即可执行本文中的代码。

代码段1 DICOM文件转换为NII NII.GZ NRRD格式


#代码段1  DICOM文件转换为NII NII.GZ NRRD格式
import SimpleITK as sitk
import nibabel as nib
import cv2
import numpy as np

import shutil
import os

#dicom即文件夹存储的dcm后缀文件转为nii或nii.gz或nrrd格式
#dicom文件夹目录  niipath:要保存的文件名
#您只需要修改niipath文件的后缀名为.nii .nii.gz .nrrd便可以直接实现三种格式的保存
def dcm2niigz(dcmpath, niipath):
    reader = sitk.ImageSeriesReader()
    dicom_names = reader.GetGDCMSeriesFileNames(dcmpath)
    reader.SetFileNames(dicom_names)
    image2 = reader.Execute() 

    image_array = sitk.GetArrayFromImage(image2)
    origin = image2.GetOrigin()
    spacing = image2.GetSpacing()
    direction = image2.GetDirection()
    image3 = sitk.GetImageFromArray(image_array)
    
    image3.SetSpacing(spacing)
    image3.SetDirection(direction)
    image3.SetOrigin(origin)
    
    sitk.WriteImage(image3, niipath)  

oripath = r'C:\Users\QDUMIAO\Desktop\dicom'  #dicom文件夹
savepath1 = r'C:\Users\QDUMIAO\Desktop\ori.nii'  #转换为nii
savepath2 = r'C:\Users\QDUMIAO\Desktop\ori.nii.gz'  #转换为nii.gz
savepath3 = r'C:\Users\QDUMIAO\Desktop\ori.nii.nrrd'  #转换为nrrd

dcm2niigz(oripath,savepath1)
dcm2niigz(oripath,savepath2)
dcm2niigz(oripath,savepath3)

dicom文件都应该存放在一个文件夹中
在这里插入图片描述
运行代码可以发现dicom文件已经成功被转换为了三种格式。
事实上,我们希望更多使用nii.gz格式
在这里插入图片描述
若我们希望实现nii nii.gz nrrd三种格式之间的转换,可以使用此函数:

代码段2 nii nii.gz nrrd格式互相转换

#代码段2 nii nii.gz nrrd格式互相转换
import SimpleITK as sitk
import nibabel as nib
import cv2
import numpy as np

import shutil
import os

#nii nii.gz nrrd格式之间互相转换
def nii2nii(oripath,savepath):
    data = sitk.ReadImage(oripath)
    img = sitk.GetArrayFromImage(data)
    out = sitk.GetImageFromArray(img)
    sitk.WriteImage
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值