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

标签 dicom dcm4che

我有一些 16 位和 8 位 DICOM 文件,我正在使用 CharruaSoft Sendcu 工具将其传输到 dcm4che StoreSCP。

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

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

重现步骤:

  1. 下载 CharruaSoft SendSCU
  2. 设置 dcm4che 工具 SCP maven 项目。
  3. 使用 --help 中给出的正确参数运行 java 的 main 方法。
  4. 使用CharruaSoft SendSCU发送16位DICOM,效果很好。
  5. 现在发送一个 8 位 DICOM,它可以工作,但会创建一个巨大的文件,在我的例子中,2 MB 变成了 90 MB。

首先,我认为这可能是 CharruaSoft SendSCU 问题,但 CharruaSoft SendSCU 能够正确发送到其他 SCP,例如:mymedicalimages.com。

有人遇到过类似的问题吗?

编辑:

如果我从 CharruaSoft Sendcu 选择 JPEG 有损 8 位压缩,它可以工作并且不会创建 90 MB 的巨大文件。
但我无法控制 CharruaSoft sendSCU 工具。我希望 java dcm4che SCP 来处理这个问题。

编辑 2: 如果我只是用正确的语法覆盖传输语法也可以,这样它将 dicom 文件保存为精确大小的文件。

最佳答案

我使用 SendSCU 调试了您的问题。

我得到了一张经过 JPEG 2000 有损压缩的图像。我与我的 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。

for 8 bit simple 2 MB file it generates a huge 90 MB file.

这是因为您的 SCP 正在接受首次传输语法并将 ASSOCIATE-ACCEPT 发送回 SendSCU。然后,SendSCU(如预期)动态解压缩图像,从而增加大小。

I tried to send using StoreSCU from dcm4che itself and it works fine.

我确信 StoreSCU 一定会提议:

  • 只有一个 TS - 有损的 TS 或
  • 多个 TS,每个 TS 位于单独的 PC 中。 SCP 接受每台 PC。 StoreSCU 使用最好的一个 - 有损 OR
  • 多个 TS,顶部有有损 TS

在上述任何一种情况下,StoreSCU都不会解压缩镜像,也不会有大小问题。也许您应该得到与上面类似的日志。

CharruaSoft SendSCU is able to send to other SCPs for eg: mymedicalimages.com properly.

如果在一台 PC 中提出多个 TS,则由 SCP 决定接受哪个 TS。由于您提到的 SCP 托管在互联网上,很可能它优先接受有损 TS(以提高性能并节省带宽),因此生成的文件大小很小。您应该检查他们的一致性声明。如果您将其上传到此处,我可能会提供一些帮助。

If I select JPEG lossy 8 bit compression from CharruaSoft sendscu, it works and doesn't create a huge 90 mb file.

以下是该情况下的关联日志:

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 接受它并且一切正常。

But I have no control over CharruaSoft sendSCU tool. I want java dcm4che SCP to handle that.

我从未使用过 dcm4che 工具;我在这里帮不了什么忙。您可以查看 dcm4che 文档,了解如何配置接受 PC 中建议的 TS。希望有一个设置/开关来处理该行为。如果你想用 SCP 即时处理这个问题,这是你唯一的方法。

其他替代方案是使用 -t 开关进行离线 TS 转换,如所述 here .

-t,--transfer-syntax <uid>

transcode sources to specified Transfer Syntax. At default use Explicit VR Little Endian

关于dicom - 当我们使用不同的传输语法从 CharruaSoft Sendcu 工具发送 DICOM 时,为什么 dcm4che 会创建巨大的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56017266/

相关文章:

maven-3 - 将 DCM4CHE 库添加到 Maven 项目

java - 我如何在 JAVA 中进行查询/检索?

c# - 如何将没有扩展名的 DICOM 文件转换为 .png 文件或 .jpg 文件?

dicom - 发送到 PACS 时设置修改后的 DICOM SUID

javascript - 如何手动解码 JPEG 无损、非分层、一阶预测

matlab - 以 PNG 格式保存 DICOM 图像

java - 如何在 Java 中使用 dcm4che3 创建 DICOM MWL 查询?

dicom - 如何修改存储的dcm文件