如何在C#中使用openDicom.net读取dicom标签值?

时间:2010-09-08 10:38:16

标签: c# tags dicom

我正在使用openDicom.net阅读dicom标签,如下所示:

string tag = "";
string description = "";
string val_rep = "";

foreach (DataElement elementy in sq)
{
    tag = elementy.Tag.ToString();
    description = elementy.VR.Tag.GetDictionaryEntry().Description;
    val_rep = elementy.VR.ToString();
}

如何阅读dicom标记值?

3 个答案:

答案 0 :(得分:1)

未实现value.ToString()方法。在Value.cs中实现您自己的方法,您将获得“Value”的值。

例如(仅字符串和数值):

public override string ToString()
{
 return valueList[0].ToString();
}

答案 1 :(得分:0)

我假设sq是一个序列...

我没有使用openDicom,但我很确定你在做什么不会产生你想要的结果。

您有一个标记,描述和val_rep变量,但是您使用foreach填充它们,这意味着Sequence中的最后一个DataElement将是您检索的唯一值。使用以下方法可以达到相同的效果:

string tag = sq[sq.Count - 1].Tag.ToString();
string description = sq[sq.Count -1].VR.Tag.GetDictionaryEntry().Description;
string val_rep = sq[sq.Count - 1].VR.ToString();

从而从序列中检索最后一组值。我相信你会发现,如果你在执行时逐步执行foreach,它将加载DICOM文件中包含的所有不同的DataElements。

如果我离开这里,请随时在原帖中发表评论或发布更多信息。

答案 2 :(得分:0)

标签值将作为一个通用对象数组从“'值”中检索。成员' DataElement'使用' ToArray()' “价值”中的重写方法'类。

cniDicomTagList = new List<CNIDicomTag>();
foreach (DataElement element in sq)
{
     string tag = element.Tag.ToString();
     string description = element.VR.Tag.GetDictionaryEntry().Description;
     object[] valueArr = element.Value.ToArray();
     cniDicomTagList.Add(new CNIDicomTag(tag, description, valueArr));
}