Fo-Dicom技术咨询:如何调用output.dcm文件并添加私有标签
Fo-Dicom新手指南:加载文件到Dump & 添加私有标签
嘿,作为Fo-Dicom的新手,我来帮你搞定加载output.dcm到Dicom Dump以及添加私有标签的操作,结合你给出的代码片段一步步来:
1. 加载output.dcm到Dicom Dump
要把output.dcm文件内容输出为Dump格式,你需要先读取文件,再调用数据集的Dump()方法即可。示例代码如下:
string filename = "output.dcm"; // 读取DICOM文件 DicomFile dicomFile = DicomFile.Open(filename); // 获取主数据集 DicomDataset ds = dicomFile.Dataset; // 输出Dump内容(可以打印到控制台或者写入文件) string dumpContent = ds.Dump(); Console.WriteLine(dumpContent);
2. 完善你的代码并添加私有标签
先补全你代码里未完成的序列部分,再重点说私有标签的添加逻辑:Fo-Dicom中添加私有标签必须先定义私有创建者(Private Creator),私有标签的组号通常为奇数,且需要和私有创建者关联。
完整代码示例
string filename = "output.dcm"; // 初始化主数据集 DicomDataset ds = new DicomDataset(); // 添加公有标签 ds.Add(DicomTag.SpecificCharacterSet, txtCharacherSet.Text); ds.Add(DicomTag.PatientID, txtid.Text); ds.Add(DicomTag.PatientName, txtname.Text); // 补全序列部分 DicomDataset sqContent = new DicomDataset(); sqContent.Add(DicomTag.Modality, txtModality.Text); // 将序列添加到主数据集(这里假设序列标签是StudyInstanceSequence,你可以根据实际需求替换) ds.Add(new DicomSequence(DicomTag.StudyInstanceSequence, sqContent)); // --- 添加私有标签的关键步骤 --- // 1. 先添加私有创建者标签,组号建议用奇数,比如0x0011 ds.Add(DicomTag.PrivateCreator, "MyPrivateCreator", 0x0011); // 2. 添加私有标签:指定组号、元素号、私有创建者、值 // 示例:添加组0x0011,元素0x0001的私有字符串标签 ds.Add(new DicomPrivateString(0x0011, 0x0001, "MyPrivateCreator", "PrivatePatientInfo")); // 如果是数值类型,比如整数,可以用DicomPrivateInt32 ds.Add(new DicomPrivateInt32(0x0011, 0x0002, "MyPrivateCreator", 10086)); // 保存数据集到output.dcm DicomFile.Save(ds, filename); // 加载并输出Dump验证结果 DicomFile savedFile = DicomFile.Open(filename); Console.WriteLine(savedFile.Dataset.Dump());
注意事项
- 私有标签的组号必须是奇数,这是DICOM标准的硬性规定;
- 私有创建者的名称要和后续添加私有元素时指定的名称完全一致,否则标签无法被正确识别;
- 如果是从已有DICOM文件加载数据集(而非新建),直接在加载后的数据集上添加私有标签即可,无需重新初始化。
内容的提问来源于stack exchange,提问作者Ahsan Iqbal
相关产品推荐
相关产品推荐

