我需要使用C ++修改DICOM文件的序言。我知道我可以使用MergeCom库执行此操作。但是,我对这个库非常陌生,以前从未使用过。我打开了user manual,但它的范围太广,需要我花费一些时间来获取所需的信息。
有人可以朝这个方向引导我,或者给我一个简单的代码片段来完成此任务。
我建议不要使用DICOM工具包(例如Merge)来做到这一点。
DICOM PS 3.10,第7.1章
文件元信息包括有关封装数据集的标识信息。此标头包含一个128字节的文件前导,后跟4字节DICOM前缀,后跟表7.1-1中所示的文件元元素。此标头应存在在每个DICOM文件中。
因此,前导码始终为132个字节,并且始终以文件的第一个字节开头。使用“原始文件访问方法”(例如fopen,fwrite)将二进制数据块放入文件中比“说服” DICOM工具箱向文件中写入错误的前导要容易得多。
无论如何,可以使用mergecom工具包:
MC_STATUS MC_Set_File_Preamble(
int FileID,
char* Preamble
)
其中FileId是MC_Open_File返回的合并句柄。
P.S .:我很少使用MergeCom用户手册。我使用参考手册搜索“ Preamble”很快就得到了结果。
我同意@kritzel_sw的其他建议中的第一个建议。如果仅限于编写序言并且不涉及任何其他功能(如加载数据集或读取元素等),那么使用工具包就显得过头了。
以下是specifications对前言的看法:
文件元信息包括有关封装数据集的标识信息。该头由一个128字节的文件前导码,一个4字节的DICOM前缀,表7.1-1中所示的文件元元素组成。此头应存在于每个DICOM文件中。
和
如果应用程序配置文件或特定实现未使用文件前导,则所有128个字节应设置为00H。这是为了便于识别未按上述规定设置所有128个字节时使用了Preamble。
文件前导可以例如包含使多媒体应用程序能够随机访问存储在DICOM数据集中的图像的信息。可以通过两种方式访问同一文件:通过使用前同步码的多媒体应用程序和忽略前同步码的DICOM应用程序。
此外,以下是image,可能有助于更好地理解该概念:
第一部分,文件头,由128字节的文件前导码和4字节的前缀组成。这种方法在您可能已经看到/使用过的许多其他图像标准(例如TIFF)中非常普遍。 4字节前缀由大写字母“ DICM”组成(注意,它不是“ DICOM”,而是“ DICM”)。
如您所见,Preamble是DICOM文件标题的开头部分。您可以使用编程语言轻松添加它,而无需使用任何工具包。
看一下this问题,该问题与C#讨论前言。希望对您有帮助。