Читати DICOM файл в C# | Переглядач DCM файлів в C#

У нашому останній дописі ми показали вам, як створити та зберегти файл DICOM у C# за допомогою Aspose.Medical for .NET. Наступний крок - це програмно прочитати збережений файл DICOM у C#. У цьому блозі ви дізнаєтеся, як завантажувати, відкривати та читати файли DICOM за допомогою C#. Ви можете використовувати цей посібник як вихідну точку для створення власного додатку для перегляду файлів DCM.

Ця стаття охоплює наступні теми:

Aspose.Medical—DCM Файл Переглядач

Для завантаження, читання та перегляду DICOM файлів ми будемо використовувати Aspose.Medical for .NET.Він надає зручний для розробників API для безпосереднього читання, аналізу та витягування даних DICOM. Об’єкт Dataset всередині класу DicomFile API полегшує роботу з медичною метаданими.

Перед тим, як ми почнемо, переконайтеся в наступному:

  • Завантажте SDK з releases або встановіть пакет через NuGet Package Manager, використовуючи таку команду:
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 File Viewer: Complete Code

Ось повний робочий код, який показує, як завантажити файл 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

// Display information
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

Спробуйте це самостійно

Ви можете використовувати будь-який файл .dcm, незалежно від того, чи був він згенерований за допомогою Aspose, чи отриманий від пристрою зображення. Просто завантажте файл і прочитайте теги, і ви готові.

Отримати безкоштовну ліцензію

Ви можете отримати безкоштовну тимчасову ліцензію, щоб дослідити всі можливості Aspose.Medical for .NET без жодних обмежень. Це швидко, легко і займає всього хвилину.

Переглядач файлів DICOM: Безкоштовні ресурси

Ви можете покращити свій досвід розробки з цими цінними ресурсами:

Висновок

У цій статті ми розглянули, як читати та витягувати дані з файлу DICOM у C#. Як розробник, ви можете використовувати Aspose.Medical for .NET для роботи з файлами DICOM (.dcm) та створення власного додатку для перегляду файлів DCM.

Якщо у вас є запитання або ви зіткнулися з проблемами під час роботи з файлами DICOM, не соромтеся запитати на форумах Aspose.Команда підтримки завжди готова допомогти.

See Also