了解 DICOM 文件内容对医学图像开发、解决问题以及质量保证至关重要。本教程向您展示如何在 C# 中构建一个全面的 Dicom 数据浏览器,以提取和显示患者信息、研究细节和技术图形参数。
什么是DICOM Metadata? DICOM 文件包含两个主要组成部分:像素数据(实际图像)和代码信息(图形信息)。
病人人口学:姓名、身份证、出生日期、性别 研究信息:日期、时间、描述、参考医生 系列细节:模式、身体部分、图像协议 图像参数:尺寸、像素空间、窗口/级别设置 ** 设备信息**:制造商、模型、软件版本 一个数据视图可以帮助开发人员检查这些属性,以便进行解密、验证和数据分析。
基本数据提取 首先,提取常见的DICOM属性:
using Aspose.Medical.Dicom; public class DicomMetadataViewer { public DicomMetadata ExtractMetadata(string filePath) { DicomFile dicomFile = DicomFile.Open(filePath); var dataset = dicomFile.Dataset; return new DicomMetadata { // Patient Information PatientName = dataset.GetString(DicomTag.PatientName), PatientID = dataset.GetString(DicomTag.PatientID), PatientBirthDate = dataset.GetString(DicomTag.PatientBirthDate), PatientSex = dataset.GetString(DicomTag.PatientSex), PatientAge = dataset.GetString(DicomTag.PatientAge), // Study Information StudyInstanceUID = dataset.GetString(DicomTag.StudyInstanceUID), StudyDate = dataset.GetString(DicomTag.StudyDate), StudyTime = dataset.GetString(DicomTag.StudyTime), StudyDescription = dataset.GetString(DicomTag.StudyDescription), AccessionNumber = dataset.GetString(DicomTag.AccessionNumber), ReferringPhysician = dataset.GetString(DicomTag.ReferringPhysicianName), // Series Information SeriesInstanceUID = dataset.GetString(DicomTag.SeriesInstanceUID), Modality = dataset.GetString(DicomTag.Modality), SeriesDescription = dataset.GetString(DicomTag.SeriesDescription), SeriesNumber = dataset.GetString(DicomTag.SeriesNumber), BodyPartExamined = dataset.GetString(DicomTag.BodyPartExamined), // Image Information SOPInstanceUID = dataset.GetString(DicomTag.SOPInstanceUID), SOPClassUID = dataset.GetString(DicomTag.SOPClassUID), InstanceNumber = dataset.GetString(DicomTag.InstanceNumber), ImageType = dataset.GetString(DicomTag.ImageType), // Technical Parameters Rows = dataset.GetString(DicomTag.Rows), Columns = dataset.GetString(DicomTag.Columns), BitsAllocated = dataset.GetString(DicomTag.BitsAllocated), BitsStored = dataset.GetString(DicomTag.BitsStored), PixelSpacing = dataset.GetString(DicomTag.PixelSpacing), SliceThickness = dataset.GetString(DicomTag.SliceThickness), // Equipment Information Manufacturer = dataset.GetString(DicomTag.Manufacturer), ManufacturerModelName = dataset.GetString(DicomTag.ManufacturerModelName), StationName = dataset.GetString(DicomTag.StationName), InstitutionName = dataset.GetString(DicomTag.InstitutionName), SoftwareVersions = dataset.GetString(DicomTag.SoftwareVersions) }; } } public class DicomMetadata { // Patient public string PatientName { get; set; } public string PatientID { get; set; } public string PatientBirthDate { get; set; } public string PatientSex { get; set; } public string PatientAge { get; set; } // Study public string StudyInstanceUID { get; set; } public string StudyDate { get; set; } public string StudyTime { get; set; } public string StudyDescription { get; set; } public string AccessionNumber { get; set; } public string ReferringPhysician { get; set; } // Series public string SeriesInstanceUID { get; set; } public string Modality { get; set; } public string SeriesDescription { get; set; } public string SeriesNumber { get; set; } public string BodyPartExamined { get; set; } // Image public string SOPInstanceUID { get; set; } public string SOPClassUID { get; set; } public string InstanceNumber { get; set; } public string ImageType { get; set; } // Technical public string Rows { get; set; } public string Columns { get; set; } public string BitsAllocated { get; set; } public string BitsStored { get; set; } public string PixelSpacing { get; set; } public string SliceThickness { get; set; } // Equipment public string Manufacturer { get; set; } public string ManufacturerModelName { get; set; } public string StationName { get; set; } public string InstitutionName { get; set; } public string SoftwareVersions { get; set; } } 浏览所有 DICOM 标签 列出所有标签在 DICOM 文件中进行完整检查:
...