2024-05-17 03:20:17 发布
网友
解析DICOM文件的最简单、最恶毒的方法是什么?
最好是不使用非Python库的本地Python实现。DICOM是数字医学成像中的标准文件格式(有关详细信息,请参阅here)。
这些天我在大量使用pydicom,而且它很厉害。
开始玩它很容易:
import dicom data = dicom.read_file("yourdicomfile.dcm")
要从“data”对象中获取有趣的内容,以某种方式类似于dcmdump输出:
for key in data.dir(): value = getattr(data, key, '') if type(value) is dicom.UID.UID or key == "PixelData": continue print "%s: %s" % (key, value)
我认为了解dicom格式的一个很好的方法是打开类似的文件,编写代码,根据不同的方面对它们进行比较:学习描述、窗口宽度和中心、像素表示等等。
玩得开心!:)
如果你想了解DICOM格式,Oleg Pianykh的《医学数字成像与通信(DICOM):实用介绍与生存指南》(DICOM:A Practical Introduction and Survival Guide)是一本可读性很强的书,它很好地介绍了DICOM的关键概念。斯普林格·维拉格是这本书的出版商。当然,完整的DICOM标准是最终的参考,尽管它有点吓人。可从NEMA(http://medical.nema.org)获得。
文件格式实际上比您想象的要不那么深奥,它由一个前导码和一系列数据元素组成。前导码包含ASCII文本“DICM”和几个未使用的保留字节。前导之后是一系列数据元素。每个数据元素由元素的大小、表示值表示的两个字符的ASCII代码、DICOM标记和值组成。文件中的数据元素按其DICOM标记号排序。图像本身只是另一个具有大小、值表示等的数据元素
值表示确切地指定了如何解释该值。是个号码吗?是字符串吗?如果是字符串,是短字符串还是长字符串?允许使用哪些字符?值表示代码告诉您这一点。
DICOM标记是一个4字节的十六进制代码,由一个2字节的“组”号和一个2字节的“元素”号组成。组号是一个标识符,它告诉您标签应用于哪个信息实体(例如,组0010表示患者,组0020表示研究)。元素编号标识值的解释(如患者的ID号、序列描述等)。为了找出应该如何解释该值,您的代码在字典文件中查找DICOM标记。
还有其他一些细节,但这是它的本质。也许学习文件格式最有启发性的事情就是以一个DICOM文件为例,用hex编辑器查看它,然后在思想上分析它。我建议不要试图通过查看现有的开源实现来了解DICOM,至少在最初是这样。它更容易混淆而不是启发。了解全局更为重要。一旦你掌握了大局,你就可以进入微妙的阶段。
从今天起,还有一个纯Python包可以读取DICOM文件:pydicom
这些天我在大量使用pydicom,而且它很厉害。
开始玩它很容易:
要从“data”对象中获取有趣的内容,以某种方式类似于dcmdump输出:
我认为了解dicom格式的一个很好的方法是打开类似的文件,编写代码,根据不同的方面对它们进行比较:学习描述、窗口宽度和中心、像素表示等等。
玩得开心!:)
如果你想了解DICOM格式,Oleg Pianykh的《医学数字成像与通信(DICOM):实用介绍与生存指南》(DICOM:A Practical Introduction and Survival Guide)是一本可读性很强的书,它很好地介绍了DICOM的关键概念。斯普林格·维拉格是这本书的出版商。当然,完整的DICOM标准是最终的参考,尽管它有点吓人。可从NEMA(http://medical.nema.org)获得。
文件格式实际上比您想象的要不那么深奥,它由一个前导码和一系列数据元素组成。前导码包含ASCII文本“DICM”和几个未使用的保留字节。前导之后是一系列数据元素。每个数据元素由元素的大小、表示值表示的两个字符的ASCII代码、DICOM标记和值组成。文件中的数据元素按其DICOM标记号排序。图像本身只是另一个具有大小、值表示等的数据元素
值表示确切地指定了如何解释该值。是个号码吗?是字符串吗?如果是字符串,是短字符串还是长字符串?允许使用哪些字符?值表示代码告诉您这一点。
DICOM标记是一个4字节的十六进制代码,由一个2字节的“组”号和一个2字节的“元素”号组成。组号是一个标识符,它告诉您标签应用于哪个信息实体(例如,组0010表示患者,组0020表示研究)。元素编号标识值的解释(如患者的ID号、序列描述等)。为了找出应该如何解释该值,您的代码在字典文件中查找DICOM标记。
还有其他一些细节,但这是它的本质。也许学习文件格式最有启发性的事情就是以一个DICOM文件为例,用hex编辑器查看它,然后在思想上分析它。我建议不要试图通过查看现有的开源实现来了解DICOM,至少在最初是这样。它更容易混淆而不是启发。了解全局更为重要。一旦你掌握了大局,你就可以进入微妙的阶段。
从今天起,还有一个纯Python包可以读取DICOM文件:pydicom
相关问题 更多 >
编程相关推荐