Odczytaj plik DICOM w C# | Przeglądarka plików DCM w C#

W naszym ostatnim poście pokazaliśmy, jak tworzyć i zapisywać plik DICOM w C# przy użyciu Aspose.Medical for .NET. Następnym krokiem jest programowe odczytanie zapisany plik DICOM w C#. W tym poście na blogu nauczysz się, jak ładować, otwierać i odczytywać pliki DICOM za pomocą C#. Możesz użyć tego przewodnika jako punktu wyjścia do stworzenia własnej aplikacji wyświetlającej pliki DCM.

Ten artykuł porusza następujące tematy:

Aspose.Medical—DCM File Viewer

Do ładowania, odczytywania i przeglądania plików DICOM użyjemy Aspose.Medical for .NET.Oferuje on przyjazne dla deweloperów API do odczytu, analizy i bezproblemowego wyodrębniania danych DICOM. Obiekt Dataset wewnątrz klasy DicomFile API ułatwia pracę z metadanymi medycznymi.

Zanim zaczniemy, upewnij się, że następujące:

  • Pobierz SDK z releases lub zainstaluj pakiet za pomocą NuGet Package Manager, używając następującego polecenia:
Install-Package Aspose.Medical
  • Już masz zapisany plik DICOM (np. sample.dcm) z poprzedniego samouczka.

Jak odczytać plik DICOM: przewodnik krok po kroku

Załaduj plik DICOM

Możesz załadować plik .dcm do obiektu DicomFile i uzyskać dostęp do jego zestawu danych, jak pokazano poniżej:

// Load an existing DICOM file
DicomFile dicomFile = new DicomFile("sample.dcm");
Aspose.Medical.Dicom.Dataset dataset = dicomFile.Dataset;

Odczytywanie wartości z pliku DICOM

Gdy plik jest załadowany, możesz uzyskać dostęp do kluczowych metadanych za pomocą tagów DICOM:

string patientName = dataset.GetSingleValue<string>(Tag.PatientName);
Console.WriteLine($"Patient Name: {patientName}");

Możesz w ten sposób odczytać setki tagów DICOM, w zależności od tego, jakie informacje potrzebujesz.

Dostęp do danych pikseli

Jeśli chcesz pobrać dane obrazowe z pliku DICOM, użyj:

byte[] pixelData = dataset.GetValues<byte>(Tag.PixelData).ToArray(); // Use ToArray() for display
Console.WriteLine($"Pixel Data Length: {pixelData.Length} bytes");

Możesz użyć tej tablicy bajtów do renderowania obrazu lub wprowadzenia jej do dalszych algorytmów przetwarzania.

Pobieranie wartości domyślnej, jeśli etykieta jest brakująca

Kiedy tagi są opcjonalne, możesz chcieć podać wartości domyślne. Użyj GetSingleValueOrDefault, aby pobrać dane lub zwrócić domyślną wartość, jeśli tag jest nieobecny.

string institutionName = dataset.GetSingleValueOrDefault<string>(Tag.InstitutionName, "Unknown");

Console.WriteLine("Institution Name: " + institutionName);

To jest idealne w scenariuszach, w których obecność tagów jest nieprzewidywalna.

Pobieranie konkretnej wartości z tagu wielowartościowego

Jeśli tag zawiera wiele wartości, ale potrzebujesz tylko jednej, użyj GetValue z wyrażeniem indeksu lub zakresu.

double imagePositionX = dataset.GetValue<double>(Tag.ImagePositionPatient, ^1);

Console.WriteLine("First Image Position X: " + imagePositionX);

Uwaga: Ta metoda zgłosi wyjątek, jeśli tag jest brakujący.

DCM File Viewer: Complete Code

Oto kompletny działający kod, który pokazuje, jak załadować plik DICOM i odczytać dostępne informacje o tagach:

// Załaduj zapisany plik DICOM
Aspose.Medical.Dicom.DicomFile dicomFile = DicomFile.Open("sample.dcm");
Aspose.Medical.Dicom.Dataset dataset = dicomFile.Dataset;

// Przeczytaj informacje dotyczące pacjenta
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);

// Przeczytaj informacje o badaniach
string studyDateStr = dataset.GetSingleValue<string>(Tag.StudyDate);
DateTime studyDate = DateTime.ParseExact(studyDateStr, "yyyyMMdd", null);
string studyID = dataset.GetSingleValue<string>(Tag.StudyID);

// Read image metadata
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

// Wyświetl informacje
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

Spróbuj sam.

Możesz użyć dowolnego pliku .dcm, niezależnie od tego, czy został wygenerowany przy użyciu Aspose, czy otrzymany z urządzenia obrazującego. Po prostu załaduj plik i odczytaj tagi, a jesteś gotowy.

Zdobądź darmową licencję

Możesz uzyskać tymczasową licencję za darmo, aby odkryć pełną funkcjonalność Aspose.Medical for .NET bez żadnych ograniczeń. To szybkie, łatwe i zajmuje tylko minutę.

DICOM File Viewer: Darmowe Zasoby

Możesz poprawić swoje doświadczenie w zakresie rozwoju dzięki tym cennym zasobom:

Wnioski

W tym artykule omówiliśmy, jak odczytywać i wyodrębniać dane z pliku DICOM w C#. Jako deweloper możesz użyć Aspose.Medical for .NET, aby pracować z plikami DICOM (.dcm) i zbudować swoją własną aplikację do przeglądania plików DCM.

Jeśli masz pytania lub napotykasz problemy podczas pracy z plikami DICOM, nie wahaj się zapytaj na forum Aspose.Zespół wsparcia jest zawsze gotowy do pomocy.

Zobacz także