医学图像 CT dcm格式转换为png
在normalize_hu()中修改像素值,需要具体数据对象具体分析
只需要在main函数中更改dcm文件路径

"""
读取dicom图像并将其转换为png图像
读取某文件夹内的所有dicom文件
:param src_dir: dicom文件夹路径
:return: dicom list
"""import os
import SimpleITK
import pydicom
import numpy as np
import cv2
from tqdm import tqdmdef is_dicom_file(filename):# 判断某文件是否是dicom格式的文件file_stream = open(filename, 'rb')file_stream.seek(128)data = file_stream.read(4)file_stream.close()if data == b'DICM':return Truereturn Falsedef load_patient(src_dir):# 读取某文件夹内的所有dicom文件files = os.listdir(src_dir)slices = []for s in files:if is_dicom_file(src_dir + '/' + s):instance = pydicom.read_file(src_dir + '/' + s)slices.append(instance)slices.sort(key=lambda x: int(x.InstanceNumber))try:slice_thickness = np.abs(slices[0].ImagePositionPatient[2] \- slices[1].ImagePositionPatient[2])except:slice_thickness = np.abs(slices[0].SliceLocation - slices[1].SliceLocation)for s in slices:s.SliceThickness = slice_thicknessreturn slicesdef get_pixels_hu_by_simpleitk(dicom_dir):# 读取某文件夹内的所有dicom文件,并提取像素值(-4000 ~ 4000)reader = SimpleITK.ImageSeriesReader()dicom_names = reader.GetGDCMSeriesFileNames(dicom_dir)reader.SetFileNames(dicom_names)image = reader.Execute()img_array = SimpleITK.GetArrayFromImage(image)img_array[img_array == -2000] = 0return img_arraydef normalize_hu(image):# 将输入图像的像素值(-4000 ~ 4000)归一化到0~1之间MIN_BOUND = 150MAX_BOUND = 3000image = (image - MIN_BOUND) / (MAX_BOUND - MIN_BOUND)image[image > 1] = 1.image[image < 0] = 0.return imageif __name__ == '__main__':dicom_dir = 'F:/AIStudio/DCMgaoxiuwen/'   # 读取dicom文件的元数据(dicom tags)slices = load_patient(dicom_dir)print('The number of dicom files : ', len(slices))image = get_pixels_hu_by_simpleitk(dicom_dir)  # 提取dicom文件中的像素值for i in tqdm(range(image.shape[0])):img_path = "F:/AIStudio/PNGgaoxiuwen/" + str(i).rjust(3, '0') + ".png"org_img = normalize_hu(image[i])  # 将像素值归一化到[0,1]区间cv2.imwrite(img_path, org_img * 255)  # 保存图像数组为灰度图(.png)

3D医学图像CT dcm格式转换为png相关推荐

  1. 医学图像将dcm格式转化的nii格式如何处理

    1.数据格式 在MRI数据不同序列下存放着dcm格式的数据,以及单个nii格式的mask文件,所以需要将data和label分离. 2.数据处理 使用 os库进行文件处理,用shutil库进行文件迁移 ...

  2. matplotlib连续显示3D医疗影像dcm格式数据

    读取显示dcm医疗CT数据 import SimpleITK as sitk import numpy as np import pydicom import matplotlib.pyplot as ...

  3. CT数据将.nii格式或.nii.gz格式转换为dcm格式

    1.先转换.nii格式或.nii.gz格式转换为dcm格式 import SimpleITK as sitkimage=sitk.ReadImage(r"D:\python\project\ ...

  4. html页面显示dcm文件,dcm格式的影像 怎么把avi转换为dcm格式?

    医学影像文件dcm格式用什么软件打开? 在哪里可以下正在实习中,想有空用电脑边看边学,在网上查的CT MRI都是用的dcm格式,可我也是找了好久才找到的....网页链接 NBIA国际生物图像数据库. ...

  5. Panda3d如何获取到可用的模型?Maya、3D Max、OBJ等3D格式转换为egg、gltf文件

    ​ 使用Panda3d进行3D环境建模也有一段时间了,真的是被折磨的头秃...不过也不得不说,Panda3D也确实是一个比较优秀的3D游戏引擎,还是能满足你的大部分需要的. ​ 如果你在深入使用Pan ...

  6. 有没有大佬知道怎么把dcm格式核磁图像,进行3D分割

    如题,导入之后就不行了,也没有那种GIPL格式的图像,有没有大佬知道怎么把dcm格式核磁图像,进行3D分割,麻烦指导一下,小弟谢过了.QQ575095086

  7. 用python将dycom .dcm格式图像转换为nifti .nii

    第一步安装dicom2nifti库,在你的环境中使用pip安装: pip install dicom2nifti 第二步,在你的python代码中使用dicom2nifti.convert_direc ...

  8. dcm格式的文件里有什么,哪些对于深度学习模型训练有用

    DCM格式的文件通常包含医学图像,如X射线.CT或MRI扫描.这些图像可以用来辅助医生诊断疾病,并且对于深度学习模型训练也非常有用.在医学图像分析方面,深度学习模型可以用来做图像分割.疾病诊断.肿瘤检 ...

  9. 关于医疗影像的mhd和dcm格式图像的读取和坐标转换

    本篇博客主要对近年来大赛(Luna16,kaggle,天池)中使用的肺部图像的读取和坐标转换进行整理,如果有错误,欢迎批评指正,谢谢. 1 介绍mhd格式的数据: 数据可以在Luna16(https: ...

最新文章

  1. Edison与Arduino通过USB对接通信
  2. 跟锦数学190314
  3. 计算机用户名登陆管理员权限,关于win10勿删用户账号下管理员身份导致无法登录系统的问题...
  4. [BTS] WCF-SAP Connect to SAP gateway failed
  5. Eratosthenes筛
  6. java中自定义输入数字格式_Java 创建并使用自定义数字格式、35;###、####.#####和语言环境...
  7. IDC:2017年中国网络安全市场分析与2018年预测
  8. nginx----linux安装
  9. 091117 T else if 的写法
  10. C keyword register 并讨论共同使用嵌入式汇编
  11. python使用os.system()方法进行多模块安装
  12. mysql资源限制_超出了MariaDB / MySQL资源限制
  13. opencv sobel算子的理解
  14. 彩票站漏洞引发的软件测试漏测思考
  15. 计算机专业学生实习目的,计算机专业学生的实习目的
  16. mysql 复制 1032_mysql slave复制1032错误解决方法
  17. node抓取58同城信息_如何使用标准库和Node.js轻松抓取网站以获取信息
  18. Vue中插入base64图片
  19. 基于即时通信软件聊天界面的设计
  20. 成熟港口人工智能Ceaspectus领跑全球智能港口码头人工智能应用落地,全球No.1集装箱AI企业中集飞瞳建设智慧港口智能码头

热门文章

  1. 李宏毅__ML_Notes_4.21
  2. 教师网络计算机研修培训总结,教师网络研修总结
  3. 汽车tbox介绍、新能源tbox,汽车tbox,新能源上的车联网终端
  4. 识骨寻踪第一季/全集Bones迅雷下载
  5. 2105_TIP_DeepQTMT:一种VVC帧内编码块划分的深度学习方法
  6. html活动链接是什么意思,什么是活动型链接诱饵
  7. 浏览器遇到找不到“www.xxxx.com”等的服务器的IP地址怎么解决
  8. 如何将多个bin文件合成一个bin文件?(二)
  9. Docker容器编排利器Compose 安装与简单Demo
  10. 牛视系统源码定制,抖音矩阵系统定制开发。come here