这篇主要讲怎么处理dicom格式的医学影像文件,并且转换成png,这样利于我们对图像进行处理。

pydicom 目前取代了17年前的dicom库,更加的便捷

导入需要的模块,如果没安装,都可以用pip进行安装。SimpleITK、pydicom是操作医学影像的模块。

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文件:param src_dir: dicom文件夹路径:return: dicom list'''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)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文件:param src_dir: dicom文件夹路径:return: image array'''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_arrayif __name__ == '__main__':#dicom文件目录dicom_dir = 'dcm/'# 读取dicom文件的元数据(dicom tags)slices = load_patient(dicom_dir)print('The number of dicom files : ', len(slices))# 提取dicom文件中的像素值image = get_pixels_hu_by_simpleitk(dicom_dir)for i in tqdm(range(image.shape[0])):#输出png文件目录img_path = "dcm_2_png/img_" + str(i).rjust(4, '0') + "_i.png"org_img =image[i]*20# 保存图像数组cv2.imwrite(img_path, org_img )

借鉴修改自DICOM转PNG

将DICOM库改为了pydicom库,路径稍作修改导出在代码同一目录下(导出前手动建目录)

使用python(pydicom)读取Dicom文件并且转换成png相关推荐

  1. python pydicom读取dicom文件信息的几种方式

    使用pydicom读取单张dicom信息 看这篇文章之前,请各位对dicom文件有一定的了解. 知道上面那张图片里面的各个栏目如group,VR代表着啥再继续往下看 现有一张dicom文件,如何读取它 ...

  2. 使用pydicom读取dicom文件,并对文件做一些简单操作

    #! /usr/bin/python # -*- coding: utf-8 -*- import dicom import pylab ds=dicom.read_file("/home/ ...

  3. python读取nc文件并转换成csv_使用Python截取nc文件数据保存到CSV文件-Go语言中文社区...

    问题要求: 编写一个函数完成以下任务:截取经度在23°N-40°N,纬度在118°E-131°E范围内各属性不同深度的数据,使用Python中合适的数据结构将截取的数据保存到同名CSV文件中.(nc文 ...

  4. python读取pdf文件并转换成txt文件

    将pdf文件转换成txt文件 官网 文档 中英文pdf都可以,而且处理速度很快,一秒可以处理10页左右 python2: pip install pdfminer python3: pip insta ...

  5. java xml文件内容替换_java读取xml文件并转换成对象,并进行修改

    1.首先要写工具类,处理读取和写入xml文件使用的工具.XMLUtil.java importjava.io.FileInputStream;importjava.io.FileWriter;impo ...

  6. java xml 字符串转对象_java读取xml文件并转换成对象,并进行修改

    1.首先要写工具类,处理读取和写入xml文件使用的工具.XMLUtil.java import java.io.FileInputStream; import java.io.FileWriter; ...

  7. C#:CsvReader读取.CSV文件(转换成DataTable)

    原文引用:https://www.codeproject.com/Articles/9258/A-Fast-CSV-Reader using LumenWorks.Framework.IO.Csv;u ...

  8. python读取nc文件并转换成csv_python3使用类型转换读取csv文件

    我有两个问题: a)Python csv模块无法正确处理特定csv文件 我在database.csv中有以下数据"AAAAAAAA" , 5.4817, 0.0000, 0.000 ...

  9. python读取nc文件并转换成csv_Python提取netCDF数据并转换为csv文件

    netCDF全称是network Common Data Format(网络通用数据格式),是由美国大学大气研究协会(University Corporation for Atmospheric Re ...

最新文章

  1. Windows Phone 7 XNA开发之关于图形的配置
  2. 朋友圈产品文档_企业微信上线朋友圈等新功能,超250万企业接入企业微信
  3. hibernate xml配置文件
  4. 程序局部性原理的一些思考
  5. [C++]有关深复制与copy constructor的一些问题与实例
  6. Save info in Hidden Field
  7. 2016,你最不应该错过的热门技术文章
  8. linux 网络块存储,网络存储集群
  9. RocketMQ源码解析-事务消息的二阶段提交
  10. 【CF1312D】Count the Arrays(计数)
  11. python字体描边_使用 python 将文泉驿字体导出为 fnt 格式的bitmap font
  12. 极速办公(word)如何绘制流程图
  13. RK3399 M0 调试-启动
  14. rhel centos 源_Rhel centos 7的fips脚本
  15. Java笔试题(二)多选题
  16. 批量查询快递物流,自动过滤重复的单号
  17. c-lightning 闪电网络配置洋葱服务(tor)
  18. LeetCode常用算法模式大厂面试题整理
  19. 【Android -- 面试】精心整理 Android 面试题(2022求职必看)
  20. Higher-order organization of complex networks 之邻接矩阵的构建思路

热门文章

  1. 信号系统一些基本概念
  2. 百度飞浆之PaddleHub视频移动人脸识别
  3. JavaScript系列—Object.assign()介绍以及原理实现
  4. C语言fscanf函数的理解
  5. 一些实用的cmd命令,让你变得很牛X
  6. 流媒体服务器主板型号怎么看,玩转NAS 篇五:双2.5G接口+J4125处理器,对于NAS意味着什么?威联通453Dmini对比453Bmini...
  7. 通信原理学习笔记:通信系统
  8. Python实现 鱼群算法库
  9. 【Promise】自定义 - 手写Promise - Promise.all - Promise(executor)
  10. 安装QQ的时候显示创建文件夹失败,无法正常安装,请尝试选择新的安装目录的解决办法