如何使用纯C或C++文件读取方法解析DICOM文件
How can I parse a DICOM file using plain C or C++ file read methods?
我不是在寻找一个预先存在的库来读取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参数地图存储。
- 正在将csv文件读取为双精度矢量
- 将从格式化文本文件读取的文本数据存储到链表
- C++ 读取文件读取文件不正确
- 使用对象文件读取三角形数据网格
- 如何减慢从 BVH 文件读取的 opengl 动画?
- 从文件读取,并写入函数C++中的数组
- 从对象C++中的文件读取内容时出现分段错误
- 从文件读取并通过矢量输出到控制台
- 尝试将字符串从文件读取到无符号字符向量中
- 如何将文本文件读取到二维数组中并以 c++ 打印
- 简化文件读取的函数
- 如何将逗号分隔的文件读取为 2D int 数组?
- 在 c++ 中将数据从文件读取到队列中
- 'std::wstring_convert'尽可能多地转换(从 UTF8 文件读取块)
- C++,从文件读取到结构,然后读取到向量(结构被推入向量太多次,而不仅仅是一次)
- 文件读取C++包括空格键
- 从文件读取时未将值推回矢量
- 从文件 C++ 读取时的无限循环
- 从同一文件读取和写入?
- 从.txt文件读取到C++中的双精度向量