Python解析多帧dicom数据详解


Posted in Python onJanuary 13, 2020

概述

pydicom是一个常用python DICOM parser。但是,没有提供解析多帧图的示例。本文结合相关函数和DICOM知识做一个简单说明。

DICOM多帧数据存储

DICOM标准中关于多帧数据存储的最重要一部分说明是PS3.5 Annex A.4 A.4 Transfer Syntaxes For Encapsulation of Encoded Pixel Data。

无论何时,Pixel Data都存放在Pixel Data (7FE0,0010)中。有可能是直接存放的(native),也有可能是被打包存放的(encapsulated)。常见的多帧图一般采用打包存放的方式,特别是在数据存采用压缩格式的时候。

在打包存放时,数据被拆分成很多数据段(Data Stream Fragment),每个段保存成一个Tag为(FFFE,E000)的DICOM 项目(item)。其中第一个项目保存基础偏移表(Basic Offset Table),保存每个帧的起始偏移。然后,后面的数据段保存真正的数据。

**理论上,一帧(Frame)可以保存在多个数据段(Fragment)中。**但是,一个数据段不会保存两帧的数据。实际应用中,很少见到Frame跨数据段的情况,不过好的DICOM Parser应该支持这种情况。这就是导致有些DICOM库的接口看起来有点古怪的原因。

pydicom应用

以pydicom 1.2为例,pydicom.encaps封装了多帧有关的功能。解析最可能用到的几个函数

多帧使用 pydicom.encaps来处理

pydicom.encaps.decode_data_sequence 返回每个(FFFE,E000)组成的item,形式是byte string的list。这样一次拿到了所有fragment数据,可能比较耗内存。注意理论上拿到的不是帧(Frame)

pydicom.encaps.generate_pixel_data 生成一个generator。每次迭代,返回做成一个fragments tuple,每个fragment是一个bytes,每个tuple是一个Frame。如果一个Fame保存在一个Fragment中。tuple就只有一个元素。

pydicom.encaps.generate_pixel_data_frame 迭代每次返回一个bytes,这个bytes代表了帧的全部数据。这应该是最常用的函数。代码实现就是把generate_pixel_data生成的tuple给拼接起来了。

这几个方法的输入都是pixel_array。相应的Pydicom提供了用fp做参数的方法。

以上这篇Python解析多帧dicom数据详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
各种Python库安装包下载地址与安装过程详细介绍(Windows版)
Nov 02 Python
Python生成密码库功能示例
May 23 Python
Python统计纯文本文件中英文单词出现个数的方法总结【测试可用】
Jul 25 Python
python中dict字典的查询键值对 遍历 排序 创建 访问 更新 删除基础操作方法
Sep 13 Python
Python变量访问权限控制详解
Jun 29 Python
解决TensorFlow GPU版出现OOM错误的问题
Feb 03 Python
Python + selenium + crontab实现每日定时自动打卡功能
Mar 31 Python
python3.6.8 + pycharm + PyQt5 环境搭建的图文教程
Jun 11 Python
python如何实现读取并显示图片(不需要图形界面)
Jul 08 Python
python 实时调取摄像头的示例代码
Nov 25 Python
详解pytorch创建tensor函数
Mar 22 Python
Python实现为PDF去除水印的示例代码
Apr 03 Python
python 将dicom图片转换成jpg图片的实例
Jan 13 #Python
基于Python和PyYAML读取yaml配置文件数据
Jan 13 #Python
Python 实现判断图片格式并转换,将转换的图像存到生成的文件夹中
Jan 13 #Python
利用python实现.dcm格式图像转为.jpg格式
Jan 13 #Python
如何基于Python + requests实现发送HTTP请求
Jan 13 #Python
python+tifffile之tiff文件读写方式
Jan 13 #Python
python读取tif图片时保留其16bit的编码格式实例
Jan 13 #Python
You might like
骨王战斗力在公会成员中排不进前五,却当选了会长,原因竟是这样
2020/03/02 日漫
apache和php之间协同工作的配置经验分享
2013/04/08 PHP
基于curl数据采集之正则处理函数get_matches的使用
2013/04/28 PHP
php之CodeIgniter学习笔记
2013/06/17 PHP
php对包含html标签的字符串进行截取的函数分享
2014/06/19 PHP
php实现的简单多进程服务器类完整示例
2020/02/01 PHP
php 的多进程操作实践案例分析
2020/02/28 PHP
JS Array对象入门分析
2008/10/30 Javascript
Chrome Form多次提交表单问题的解决方法
2011/05/09 Javascript
jquery操作select option 的代码小结
2011/06/21 Javascript
侧栏跟随滚动的简单实现代码
2013/03/18 Javascript
JavaScript在IE和FF下的兼容性问题
2014/05/19 Javascript
Bootstrap布局方式详解
2016/05/27 Javascript
微信小程序  modal弹框组件详解
2016/10/27 Javascript
信息滚动效果的实例讲解
2017/09/18 Javascript
浅谈react 同构之样式直出
2017/11/07 Javascript
解决使用Vue.js显示数据的时,页面闪现原始代码的问题
2018/02/11 Javascript
微信小程序实现图片滚动效果示例
2018/12/05 Javascript
JavaScript中的回调函数实例讲解
2019/01/27 Javascript
[42:35]2018DOTA2亚洲邀请赛3月30日 小组赛A组 VG VS OpTic
2018/03/31 DOTA
Python基于tkinter模块实现的改名小工具示例
2017/07/27 Python
Python+OpenCV让电脑帮你玩微信跳一跳
2018/01/04 Python
Python实现简单的文本相似度分析操作详解
2018/06/16 Python
python3 cvs将数据读取为字典的方法
2018/12/22 Python
numpy下的flatten()函数用法详解
2019/05/27 Python
python语言的优势是什么
2020/06/17 Python
Keras 切换后端方式(Theano和TensorFlow)
2020/06/19 Python
创业培训计划书
2014/05/03 职场文书
歌颂祖国的演讲稿
2014/05/04 职场文书
党员干部反四风对照检查材料思想汇报
2014/09/14 职场文书
思想品德评语大全
2014/12/31 职场文书
物业客服专员岗位职责
2015/04/07 职场文书
教师师德承诺书2016
2016/03/25 职场文书
2016年万圣节家长开放日活动总结
2016/04/05 职场文书
受欢迎的自荐信,就这么写!
2019/04/19 职场文书
详解Python函数print用法
2021/06/18 Python