Přečtěte si DICOM soubor v C# | Zobrazovač DCM souborů v C#

V našem posledním příspěvku jsme vám ukázali, jak vytvořit a uložit DICOM soubor v C# pomocí Aspose.Medical for .NET. Dalším krokem je programově přečíst uložený DICOM soubor v C#. V tomto blogovém příspěvku se naučíte, jak načíst, otevřít a číst DICOM soubory pomocí C#. Tento průvodce můžete použít jako výchozí bod k vytvoření vlastní aplikace pro prohlížení DCM souborů.

Tento článek se zabývá následujícími tématy:

Aspose.Medical—DCM prohlížeč souborů

Pro načítání, čtení a zobrazení DICOM souborů použijeme Aspose.Medical for .NET.Poskytuje API přívětivé pro vývojáře, které umožňuje číst, analyzovat a snadno extrahovat DICOM data. Objekt Dataset uvnitř třídy DicomFile API usnadňuje práci s lékařskými metadaty.

Předtím, než začneme, zajistěte následující:

  • Stáhněte si SDK z releases nebo nainstalujte balíček pomocí NuGet správce balíčků pomocí následujícího příkazu:
Install-Package Aspose.Medical
  • Už máte uložený DICOM soubor (např. sample.dcm) z předchozího tutoriálu.

Jak číst soubor DICOM: Podrobný průvodce

Načtěte soubor DICOM

Můžete načíst soubor .dcm do objektu DicomFile a přistupovat k jeho datovému souboru, jak je ukázáno níže:

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

Čtení hodnot z DICOM souboru

Jakmile je soubor načten, můžete přistupovat k klíčovým metadatům pomocí DICOM tagů:

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

Můžete tímto způsobem přečíst stovky DICOM tagů v závislosti na tom, jaké informace potřebujete.

Přístup k datům pixelů

Pokud chcete načíst data obrázku z DICOM souboru, použijte:

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

Můžete použít toto pole bajtů k vykreslení obrázku nebo jej použít v dalších zpracovatelských algoritmech.

Získání výchozí hodnoty, pokud je tag chybějící

Když jsou tagy volitelné, možná budete chtít poskytnout hodnoty jako zálohu. Použijte GetSingleValueOrDefault, abyste získali data nebo vrátili výchozí hodnotu, pokud tag chybí.

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

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

Tohoto je ideální pro scénáře, kde je přítomnost tagu nepředvídatelná.

Získání specifické hodnoty z vícehodnotového tagu

Pokud tag obsahuje více hodnot, ale potřebujete pouze jednu, použijte GetValue s indexovým nebo rozsahovým výrazem.

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

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

Poznámka: Tato metoda vyvolá výjimku, pokud chybí značka.

DCM File Viewer: Complete Code

Zde je kompletní funkční kód, který ukazuje, jak načíst soubor DICOM a přečíst dostupné informace o znacích:

// Načtěte uložený soubor DICOM.
Aspose.Medical.Dicom.DicomFile dicomFile = DicomFile.Open("sample.dcm");
Aspose.Medical.Dicom.Dataset dataset = dicomFile.Dataset;

// Přečtěte si informace týkající se pacienta
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);

// Přečtěte si informace o studii
string studyDateStr = dataset.GetSingleValue<string>(Tag.StudyDate);
DateTime studyDate = DateTime.ParseExact(studyDateStr, "yyyyMMdd", null);
string studyID = dataset.GetSingleValue<string>(Tag.StudyID);

// Přečíst metadata obrázku
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

Vyzkoušejte to sami

Můžete použít jakýkoli soubor .dcm, ať už byl vygenerován pomocí Aspose, nebo přijat z zobrazovacího zařízení. Jednoduše načtěte soubor a přečtěte značky, a máte hotovo.

Získejte bezplatnou licenci

Můžete get a free temporary license k prozkoumání plné funkčnosti Aspose.Medical for .NET bez jakýchkoli omezení. Je to rychlé, snadné a trvá to jen minutu.

DICOM prohlížeč souborů: Bezplatné zdroje

Můžete vylepšit svou vývojovou zkušenost s těmito cennými zdroji:

Závěr

V tomto článku jsme viděli, jak číst a extrahovat data z DICOM souboru v C#. Jako vývojář můžete použít Aspose.Medical for .NET, abyste pracovali se soubory DICOM (.dcm) a vytvořili svou vlastní aplikaci pro prohlížení DCM souborů.

Pokud máte otázky nebo narazíte na problémy při práci se soubory DICOM, neváhejte se zeptat na fórech Aspose.Podpora je vždy připravena pomoci.

See Also