如何使用纯C或C++文件读取方法解析DICOM文件

How can I parse a DICOM file using plain C or C++ file read methods?

本文关键字:文件 读取 方法 DICOM C++ 何使用      更新时间:2023-10-16

我不是在寻找一个预先存在的库来读取DICOM文件。我正在寻找一些可以读取DICOM文件并对其进行解析的示例代码。我需要从头开始写代码。我知道有很多很棒的库可用,但我需要使用老式的C或C++文件读取方法手动读取DICOM文件。不要把时间浪费在建议图书馆上。没有什么反对图书馆的!我只需要手动完成。

具体来说,我需要知道如何访问DICOM文件中的值(最重要的是:像素值)。这将有助于了解数据类型、大小和格式(我知道在DICOM中可能会有很大变化)。

谢谢!-j

我倾向于说"不要这样做",但你已经表明,你有自己的理由想要编写自己的解析器——我该争论谁呢!DICOM标准第5部分(数据结构和编码)和第6部分(数据字典)描述了DICOM文件的"数据类型、大小和格式"。这两个部分都可以在网上以各种格式免费提供http://www.dclunie.com/dicom-status/status.html#BaseStandard2015a.

图像的像素数据存储在带有标签(7fe00010)的属性中。如果图像未被压缩,像素数据将是一个字节串。否则,"像素数据"属性将是"序列"属性,第二个序列项将包含封装的压缩像素数据。

编辑:在对类似问题的回答中,也有一些有用的高层信息。。。https://stackoverflow.com/a/213987/1220389

第2版:DICOM标准的"2014b"版本包括对"参数化地图存储IOD"的支持。"参数化贴图"对象是衍生图像,很像我们熟悉的获取图像对象,但参数化贴图的像素值具有内在的定量意义。作为为支持参数映射而引入的更改的一部分,DICOM标准引入了浮点图像像素模块和双浮点图像像素模式,分别包括浮点像素数据(7fe00008)和双浮点像素数据的属性。也就是说,图像的像素数据现在可以在用于获取的和大多数导出的图像的通常像素数据(7fe00010)属性中,或者在用于参数映射的浮点像素数据(7 fe00008)或双浮点像素数据中(7 fe0009)中传送。有关DICOM标准中为支持参数地图存储IOD而引入的更改的更多信息,请参阅Supp 172参数地图存储。