【Python医学影像从超详细入门】3.窗位窗宽调整
针对不同类型的影像,一般需要调整窗位窗宽才能够获得更好的视觉效果。并且对于深度学习建模也将有较好的性能改善。
本文为您提供NII NII.GZ NRRD DICOM文件转换为JPG过程中如何实现窗位窗宽的调整。
为您附上NII NII.GZ NRRD格式转换为JPG过程中调整窗位窗宽的方法。
可能用到以下库:
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
import SimpleITK as sitk
import nibabel as nib
import cv2
import numpy as np
import shutil
import os
#转换为jpg图像时,调整窗位窗宽
def window_transform(img, windowWidth, windowCenter):
minWindow = float(windowCenter) - 0.5*float(windowWidth)
img = (img - minWindow) / float(windowWidth)
img[img < 0] = 0
img[img > 1] = 1
img = (img * 255).astype('float32')
return img
#nii nii.gz nrrd的原始影像文件(非勾画)转换为jpg
#file_path应该是nii nii.gz nrrd文件 to_path应该是一个文件夹
def Niigz2jpg(file_path,to_path,cwckON,cwckcenter,cwckwidth):
n1 = nib.load(file_path)
n1 = n1.get_fdata()
if(cwckON):
n1 = window_transform(n1,cwckwidth,cwckcenter)
if(os.path.exists(to_path)):#若已存在文件夹
shutil.rmtree(to_path)#则删除文件夹
os.mkdir(to_path)#重新创建文件夹
for i in range(n1.shape[2]):
out_path = to_path + '\\' + str(i) + ".jpg"
nt=cv2.flip(np.rot90(n1[:,:,i],3),1)
nt = nt.astype('float32')
cv2.imwrite(out_path,nt)
您可以前往该文章以获取完整的DICOM NII NII.GZ NRRD格式转换为JPG格式以及之间的格式互相转换方法。
【Python医学影像从超详细入门】1.医学影像与勾画文件查看(NII NII.GZ NRRD转JPG)