在好例子网,分享、交流、成长!
您当前所在位置:首页Others 开发实例一般编程问题 → Pydicom用法简介

Pydicom用法简介

一般编程问题

下载此实例
  • 开发语言:Others
  • 实例大小:0.69M
  • 下载次数:4
  • 浏览次数:366
  • 发布时间:2020-08-21
  • 实例类别:一般编程问题
  • 发 布 人:robot666
  • 文件格式:.pdf
  • 所需积分:2
 

实例介绍

【实例简介】
对Python操作DICOM文件进行介绍
开始使用 pydicom 对 pydicom的简短介绍以及如何安装 pydicom 介绍 pydicom是个纯 Python包,用于处理Dl(OM文件,例如医疗图像,报告和放射物体 Pydicom使得可以使用极为简单的操作就可以以 Python提供的结枃读取那些十分复杂 的文什,经过修改之后的数据也可以被重新写回DCOM类型的文件中。 以下是一个在交互式会话中使用 pydi com的简单示例,阅读放射治疗方案文件,将患者 设置从头顶仰卧位改为首先倾向,并保存到新文件中 >>>from pydicom import dicomio >>>ds= dicomio read file( "rtplan dcm")# plan dataset >>> ds. patientname Last Firstmidpre >>>ds, dir("setup")# get a List of tags with setup"somewhere in the name ['Patientsetupsequence'I >>>ds. Patientsetupsequence lo] (0018, 5100 Patient Position CS: HFS (300a, 0182)Patient Setup Number 工S:"1 (300a, 01b2)Setup Technique Description ST >>>ds, Patientsetupsequence[o]. PatientPosition ="HFP >>>ds, save as("rtplan2 dcm") Pydicom并不是一个 DICOM的服务器,也不关心可以显示图片。它被设计用来让你可以 使用 Python语言来操作 DICOM文件中的数据元素 卩 dicom安装和使用都十分简单,由于是纯 Python包, Python运行的地方,其都可以 行 Pydicom有个局限:压缩过的像素数据(例如JPG)不能以·种智能的方式改变 位他可以用于未经压缩过的像素数据。文件可以被读取,也可以被保存,但是压缩过的像素 数据不能被轻易的更改。 许可 Pydicom基于MIT许可 安装 作为个纯 Python包, pydicom可以很容易地安装,并且除了 Python本身之外,没有 其他的任何要求(Numυy库只是作为推荐安装,如果需要操作像素数据,还有需要安装其他 的库)。 注意:除了以下说明之外, pydicom也可以通过 Python(x,y)分发来安装,它可以一次 安装 python和些软件包(包括 pydicom)。 前提条件: Python2.6,2.7,3.3以及之后更新的版本 2、 NumPy(可选,只在需要操作像素数据的吋候需要安装) ME: To run unit tests when using python 2. 6, Unittest2 is required Python安装程序可以在 Python官网下载(htp:// python.org/ download/)。 使用pip安装【全平合) 使用pip安装 pydi com是最为方便的方式e pip install pydicom 由于使用的 Python版本不同,可能会现·些警告信息,但是安装依然可以进行。 注意: Python3.x版本中已经预装了pip 从源文件中安装(全平台) 直接下载源代码,或使用 Github桌面应用程序克隆 repo。 2、在命令行终端中,移动当前目录到包含 setup.py的目录中. 3、使用管理员权限,运行 python setup. py insta11 4、在一些1inux衍生版中,可能会使用 sudo python setup. py insta1l 5、在另外一些1inux衍生版中,在运行命令之前需要使用su命令获取权限。 在Mac在安装 推荐使用上述的pip安装方法。但是,先前存在 MacPorts portfire,改文件由其他用 户维护的,可能不会立即达到最新版本 使用 pydicom 旦安装完成,该 Py thon包可以在命令行中直接导入,也亦可通过 import pydicom在 你的 Python程序中使用。 Dicom的用法请参看样例。获取关于如何使用该 Py thon包的更多 细节,也可参考用户指南。 支持 Please join the pydicom discussion group to ask questions or give feedback. Bugs can be submitted through the issue tracker. Besides the example directory cookbook recipes are encouraged to be posted on the wiki page New versions, major bug fixes, etc. will also be announced through the group 下一步 参看 pydicom用户指南,开始学习如何使用 pydicom Pydicom用户指南 Pydicom对象模型,类介绍以及样例 数据集( Dataset Dataset是您将直接使用的主要对象。 Dataset源自于 Python当中的宇典结构(dict) 所以它继承了(重写了一些)字典当中的方法。换句话说,它是一个键值对的集合,其中, 键就是 DICOM(组( group),元素( element)〕标签(将仁下面的文章中谈到),而值就是数 据元素( Dataelement)的实例( instance)。 个 Dataset可以被直接创建,但是多数情况下您可以从读取个已经存在的DCOM文 件获取一个数据集。 >>> import pydicom >>>ds pydicom read file( "rtplan, dcm")# (rtplan dcm is in the testfiles directory 只是简单地打印字符串,可以直接输出整个 dataset >>>ds (0008, 0012) Instance Creation Date DA:28939983 (0008, 0013) Instance Creation Time TM:1159931 0016) SoP Class UID UI: RT Plan Storage (0008, 0018)SOP Instance UID U 2.777.777,77.7.7777.7777.29939993158023 (0008, 0020) Study Date DA:20938716 (0008, 0030)Study Time TM:"153557 (0008, 0050) Accession Number (0008, 0060)Modality CS:RTPLAN 注意:您还可以使用示例程序 dcm qt tree.py在可折叠树中查看 DICOM文件。 你可以到达任何一个特定的数据元素通过名称( DICOM keyword)或者 DICOM标签数字 (tag number )o >>>ds, patientName Last First midpre >>>ds[0x10, 0x10] value LastAFirstmidpre 在后一种方式(直接使用标签数字( tag number))中,返回的是一个数据元素的实例 ( dataelement instance),所以需要使用. value获取相应的值 你也可以通过名称( DICOM keyword)或者标签数字( tag number)来设定相应的值。 >>>ds, patientIa =12345 >>> ds. SeriesNumber =5 >>>ds[ox10, 0x10] value =Test 使用名称是可能的,因为 pydicom拦截对成员变量的请求,并检査它们是否在 DICOM字 典中。它将关键字转换为(组,元素)编号,并返回该键的相应值(如果存在凶话) 要了解在 pydicom中使用 Sequences,请参考此对象模型: 数据集(派生自 python' s dict) >包含 Datae1emen实例 数据元素的值可以是以卜之 像数字,字符串等的常规值 常规值的列表(例如3D坐标) 个序列实例 一个序列是一个数据集的列表 DICOM序列变成 py thon列表。序列中的项目由数宁引用,从索引0开始,按照 python 约定: >>>ds. BeamSequence[o]. BeamName Field 1 推荐使用 DICOM keyword获取数据元素,但是依然可以直接使用 tag number。如 >>> Same thing with tag numbers: >>>ds[ex300a, 0xbo][o[0x300a, 0xc2.value Field 1 >>> yet another way, using another variable >>> beam1=ds [ox300a, obolo] >>>be am1. BeamName, beam[0X300a, 0xC2. value ('Field 1','Field 1) 如果你不知道确切的标签名称, Dataset提供了一个非常便捷的方法dir(),在 py thon 提示符下的交互式会话中很有用 >>>ds.dir("pat") I'PatientBirthDate,'PatientID,'PatientName,'Patientsetup Sequence Patientsex’ dir(将返回数据集中具有指定字符串的任何 DICOM标记名称(不区分大小写)。 注意:直接调用dir,不带任何字符串参数将会列举出 Dataset中所有可使用的tag name s o 您还可以通过查看 di com dict.py文件来查看 pydicom包含的所有名称。您可以修改 该文件以添加 pydicom不包含的标签 Dataset存储每个项目的 Dataelement对象,但是当通过名称访问(例如ds. Patient Name) 时,仅返回该 Dataelement的值。如果您需要整个 Dataelement(请参阅 DatableⅢent类 讨论),您可以使用 Datasct的 data clement()方法或使用标签号访问该项目 >>>data element ds data element("Patients Name")# or data element ds/0x10, 0x10/ >> data element vr. data element. value (PN,'Last FirstAmidpre') 要在使用之前检查特定标签的是否存在,请使用i关键字: >>>PatientName in ds True 要从数据集中删除数据元素,请使用del: >>>del ds. SoftwareVersions or del ds/0x0018, 0x1020] 要处理像素数据,原始字节可通过通常的标签使用 >>> pixel bytes ds PixelData 但是要以更智能的方式使用它们,请使用 pixel array(需要№umPy库): >> pix =ds.pixel array 获取更多细节信息,参看使用像素数据。 数据元素( Dataelement) DataElement类通常不直接用在用户代码中,而是被 Dataset广泛使用。 Dataelement 是一个简单的对象,它存储以下内容 标签- DICOM标签(作为标签对象) VR-DICO值表示-各种数字和字符串格式等 WM一值多重性。对于大多数DCOM标签,这是1,但可以是多个,例如。用于坐标。 您不必指定, Dataelement类会根据值跟踪它。 值-实际值。像数字或字符串(或其列表)或序列的常规值。 标签(Tag) Tag类派生自 python int,所以实际上它只是一个数字,有一些额外的操作 1、标签强制 DICOM标签符合预期的4字节(组,元素) 2、标签实例可以从int或从包含(组,元素)的元组分别创建 >>>from pydicom tag import Tag >>>t1=Tag(0x00100010)# aLl of these are equivalent >>>t2=Tag(0×10,6x10) >>t3=Tag((6x19,9×18)) >>>t1 (0819,0810) >>>t1==t2,t1==t3 (True, True) 3、标签具有返回组和元素部分的属性组和元素(或elem) 4、is_ private属性检查标签是否代表私有标签(即组号是奇数) 序列( Sequence) 序列源自 python的列表。唯一添加的功能是使宁符串表示更漂亮。否则可以使用所 有常用的列表选项,如项目选择,追加等 过渡到 pydicom1X 关于 pydicom后1.0和1.0之前的差异的重要信息 介绍 作为主要软件的版本号更改, pydicom1.0在很多方面打破了发行的版本号为 pydicom0.9.9及其之前的版本所使用的规则。这些需要更改用户代码来定位 pydicom 1.0包,或者检查和处理版本之间的差异 向后兼容1.0版本之后的改变 、库名称不再是 dicom,而是 pydicom,已匹配包名 2、不再使用诸如 Beams之类的短名称,使用完整的关键字,如 Beam Sequence 3、 pydicom中的一些较少使用的模块已被重命名,例如 dicom.UID现在是 pydicom.uid。 为什么包名更改了?这种变化有几个原因 1、包和已安装的库具有相同的名称是标准的 py thon实践 2、用户第一次使用时,期望能够输入 pydicom而不是导入 dicom,这引起了混乱 这对搜索引擎是有意义的-使用止确的名称,更容易在线查找相关问题和示例代码 该决定不是轻率的,而是对 github的问题列表进行了大量的讨论。做出飞跃,本指南 的其余部分应该有助于顺利进行. 对于需要 pydicom的版本小于10的软件包的开发人员 旧的 pydicom版本已经被拆分成自己的包,称为 dicom,它现在托管在PyPI上。这样 就可以使旧的库 dicom与新的库 pydicom一起共存。 以确保你的旧的 pydicom代码将保持运行,需要做的主要事情有: 1、在你现有的 pydicom安装中,你应该运行 pip uninstall pydicom(卸载 pydicom)和 pip insta1 dicom(安装 dicom)命令。 2、如果你有 requirements.txt文件,在 pydicom那一行,将“ py dicom”改为“ dicom” 如 pydicom=8.9.9变为 dicom=0.9.9 3、给用户更改你的指令:使用 pip insta1 dicom而不是 pip install pydicomc 【实例截图】
【核心代码】

标签:

实例下载地址

Pydicom用法简介

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警