dicom多帧转换_Python解析多帧dicom数据详解
概述
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数据详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持云海天教程。
dicom多帧转换_Python解析多帧dicom数据详解相关推荐
- python爬取app中的音频_Python爬取喜马拉雅音频数据详解
码农公社 210.net.cn 210是何含义?10月24日是程序员节,1024 =210.210既 210 之意. Python爬取喜马拉雅音频数据详解 一.项目目标 爬取喜马拉雅音频数据 受害 ...
- python3 urlopen_扣丁学堂解析Python3中urlopen()使用详解
扣丁学堂解析Python3中urlopen()使用详解 2018-07-23 13:31:14 1318浏览 在现如今,2018年Python一直属于IT行业中比较热门技术,那么今天扣丁学堂Pytho ...
- linux c 设置utc时间,C/C++标准库之转换UTC时间到local本地时间详解
前言 UTC 时间DateTime.UtcNow 和 系统本地时间 DateTime.Now 相差8个时区 ,美国本地时间和北京时间相差15个时区: 美国,而一般使用UTC时间方便统一各地区时间差异. ...
- 阿里聚安全Android应用漏洞扫描器解析:本地拒绝服务检测详解
阿里聚安全Android应用漏洞扫描器解析:本地拒绝服务检测详解 阿里聚安全的Android应用漏洞扫描器有一个检测项是本地拒绝服务漏洞的检测,采用的是静态分析加动态模糊测试的方法来检测,检测结果准确 ...
- python爬取喜马拉雅_Python爬虫实战案例之爬取喜马拉雅音频数据详解
这篇文章我们来讲一下在网站建设中,Python爬虫实战案例之爬取喜马拉雅音频数据详解.本文对大家进行网站开发设计工作或者学习都有一定帮助,下面让我们进入正文. 前言 喜马拉雅是专业的音频分享平台,汇集 ...
- java解析json数据_java解析JSON数据详解
JSON是目前最流行的轻量级数据交换语言(没有之一).尽管他是javaScript的一个子集.但由于其是独立与语言的文本格式,它几乎可以被所有编程语言所支持. 以下是对java语言中解析json数据的 ...
- python对输入的字符串进行解析_python数据类型_字符串常用操作(详解)
这次主要介绍字符串常用操作方法及例子 1.python字符串 在python中声明一个字符串,通常有三种方法:在它的两边加上单引号.双引号或者三引号,如下: name = 'hello' name1 ...
- [转载] python 遍历字符串 字符_python 遍历字符串(含汉字)实例详解
参考链接: Python字符串| rfind python 遍历字符串(含汉字)实例详解 python 遍历字符串(含汉字)实例详解 s = "中国china" for j in ...
- java flv转mp3_Java调用ffmpeg转换视频格式为flv的示例详解
这篇文章主要介绍了 详解java调用ffmpeg转换视频格式为flv的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下 详解java调用ffmpeg转换视频格式为flv 注意:下面的程序是在L ...
最新文章
- 洛谷 P1142 轰炸
- 大学计算机专业副修课,计算机学院举行本科课程教学大纲修订工作研讨会
- MPB:南农金巍等-​​​瘤胃甲烷菌的分离培养与保存
- Redis缓存使用技巧
- 【VS开发】模态对话框和非模态对话框
- 了解jQuery技巧来提高你的代码
- 【招聘(南京)】南京纳龙科技有限公司招高级.net开发工程师
- c语言用队列stl加头文件,C++ STL List队列用法(实例)
- 微信终于给我抛橄榄枝了,关于面试我又有话说
- openwrt路由器进入安全模式
- ML/DL-复习笔记【四】- DeepLab系列模型总结
- js中立即执行函数会预编译吗_浅析Vue的生命周期以及JS异步
- 防火墙添加ip白名单_宝塔防火墙IP白名单添加/导入知道创宇云CDN节点IP段
- MacBook远程控制工具VNC Viewer_亲测使用
- 运维分级发布_运维必备制度:故障分级和处罚规范
- 解决IDEA SSM项目sql文件打开提示No data sources are configured to run this SQL and provide advanced code ass的问题
- 你看我像不像学HTML的人(五)——链接标签、注释和特殊字符
- 未来智安XDR及核心组件产品上榜《嘶吼2022网络安全产业图谱》
- 如何从基层人员变成一名中层领导
- 屏蔽宽带运营商的弹窗广告
热门文章
- 常用的HTML标签和属性解释
- ML DL 知乎问题收集
- html如何制作查看更多横条,页面浏览量顶部横条显示代码-附“Js/Jquery获取网页屏幕可见区域高度”...
- 《深度学习的数学》二刷总结
- python基础3(来自廖雪峰的官方网站)
- 【DIY】木质音乐盒,聆听一下治愈之音。How To Make Music box out of nothing at all
- 阿里云助力重庆打造“亚洲最智能大型城市”
- 业内首创普惠保险,看国泰产险如何借助数据进行智能化的升级和战略转型
- 关于docker的存储驱动
- java 通用取得 系统硬件信息及 jvm 信息的 jar 包 oshi-core