
В нашем последнем посте мы показали вам, как создать и сохранить файл DICOM на C# с использованием Aspose.Medical for .NET. Следующий шаг — программно прочитать сохраненный файл DICOM на C#. В этом блоге вы узнаете, как загружать, открывать и читать файлы DICOM с помощью C#. Вы можете использовать это руководство как отправную точку для создания собственного приложения для просмотра файлов DCM.
Эта статья охватывает следующие темы:
- Aspose.Medical—DCM File Viewer
- Как читать файл DICOM с использованием C#
- Исследуйте бесплатные ресурсы
Aspose.Medical—DCM File Viewer
Для загрузки, чтения и просмотра файлов 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}");
Вы можете прочитатьHundreds 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 или получен от устройства для Imaging. Просто загрузите файл и прочитайте теги, и вы готовы к работе.
Получите бесплатную лицензию
Вы можете получить бесплатную временную лицензию, чтобы исследовать полную функциональность Aspose.Medical for .NET без каких-либо ограничений. Это быстро, легко и занимает всего минуту.
DICOM File Viewer: Бесплатные ресурсы
Вы можете улучшить свой опыт разработки с помощью этих ценных ресурсов:
Заключение
В этой статье мы рассмотрели, как читать и извлекать данные из DICOM файла на C#. Как разработчик, вы можете использовать Aspose.Medical for .NET для работы с DICOM (.dcm) файлами и создания собственного приложения для просмотра DCM файлов.
Если у вас есть вопросы или вы столкнулись с проблемами при работе с файлами DICOM, не стесняйтесь спросить на форумах Aspose.Команда поддержки всегда готова помочь.