
在我們的 last post 中,我們向您展示了如何使用 Aspose.Medical for .NET 在 C# 中創建和保存 DICOM 文件。下一步是在 C# 中以程式方式讀取保存的 DICOM 文件。在這篇部落格文章中,您將學習如何使用 C# 加載、打開和讀取 DICOM 文件。您可以將此指南作為創建您自己的 DCM 文件查看器應用程式的起點。
本文涵蓋以下主題:
Aspose.Medical—DCM 文件檢視器
為了加載、閱讀和查看 DICOM 文件,我們將使用 Aspose.Medical for .NET。它提供了友好的開發者 API,讓我們能夠輕鬆地閱讀、分析和提取 DICOM 數據。API 中 DicomFile
類別內的 Dataset
物件使我們能夠輕鬆處理醫療元數據。
在我們開始之前,請確保以下事項:
Install-Package Aspose.Medical
- 您已經從之前的教程中保存了一個 DICOM 檔案 (例如:sample.dcm)。
如何閱讀 DICOM 文件:逐步指南
載入 DICOM 文件
您可以將 .dcm
文件加載到 DicomFile
對象中,並訪問其數據集,如下所示:
// Load an existing DICOM file
DicomFile dicomFile = new DicomFile("sample.dcm");
Aspose.Medical.Dicom.Dataset dataset = dicomFile.Dataset;
從 DICOM 文件中讀取值
一旦檔案被載入,您可以使用 DICOM 標籤來訪問關鍵元數據:
string patientName = dataset.GetSingleValue<string>(Tag.PatientName);
Console.WriteLine($"Patient Name: {patientName}");
您可以根據所需的信息以這種方式閱讀數百個 DICOM 標籤。
訪問像素數據
如果您想從 DICOM 文件中檢索影像數據,請使用:
byte[] pixelData = dataset.GetValues<byte>(Tag.PixelData).ToArray(); // Use ToArray() for display
Console.WriteLine($"Pixel Data Length: {pixelData.Length} bytes");
您可以使用此位元組陣列來渲染圖像或將其輸入進一步的處理算法中。
檢索缺失標籤的預設值
當標籤是可選的時,您可能想提供後備值。使用 GetSingleValueOrDefault 來檢索數據,或在標籤不存在時返回默認值。
string institutionName = dataset.GetSingleValueOrDefault<string>(Tag.InstitutionName, "Unknown");
Console.WriteLine("Institution Name: " + institutionName);
這對於標籤存在無法預測的情況非常理想。
從多值標籤檢索特定值
如果一個標籤包含多個值,但您只需要其中一個,請使用 GetValue 並搭配索引或範圍表達式。
double imagePositionX = dataset.GetValue<double>(Tag.ImagePositionPatient, ^1);
Console.WriteLine("First Image Position X: " + imagePositionX);
注意:如果缺少標籤,此方法將引發異常。
DCM 文件查看器:完整代碼
這是一段完整的可運行代碼,顯示如何加載 DICOM 文件並讀取可用標籤的信息:
// 載入已保存的 DICOM 檔案
Aspose.Medical.Dicom.DicomFile dicomFile = DicomFile.Open("sample.dcm");
Aspose.Medical.Dicom.Dataset dataset = dicomFile.Dataset;
// 閱讀病人相關資訊
string patientID = dataset.GetSingleValue<string>(Tag.PatientID);
string patientName = dataset.GetSingleValue<string>(Tag.PatientName);
string birthDateStr = dataset.GetSingleValue<string>(Tag.PatientBirthDate);
DateTime birthDate = DateTime.ParseExact(birthDateStr, "yyyyMMdd", null);
// 讀取研究信息
string studyDateStr = dataset.GetSingleValue<string>(Tag.StudyDate);
DateTime studyDate = DateTime.ParseExact(studyDateStr, "yyyyMMdd", null);
string studyID = dataset.GetSingleValue<string>(Tag.StudyID);
// 讀取圖像元數據
int rows = dataset.GetSingleValue<int>(Tag.Rows);
int columns = dataset.GetSingleValue<int>(Tag.Columns);
int bitsAllocated = dataset.GetSingleValue<int>(Tag.BitsAllocated);
string modality = dataset.GetSingleValue<string>(Tag.Modality);
byte[] pixelData = dataset.GetValues<byte>(Tag.PixelData).ToArray(); // Use ToArray() for display
// 顯示資訊
Console.WriteLine($"Patient ID: {patientID}");
Console.WriteLine($"Patient Name: {patientName}");
Console.WriteLine($"Birth Date: {birthDate:yyyy-MM-dd}");
Console.WriteLine($"Study Date: {studyDate:yyyy-MM-dd}");
Console.WriteLine($"Study ID: {studyID}");
Console.WriteLine($"Image Rows: {rows}");
Console.WriteLine($"Image Columns: {columns}");
Console.WriteLine($"Bits Allocated: {bitsAllocated}");
Console.WriteLine($"Modality: {modality}");
Console.WriteLine($"Pixel Data Length: {pixelData.Length} bytes");
Output
Patient ID: JD123456
Patient Name: John Doe
Birth Date: 1985-07-20
Study Date: 2025-07-07
Study ID: Study001
Image Rows: 256
Image Columns: 256
Bits Allocated: 8
Modality: OT
Pixel Data Length: 65536 bytes
Try it Yourself
您可以使用任何 .dcm
文件,無論是使用 Aspose 生成的還是從成像設備接收到的。只需加載該文件並讀取標籤,您就可以開始了。
獲取免費許可證
您可以 獲取免費的臨時許可證 以探索 Aspose.Medical for .NET 的所有功能,且沒有任何限制。這是快速、簡單的,僅需一分鐘。
DICOM 文件查看器:免費資源
您可以利用這些寶貴資源來提升您的開發體驗:
結論
在這篇文章中,我們已經看到了如何在 C# 中讀取和提取 DICOM 文件中的數據。作為一名開發人員,您可以使用 Aspose.Medical for .NET 來處理 DICOM (.dcm) 文件,並構建您自己的 DCM 文件查看器應用程序。
如果您在處理 DICOM 文件時有任何問題或遇到困難,請隨時 在 Aspose 論壇上詢問。支持團隊隨時準備提供幫助。