什么是最简单和最python的方式来分析一个物的文件?

本机Python执行而不使用非蟒蛇图书馆将更优先。物是标准格式的文件在数字的医疗成像(看起来 在这里, 更多信息)。

有一些C/C++库,支持阅读(a子集)的物文件。两个或三个他们甚至有Python绑定。本机Python分析器将服务于两个目的,对我说:

  1. 没有必要建立任何外部C/C++库。
  2. 了解有关物文件的格式。
有帮助吗?

解决方案

截至今天,还有另一个纯Python包可以读取DICOM文件: pydicom

其他提示

这些天我正在大量使用 pydicom 。 / p>

开始玩它很容易:

import dicom 
data = dicom.read_file("yourdicomfile.dcm")

从“数据”中获取有趣的东西。对象,某种类似于 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格式,请参阅“医学数字成像和通信(DICOM):实用入门和生存指南”。作者:Oleg Pianykh非常易读,并对关键的DICOM概念进行了很好的介绍。 Springer-Verlag是本书的出版商。当然,完整的DICOM标准是最终的参考,尽管它有点令人生畏。它可以从NEMA( http://medical.nema.org )获得。

文件格式实际上不如您想象的那么深奥,并且由前导码后跟一系列数据元素组成。前导码包含ASCII文本“DICM”。以及几个未使用的保留字节。序言之后是一系列数据元素。每个数据元素由元素的大小,表示值表示的双字符ASCII码,DICOM标记和值组成。文件中的数据元素按其DICOM标记号排序。图像本身只是另一个具有大小,值表示等的数据元素。

值表示确切地指定了如何解释该值。这是一个数字吗?它是一个字符串吗?如果是字符串,是短字还是长字,允许哪些字符?值表示代码告诉您。

DICOM标签是由2字节“组”组成的4字节十六进制代码。数字和2字节“元素”数。组号是一个标识符,用于告诉您标签应用于哪个信息实体(例如,组0010指的是患者,组0020指的是研究)。元素编号标识值的解释(诸如患者的ID号,系列描述等项目)。要了解如何解释该值,您的代码将在字典文件中查找DICOM标记。

还涉及其他一些细节,但这就是它的本质。您可以做的最有意义的事情是了解文件格式,可以使用示例DICOM文件,使用十六进制编辑器查看它,然后完成解析它的过程。我建议不要试图通过查看现有的开源实现来了解DICOM,至少在最初阶段。它更容易混淆而不是启发。全局了解更为重要。一旦你掌握了全局,那么你就可以陷入微妙之中。

上面提到的 pydicom 库似乎是一个访问DICOM数据结构的绝佳库。用它来访问例如RT DOSE数据,我想有人会做类似

的事情
import dicom,numpy
dose = dicom.ReadFile("RTDOSE.dcm")
d = numpy.fromstring(dose.PixelData,dtype=numpy.int16)
d = d.reshape((dose.NumberofFrames,dose.Columns,dose.Rows))

然后,如果你在mayavi,

from enthought.mayavi import mlab
mlab.pipeline.scalar_field(d)

这会给出错误的坐标和剂量缩放,但原则应该是合理的。

CT数据应该非常相似。

现在发生了更新的gdcm开发:

http://gdcm.sourceforge.net/

它支持python上的Java和C#。

为什么要编写又一个 dicom实现,当您可以集中单个C ++实现并让它可以访问这么多不同的语言时

几年前我一直在寻找相同的东西并发现了这个: Python DICOM lib

我对代码印象不是很深刻,但它是本机Python读取DICOM文件。

物是一个真正的疼痛...即使制造商的标准。如果你写你自己的物图书馆,你会发现不同的制造商DICOMs是有效地与其他供应商[引文。

我尝试了(在我的业余时间)编写C物分析器借重从一个漂亮的小红宝石parser我碰巧妙地叫做'红宝石-物'.它实际上是非常可读的编码(我看着一个较小的早期版本)。

最头痛是试图积累的库的标题标记与预期的数据类型。有的标准定义的标签和商标签。红宝石物的文件包含一个图书馆的标签,在一个文本格式,可以很容易检查。

我放弃了官方的文献,因为我是唯一感兴趣的文件的格式似乎只能在10个或以巨大的Pdf文件。

我当地的物件文件不被压缩,并按照标准便于代码位安排,但是准备对各种压缩和奇怪的12位的图像存储在8位的集装箱或大或小的字节序和没有填补的位...

我放弃了一次时间变得非常匮乏。

蟒蛇可能是一个更好的选择,而不是C对于这种风格的头分析虽然...

有一些图书馆(最常实现C/C++)与Python绑定,例如:

然而,我在寻找一个司机Python执行情况,以了解更多有关物文件的格式。

我想知道原始海报尝试了什么以及哪些方法有效并且不适用于他。我从未使用过DICOM,但快速谷歌搜索“DICOM python”给了几个有趣的结果。看来这个项目: http://www.creatis.univ-lyon1.fr / Public / Gdcm / 应该提供您想要的。它有python绑定和非常活跃的邮件列表。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top