当我们使用不同的传输语法从CharruaSoft sendscu工具发送DICOM时,为什么dcm4che会创建巨大的文件?
我有几个16位和8位DICOM文件,我正在使用CharruaSoft sendscu工具将它们传输到dcm4che StoreSCP 对于16位文件来说,它可以正常工作,但是对于8位简单的2MB文件,它会生成一个巨大的90MB文件 我尝试从dcm4che本身使用StoreSCU发送,效果很好。 但它从CharruaSoft SendSCU创建了巨大的文件 复制步骤:当我们使用不同的传输语法从CharruaSoft sendscu工具发送DICOM时,为什么dcm4che会创建巨大的文件?,dicom,dcm4che,Dicom,Dcm4che,我有几个16位和8位DICOM文件,我正在使用CharruaSoft sendscu工具将它们传输到dcm4che StoreSCP 对于16位文件来说,它可以正常工作,但是对于8位简单的2MB文件,它会生成一个巨大的90MB文件 我尝试从dcm4che本身使用StoreSCU发送,效果很好。 但它从CharruaSoft SendSCU创建了巨大的文件 复制步骤: 下载 设置dcm4che工具SCP maven项目 使用--help中给出的正确参数运行java的main方法 使用Charrua
--help
中给出的正确参数运行java的main方法但我无法控制CharruaSoft sendSCU工具。我想让JavaDCM4cheSCP来处理这个问题 编辑2:
如果我只是用正确的传输语法替代传输语法也可以,这样可以将dicom文件保存为精确大小的文件。我用SendSCU调试了您的问题 我得到了一张JPEG2000有损压缩的图像。我用它与我的SCP建立了连接,并推送了图像 以下是关联日志:
Implementation Version: CharruaSoft
Maximum PDU Size: 16384
Called AE Title: remote
Calling AE Title: local
Presentation Contexts: 1
Presentation Context: 1 [Proposed]
Abstract: CT Image Storage
Transfer: Explicit VR Little Endian
Transfer: JPEG 2000 Image Compression
Transfer: Implicit VR Little Endian: Default Transfer Syntax for DICOM
请注意,SendSCU只建议使用一个表示上下文(PC),其中包含三个传递语法。现在由SCP决定接受哪种TS。好消息是,SCU自动检测要发送的图像的原始TS
对于8位简单2MB文件,它会生成一个巨大的90MB文件
这是因为您的SCP正在接受第一次传输语法,并将ASSOCIATE-ACCEPT
发送回SendSCU。然后,SendSCU(如预期的那样)动态解压缩图像,从而增加大小
我尝试从dcm4che本身使用StoreSCU发送,效果很好
我相信StoreSCU一定在提议:
- 只有一个TS-有损的一个或多个TS
- 在单独的PC中有多个TS。SCP接受每台PC。StoreSCU使用最好的有损或有损TS
- 顶部有损耗的多个TS
Implementation Version: CharruaSoft
Maximum PDU Size: 16384
Called AE Title: remote
Calling AE Title: local
Presentation Contexts: 1
Presentation Context: 1 [Proposed]
Abstract: CT Image Storage
Transfer: JPEG 2000 Image Compression
Transfer: Implicit VR Little Endian: Default Transfer Syntax for DICOM
请注意,JPEG 2000是这里提出的第一个TS。SCP接受它,一切正常
但我无法控制CharruaSoft sendSCU工具。我想让JavaDCM4cheSCP来处理这个问题
我从未使用过dcm4che工具;我在这里无能为力。您可以查看dcm4che文档,了解如何配置PC中建议接受的TS。希望有一个设置/开关来处理该行为。如果您想在运行中使用SCP处理此问题,这是您唯一的方法
另一种选择是使用-t
开关进行脱机TS转换,如前所述
-t,--transfer语法
将源代码转换为指定的传输语法。默认情况下,使用显式VR Little Endian
这看起来很可疑,您的8位文件可能是有损压缩的,dcm4che正在存储该文件的未压缩版本。有没有办法查看发送前后的编码?我无法控制sendSCU工具,但如果我从sendSCU选择JPEG有损8位压缩,它可以工作,不会创建一个90 mb的大文件。但我想让JavaDCM4che来处理这个问题
-t,--transfer-syntax <uid>