【Python医学影像从超详细入门】3.窗位窗宽调整

【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)

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
医学图像处理中的窗位(Window Level)是指在显示图像时调整图像的亮度和对比度的一种方法。窗位用于调整图像的亮度,窗宽(Window Width)用于调整图像的对比度。 在Python中,可以使用一些库来进行医学图像处理和窗位调整,例如PyDICOM、OpenCV和PIL(Python Imaging Library)等。 下面是一个使用PyDICOM库进行医学图像窗位调整的示例代码: ```python import pydicom import numpy as np import matplotlib.pyplot as plt # 读取DICOM文件 ds = pydicom.dcmread('path_to_dicom_file.dcm') # 获取图像像素数据 image_data = ds.pixel_array # 获取窗位窗宽数值 window_center = ds.WindowCenter window_width = ds.WindowWidth # 计算窗位范围 min_value = window_center - window_width/2.0 max_value = window_center + window_width/2.0 # 对图像进行窗位调整 windowed_image = np.piecewise(image_data, [image_data <= min_value, image_data >= max_value, (image_data > min_value) & (image_data < max_value)], [0, 255, lambda x: ((x - min_value) / window_width + 0.5) * 255]) # 显示调整后的图像 plt.imshow(windowed_image, cmap=plt.cm.gray) plt.axis('off') plt.show() ``` 上述代码中,我们首先使用pydicom库读取DICOM文件,然后获取图像像素数据以及窗位窗宽数值。接下来,我们计算窗位的范围,并使用numpy库的piecewise函数对图像进行窗位调整。最后,使用matplotlib库显示调整后的图像。 需要注意的是,窗位调整的具体方法可能因不同的图像格式和库而异。上述示例代码仅适用于DICOM格式的医学图像处理,其他格式可能需要使用不同的库和方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值