概述

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数据详解相关推荐

  1. python爬取app中的音频_Python爬取喜马拉雅音频数据详解

    码农公社  210.net.cn  210是何含义?10月24日是程序员节,1024 =210.210既 210 之意. Python爬取喜马拉雅音频数据详解 一.项目目标 爬取喜马拉雅音频数据 受害 ...

  2. python3 urlopen_扣丁学堂解析Python3中urlopen()使用详解

    扣丁学堂解析Python3中urlopen()使用详解 2018-07-23 13:31:14 1318浏览 在现如今,2018年Python一直属于IT行业中比较热门技术,那么今天扣丁学堂Pytho ...

  3. linux c 设置utc时间,C/C++标准库之转换UTC时间到local本地时间详解

    前言 UTC 时间DateTime.UtcNow 和 系统本地时间 DateTime.Now 相差8个时区 ,美国本地时间和北京时间相差15个时区: 美国,而一般使用UTC时间方便统一各地区时间差异. ...

  4. 阿里聚安全Android应用漏洞扫描器解析:本地拒绝服务检测详解

    阿里聚安全Android应用漏洞扫描器解析:本地拒绝服务检测详解 阿里聚安全的Android应用漏洞扫描器有一个检测项是本地拒绝服务漏洞的检测,采用的是静态分析加动态模糊测试的方法来检测,检测结果准确 ...

  5. python爬取喜马拉雅_Python爬虫实战案例之爬取喜马拉雅音频数据详解

    这篇文章我们来讲一下在网站建设中,Python爬虫实战案例之爬取喜马拉雅音频数据详解.本文对大家进行网站开发设计工作或者学习都有一定帮助,下面让我们进入正文. 前言 喜马拉雅是专业的音频分享平台,汇集 ...

  6. java解析json数据_java解析JSON数据详解

    JSON是目前最流行的轻量级数据交换语言(没有之一).尽管他是javaScript的一个子集.但由于其是独立与语言的文本格式,它几乎可以被所有编程语言所支持. 以下是对java语言中解析json数据的 ...

  7. python对输入的字符串进行解析_python数据类型_字符串常用操作(详解)

    这次主要介绍字符串常用操作方法及例子 1.python字符串 在python中声明一个字符串,通常有三种方法:在它的两边加上单引号.双引号或者三引号,如下: name = 'hello' name1 ...

  8. [转载] python 遍历字符串 字符_python 遍历字符串(含汉字)实例详解

    参考链接: Python字符串| rfind python 遍历字符串(含汉字)实例详解 python 遍历字符串(含汉字)实例详解 s = "中国china" for j in ...

  9. java flv转mp3_Java调用ffmpeg转换视频格式为flv的示例详解

    这篇文章主要介绍了 详解java调用ffmpeg转换视频格式为flv的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下 详解java调用ffmpeg转换视频格式为flv 注意:下面的程序是在L ...

最新文章

  1. 洛谷 P1142 轰炸
  2. 大学计算机专业副修课,计算机学院举行本科课程教学大纲修订工作研讨会
  3. MPB:南农金巍等-​​​瘤胃甲烷菌的分离培养与保存
  4. Redis缓存使用技巧
  5. 【VS开发】模态对话框和非模态对话框
  6. 了解jQuery技巧来提高你的代码
  7. 【招聘(南京)】南京纳龙科技有限公司招高级.net开发工程师
  8. c语言用队列stl加头文件,C++ STL List队列用法(实例)
  9. 微信终于给我抛橄榄枝了,关于面试我又有话说
  10. openwrt路由器进入安全模式
  11. ML/DL-复习笔记【四】- DeepLab系列模型总结
  12. js中立即执行函数会预编译吗_浅析Vue的生命周期以及JS异步
  13. 防火墙添加ip白名单_宝塔防火墙IP白名单添加/导入知道创宇云CDN节点IP段
  14. MacBook远程控制工具VNC Viewer_亲测使用
  15. 运维分级发布_运维必备制度:故障分级和处罚规范
  16. 解决IDEA SSM项目sql文件打开提示No data sources are configured to run this SQL and provide advanced code ass的问题
  17. 你看我像不像学HTML的人(五)——链接标签、注释和特殊字符
  18. 未来智安XDR及核心组件产品上榜《嘶吼2022网络安全产业图谱》
  19. 如何从基层人员变成一名中层领导
  20. 屏蔽宽带运营商的弹窗广告

热门文章

  1. 常用的HTML标签和属性解释
  2. ML DL 知乎问题收集
  3. html如何制作查看更多横条,页面浏览量顶部横条显示代码-附“Js/Jquery获取网页屏幕可见区域高度”...
  4. 《深度学习的数学》二刷总结
  5. python基础3(来自廖雪峰的官方网站)
  6. 【DIY】木质音乐盒,聆听一下治愈之音。How To Make Music box out of nothing at all
  7. 阿里云助力重庆打造“亚洲最智能大型城市”
  8. 业内首创普惠保险,看国泰产险如何借助数据进行智能化的升级和战略转型
  9. 关于docker的存储驱动
  10. java 通用取得 系统硬件信息及 jvm 信息的 jar 包 oshi-core