使用python(pydicom)读取Dicom文件并且转换成png
这篇主要讲怎么处理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相关推荐
- python pydicom读取dicom文件信息的几种方式
使用pydicom读取单张dicom信息 看这篇文章之前,请各位对dicom文件有一定的了解. 知道上面那张图片里面的各个栏目如group,VR代表着啥再继续往下看 现有一张dicom文件,如何读取它 ...
- 使用pydicom读取dicom文件,并对文件做一些简单操作
#! /usr/bin/python # -*- coding: utf-8 -*- import dicom import pylab ds=dicom.read_file("/home/ ...
- python读取nc文件并转换成csv_使用Python截取nc文件数据保存到CSV文件-Go语言中文社区...
问题要求: 编写一个函数完成以下任务:截取经度在23°N-40°N,纬度在118°E-131°E范围内各属性不同深度的数据,使用Python中合适的数据结构将截取的数据保存到同名CSV文件中.(nc文 ...
- python读取pdf文件并转换成txt文件
将pdf文件转换成txt文件 官网 文档 中英文pdf都可以,而且处理速度很快,一秒可以处理10页左右 python2: pip install pdfminer python3: pip insta ...
- java xml文件内容替换_java读取xml文件并转换成对象,并进行修改
1.首先要写工具类,处理读取和写入xml文件使用的工具.XMLUtil.java importjava.io.FileInputStream;importjava.io.FileWriter;impo ...
- java xml 字符串转对象_java读取xml文件并转换成对象,并进行修改
1.首先要写工具类,处理读取和写入xml文件使用的工具.XMLUtil.java import java.io.FileInputStream; import java.io.FileWriter; ...
- C#:CsvReader读取.CSV文件(转换成DataTable)
原文引用:https://www.codeproject.com/Articles/9258/A-Fast-CSV-Reader using LumenWorks.Framework.IO.Csv;u ...
- python读取nc文件并转换成csv_python3使用类型转换读取csv文件
我有两个问题: a)Python csv模块无法正确处理特定csv文件 我在database.csv中有以下数据"AAAAAAAA" , 5.4817, 0.0000, 0.000 ...
- python读取nc文件并转换成csv_Python提取netCDF数据并转换为csv文件
netCDF全称是network Common Data Format(网络通用数据格式),是由美国大学大气研究协会(University Corporation for Atmospheric Re ...
最新文章
- Windows Phone 7 XNA开发之关于图形的配置
- 朋友圈产品文档_企业微信上线朋友圈等新功能,超250万企业接入企业微信
- hibernate xml配置文件
- 程序局部性原理的一些思考
- [C++]有关深复制与copy constructor的一些问题与实例
- Save info in Hidden Field
- 2016,你最不应该错过的热门技术文章
- linux 网络块存储,网络存储集群
- RocketMQ源码解析-事务消息的二阶段提交
- 【CF1312D】Count the Arrays(计数)
- python字体描边_使用 python 将文泉驿字体导出为 fnt 格式的bitmap font
- 极速办公(word)如何绘制流程图
- RK3399 M0 调试-启动
- rhel centos 源_Rhel centos 7的fips脚本
- Java笔试题(二)多选题
- 批量查询快递物流,自动过滤重复的单号
- c-lightning 闪电网络配置洋葱服务(tor)
- LeetCode常用算法模式大厂面试题整理
- 【Android -- 面试】精心整理 Android 面试题(2022求职必看)
- Higher-order organization of complex networks 之邻接矩阵的构建思路
热门文章
- 信号系统一些基本概念
- 百度飞浆之PaddleHub视频移动人脸识别
- JavaScript系列—Object.assign()介绍以及原理实现
- C语言fscanf函数的理解
- 一些实用的cmd命令,让你变得很牛X
- 流媒体服务器主板型号怎么看,玩转NAS 篇五:双2.5G接口+J4125处理器,对于NAS意味着什么?威联通453Dmini对比453Bmini...
- 通信原理学习笔记:通信系统
- Python实现 鱼群算法库
- 【Promise】自定义 - 手写Promise - Promise.all - Promise(executor)
- 安装QQ的时候显示创建文件夹失败,无法正常安装,请尝试选择新的安装目录的解决办法