13个不稳定版本

0.7.1 2024年8月13日
0.7.0 2024年4月25日
0.6.2 2023年11月21日
0.6.0 2023年7月23日
0.1.0 2019年8月31日

#1768解析器实现

Download history 1098/week @ 2024-05-03 1537/week @ 2024-05-10 1093/week @ 2024-05-17 1074/week @ 2024-05-24 805/week @ 2024-05-31 600/week @ 2024-06-07 610/week @ 2024-06-14 683/week @ 2024-06-21 895/week @ 2024-06-28 888/week @ 2024-07-05 695/week @ 2024-07-12 655/week @ 2024-07-19 720/week @ 2024-07-26 731/week @ 2024-08-02 1065/week @ 2024-08-09 998/week @ 2024-08-16

3,656 每月下载量
用于 22 个crate (9直接)

MIT/Apache

765KB
15K SLoC

DICOM-rs transfer-syntax-registry

CratesIO Documentation

此子项目实现了一个可选扩展的DICOM传输语法的注册表。

基于inventory的实现可以通过Cargo特性inventory-registry使用。 inventory允许用户以编译时插件的方式注册新的传输语法实现,但并非所有环境都支持它(如WebAssembly)。


lib.rs:

此crate包含DICOM传输语法注册表。

传输语法注册表将传输语法(TS)的DICOM UID映射到相应的传输语法指定符。此指定符定义

  1. 如何读取和写入DICOM数据集;
  2. 如何解码和编码像素数据。

支持可能是不完整的,在这种情况下,可以检索数据集,但像素数据可能无法通过DICOM-rs生态系统解码。默认情况下,封装像素数据的适配器需要由依赖项目(如dicom-pixeldata)显式添加。当自己添加dicom-transfer-syntax-registry以包括对某些封装像素数据的传输语法的支持时,请添加native Cargo特性或可用的其他图像编码特性之一。

默认情况下,提供一组固定已知传输语法作为内置。此外,可以通过inventory模式扩展更多TS支持,在该模式下,注册表在主函数之前自动填充。这是通过启用Cargo特性inventory-registry来实现的。可以在不支持inventory的环境中禁用此功能,缺点是只能提供内置传输语法。

所有注册的TS都将通过TransferSyntaxRegistry类型轻松获得。

该注册表旨在用于高级API的开发,这些API应学习自动协商和解决预期的传输语法。

传输语法

本软件包包含基本的DICOM符合性级别,并支持一些具有压缩像素数据的传输语法。隐式VR小端显式VR小端显式VR大端完全支持。对依赖于封装像素数据的传输语法的支持可能有所不同。

传输语法 解码支持 编码支持
JPEG基线(过程1) Cargo功能 jpeg
JPEG扩展(过程2 & 4) Cargo功能 jpeg x
JPEG无损,非分层(过程14) Cargo功能 jpeg x
JPEG无损,非分层,一阶预测(过程14 [选择值1]) Cargo功能 jpeg x
JPEG 2000(仅无损) Cargo功能 openjp2openjpeg-sys x
JPEG 2000 Cargo功能 openjp2openjpeg-sys x
JPEG 2000第2部分多组件图像压缩(仅无损) Cargo功能 openjp2openjpeg-sys x
JPEG 2000第2部分多组件图像压缩 Cargo功能 openjp2openjpeg-sys x
RLE无损 Cargo功能 rle x

Cargo功能背后的 nativejpegrle)提供纯Rust编写的实现,可能在所有支持的平台上可用。但是,可能无法始终提供本地实现,或者可能更喜欢替代实现。

  • openjpeg-sys提供了对OpenJPEG参考实现的绑定,该实现是用C编写的并进行了静态链接。它可能比纯Rust实现提供更好的性能,但不能用于WebAssembly。要构建具有多线程的OpenJPEG,请包含openjpeg-sys-threads
  • openjp2提供对OpenJPEG计算机翻译Rust端口的绑定。由于此软件包的性质,它不适用于所有支持的平台。

由于无法读取数据集或解码封装的像素数据而不受支持的传输语法被列为存根以提供部分支持。完整的列表可在entries模块中找到。如果使用基于清单的注册表,这些存根也可能被单独的库所取代。

依赖关系

~6–13MB
~131K SLoC