创建我自己的DICOM标头

时间:2015-11-12 13:43:34

标签: python header dicom

我有兴趣创建自己的DICOM标题,但遵循标准格式。我不知道从哪里开始使用代码,我看到有没有人做过类似的事情。我选择的编程语言是python。谢谢!

3 个答案:

答案 0 :(得分:2)

我可能参加聚会晚了,但是我注意到没有人提到DCMTk工具和库套件,还有GDCM。两者都是免费和开源的。我以库和命令行工具的形式在各​​种应用程序中使用DCMTk。 dcmdump工具将以可读的ASCII格式从DICOM文件中提取头数据,而dump2dcm工具将获取具有DICOM标签和属性的ASCII文件并将其转换为DICOM文件。尽管这些工具都是用C ++编写的,但是它们背后的逻辑应该很明显地适用于其他语言。如果没有其他功能,这些工具将使您能够检查并验证代码是否在做正确的事情。

答案 1 :(得分:1)

我已经完成了该领域的工作,这是一个相当狭窄的领域,我不确定答案是否会很多,甚至我的回答可能还不够。

我将首先命名两个您应该检查的链接:

它们基本相同,但其中一个是官方RFC网站。

如果我没有弄错或误解您的问题,那么您正在查看的通信基本上是使用不同媒体类型(MIME类型)的标准HTTP数据传输。所以你应该对它很熟悉,但如果它不是,你有兴趣分析那种流量类型,我建议使用WireShark或创建一个处理流量的透明代理脚本:Server --> proxy script --> client并分析转移。 (wireshark也会这样做)

如果你想解码数据本身,它是一个Base64编码的二进制字符串,而且通常是“多部分”意味着数据在一次传输中不完整,你需要根据一个会话构建每次数据传输时发送的信息。

我找不到我曾经使用过的代码库(从那时起已经改变了两次工作,可能没有代码的副本)。但我发现这个链接向您展示了二进制数据的基本用法示例:

果然它是C#而不是Python,但你可以看到一些数据示例和结构的长度。

还有这个图书馆:PyDICOM
我没有尝试过,但是我把它扔出去了。

答案 2 :(得分:0)

如果我理解你的问题,你想编写代码来编写自己的dicom文件。如果您想深入了解dicom格式,这是一个很好的练习。您需要做的是首先阅读规范或其他解释,例如https://www.leadtools.com/sdk/medical/dicom-spec1

接下来,我将获得一个二进制编辑器并查看几个dicom文件,以查看某些文件的外观并将它们与规范说明进行比较。

然后编写一些代码来输出一些标签。获取几个文件并尝试从您自己的代码复制现有文件。最后构建一个dicom dump实用程序或获取一个。然后,您可以将自己的测试与现有文件一起转储,以确保它们匹配。