医学图像 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. [NOI2007]货币兑换Cash(DP+动态凸包)
  2. 互联网经济与实体经济
  3. qhfl-2 ContentType组件
  4. codeforces 650B - Image Preview
  5. 转 php include
  6. spark 为什么总是起200个task
  7. 95-138-010-源码-Function-ProcessFunction
  8. html js布尔值怎么定义,JavaScript基本类型值-Undefined、Null、Boolean
  9. data access components 2.0未响应_Vue2.x 源码剖析之响应式原理
  10. UNIX系统基本结构
  11. 操作系统原理实验报告——读者写者
  12. 区块链ppt_朱嘉明最新演讲:区块链很可能带来科学领域的范式革命(附PPT)
  13. 新路由3详细刷机教程
  14. Oracle 11g SQL基础入门系列培训-小布作品
  15. java关闭自动更新_怎么关闭java自动更新
  16. 缺陷跟踪系统BugTracker。 以下对使用
  17. 这篇文章有毒《持续更新中。。。》
  18. JS实现倒计时精确到天数,时,分,秒或者精确到时、分、秒(小时数累加)
  19. 物质的折射率和光的折射率的关系
  20. Nginx 1.9 安装 ngx_pagespeed 模块

热门文章

  1. 面试阿里必知的SQL面试题 100讲
  2. oracle设置会计科目管理器,系列之四:ORACLE EBS基础设置要点简介(E) - season的日志 - 网易博客...
  3. SpringCloud学习记录(1)-父工程与子模块创建及子模块调用
  4. 电动车充电软件测试,电动车充电用哪个app好?6款充电app评测
  5. 分布式事务详解(看完不懂我当场认做你哥)
  6. .com域名到期 续费期和偿还期有什么区别?
  7. 电脑开机右下角有小金锁,并且提示一分钟后重启电脑
  8. 要将英文的文件名翻译成中文该怎么做
  9. skywalking介绍
  10. linux命令kill9的含义,[整理]kill -9的含义