我想在C#中列出DICOM文件的所有标签。
我想要的内容如下面的链接所示
https://stackoverflow.com/a/7283042/1014189
我假设这是一个旧版本,因为当我将其粘贴到Visual Studio中时,它无法识别。任何帮助将不胜感激。
答案 0 :(得分:2)
假设您可以使用Evil Dicom:
public class DicomManager
{
public List<Tag> ReadAllTags(string dicomFile)
{
var dcm = DICOMObject.Read(dicomFile);
return dcm.AllElements.Select(e => e.Tag).ToList();
}
}
更新: 根据您的评论,我们假设您需要在UI上的组件中显示元素。我将举例说明如何在控制台应用程序中显示所有元素,但遍历算法在任何其他演示技术中都是相同的。
看看 Evil Dicom 中如何定义IDICOMElement接口:
public interface IDICOMElement
{
Tag Tag { get; set; }
Type DatType { get; }
object DData { get; set; }
ICollection DData_ { get; set; }
}
这意味着元素具有使用它所需的所有信息。
迭代元素并显示标记名称 - 元素值。
var dcm = DICOMObject.Read(dicomFile);
dcm.AllElements
.ForEach(element => Console.WriteLine("{0} - {1}", element.Tag, element.DData));
正如您所看到的,如果你想要的只是显示值 - 它的字符串表示 - 前一个代码段应该足够了,但是在元素中你有更多关于对象内部和集合的真实类型的信息值 - 在多值元素的情况下。
但是你需要小心,因为DICOMObject中的一些VR可能非常大,所以请确保使用异步方法或工作线程进行处理,以保持UI响应并且不会获得值除非你特别需要。
希望这有帮助!