DICOM-Datei in C# lesen | DCM-Datei-Viewer in C#

In unserem letzten Beitrag haben wir Ihnen gezeigt, wie Sie eine DICOM -Datei in C# mit Aspose.Medical for .NET erstellen und speichern können. Der nächste Schritt besteht darin, die gespeicherte DICOM-Datei programmgesteuert in C# zu lesen. In diesem Blogbeitrag erfahren Sie, wie Sie DICOM Dateien mit C# laden, öffnen und lesen. Sie können diesen Leitfaden als Ausgangspunkt verwenden, um Ihre eigene DCM -Datei-Viewer-Anwendung zu erstellen.

Dieser Artikel behandelt die folgenden Themen:

Aspose.Medical—DCM-Dateibetrachter

Für das Laden, Lesen und Anzeigen von DICOM Dateien werden wir Aspose.Medical for .NET verwenden. Es bietet eine entwicklerfreundliche API, um DICOM-Daten mühelos zu lesen, zu analysieren und zu extrahieren. Das Dataset Objekt innerhalb einer DicomFile Klasse der API erleichtert die Arbeit mit medizinischen Metadaten.

Bevor wir beginnen, stellen Sie Folgendes sicher:

  • Laden Sie das SDK von den releases herunter oder installieren Sie das Paket über den NuGet Package Manager mit dem folgenden Befehl:
Install-Package Aspose.Medical
  • Sie haben bereits eine DICOM-Datei gespeichert (z. B. sample.dcm) aus dem vorherigen Tutorial.

Wie man eine DICOM-Datei liest: Schritt-für-Schritt-Anleitung

Laden Sie die DICOM-Datei

Sie können die .dcm-Datei in ein DicomFile Objekt laden und auf dessen Datensatz zugreifen, wie unten gezeigt:

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

Werte aus einer DICOM-Datei lesen

Sobald die Datei geladen ist, können Sie wichtige Metadaten mit DICOM-Tags abrufen:

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

Sie können auf diese Weise Hunderte von DICOM-Tags lesen, je nachdem, welche Informationen Sie benötigen.

Zugriff auf Pixel-Daten

Wenn Sie Bilddaten aus der DICOM-Datei abrufen möchten, verwenden Sie:

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

Sie können dieses Byte-Array verwenden, um das Bild darzustellen oder es in weitere Verarbeitungsalgorithmen einzuspeisen.

Einen Standardwert abrufen, wenn ein Tag fehlt

Wenn Tags optional sind, möchten Sie möglicherweise Fallback-Werte bereitstellen. Verwenden Sie GetSingleValueOrDefault, um Daten abzurufen oder einen Standardwert zurückzugeben, wenn das Tag fehlt.

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

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

Dies ist ideal für Szenarien, in denen die Anwesenheit von Tags unvorhersehbar ist.

Abrufen eines bestimmten Wertes aus einem mehrwertigen Tag

Wenn ein Tag mehrere Werte enthält, Sie aber nur einen benötigen, verwenden Sie GetValue mit einem Index oder Bereichsausdruck.

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

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

Hinweis: Diese Methode wirft eine Ausnahme, wenn das Tag fehlt.

DCM-Datei-Viewer: Vollständiger Code

Hier ist ein vollständiger funktionierender Code, der zeigt, wie man eine DICOM-Datei lädt und die verfügbaren Tag-Informationen liest:

// Lade die gespeicherte DICOM-Datei
Aspose.Medical.Dicom.DicomFile dicomFile = DicomFile.Open("sample.dcm");
Aspose.Medical.Dicom.Dataset dataset = dicomFile.Dataset;

// Lesen Sie patientenbezogene Informationen
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);

// Lesen Sie die Studieninformationen
string studyDateStr = dataset.GetSingleValue<string>(Tag.StudyDate);
DateTime studyDate = DateTime.ParseExact(studyDateStr, "yyyyMMdd", null);
string studyID = dataset.GetSingleValue<string>(Tag.StudyID);

// Lese Bildmetadaten
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

Versuch es selbst

Sie können jede .dcm-Datei verwenden, unabhängig davon, ob sie mit Aspose generiert oder von einem Bildgebungsgerät empfangen wurde. Laden Sie einfach die Datei und lesen Sie die Tags, und Sie sind bereit.

Erhalten Sie eine kostenlose Lizenz

Sie können eine kostenlose temporäre Lizenz erhalten, um die volle Funktionalität von Aspose.Medical for .NET ohne Einschränkungen zu erkunden. Es ist schnell, einfach und dauert nur eine Minute.

DICOM-Dateibetrachter: Kostenlose Ressourcen

Sie können Ihre Entwicklerfahrung mit diesen wertvollen Ressourcen verbessern:

Schlussfolgerung

In diesem Artikel haben wir gesehen, wie man Daten aus einer DICOM-Datei in C# liest und extrahiert. Als Entwickler können Sie Aspose.Medical for .NET verwenden, um mit DICOM (.dcm) Dateien zu arbeiten und Ihre eigene DCM-Datei-Viewer-Anwendung zu erstellen.

Wenn Sie Fragen haben oder auf Probleme stoßen, während Sie mit DICOM Dateien arbeiten, zögern Sie nicht, fragen Sie in den Aspose-Foren nach. Das Support-Team ist jederzeit bereit zu helfen.

Siehe auch