我有兴趣创建自己的DICOM标题,但遵循标准格式。我不知道从哪里开始使用代码,我看到有没有人做过类似的事情。我选择的编程语言是python。谢谢!
答案 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实用程序或获取一个。然后,您可以将自己的测试与现有文件一起转储,以确保它们匹配。