当我们使用不同的传输语法从CharruaSoft sendscu工具发送DICOM时,为什么dcm4che会创建巨大的文件?

当我们使用不同的传输语法从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

我有几个16位和8位DICOM文件,我正在使用CharruaSoft sendscu工具将它们传输到dcm4che StoreSCP

对于16位文件来说,它可以正常工作,但是对于8位简单的2MB文件,它会生成一个巨大的90MB文件

我尝试从dcm4che本身使用StoreSCU发送,效果很好。 但它从CharruaSoft SendSCU创建了巨大的文件

复制步骤:

  • 下载
  • 设置dcm4che工具SCP maven项目
  • 使用
    --help
    中给出的正确参数运行java的main方法
  • 使用CharruaSoft SendSCU发送16位DICOM,工作正常
  • 现在发送一个8位DICOM,它可以工作,但会创建一个巨大的文件,在我的例子中,2MB变成了90MB
  • 首先,我认为这可能是CharruaSoft SendSCU的问题,但CharruaSoft SendSCU能够正确地发送到其他SCP,例如:mymedicalimages.com

    有没有人已经面临过类似的问题

    编辑:

    如果我从CharruaSoft sendscu中选择JPEG有损8位压缩,它可以工作,不会创建一个90 mb的大文件。
    但我无法控制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
    在上述任何情况下,StoreSCU都不会解压缩图像,也不会出现大小问题。也许你应该得到与上面类似的日志

    CharruaSoft SendSCU能够正确地发送到其他SCP,例如:mymedicalimages.com

    如果在一台PC中建议多个TS,则由SCP决定接受哪个TS。由于您提到的SCP托管在internet上,很可能它会优先接受有损TS(以提高性能和节省带宽),因此生成的文件大小很小。你应该检查他们的一致性声明。如果你上传到这里,我可以帮你一点忙

    如果我从CharruaSoft sendscu中选择JPEG有损8位压缩,它可以工作,不会创建一个90 mb的大文件

    以下是这种情况下的关联日志:

    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>