Läsa DICOM-fil i C# | DCM-filvisare i C#

I vår senaste inlägg visade vi hur man skapar och sparar en DICOM fil i C# med Aspose.Medical för .NET. Nästa steg är att läsa den sparade DICOM-filen programmatiskt i C#. I detta blogginlägg kommer du att lära dig hur man laddar, öppnar och läser DICOM-filer med C#. Du kan använda den här guiden som en utgångspunkt för att skapa din egen DCM filvisningsapplikation.

Denna artikel täcker följande ämnen:

Aspose.Medical—DCM Fil Viewer

För att ladda, läsa och visa DICOM-filer kommer vi att använda Aspose.Medical för .NET.Det erbjuder ett utvecklarvänligt API för att läsa, analysera och extrahera DICOM-data utan ansträngning. Objektet Dataset inuti en DicomFile-klass i API:et gör det enkelt att arbeta med medicinsk metadata.

Innan vi börjar, se till att följa följande:

  • Ladda ner SDK: n från releases eller installera paketet via NuGet Paketchef med följande kommando:
Install-Package Aspose.Medical
  • Du har redan en DICOM-fil sparad (t.ex. sample.dcm) från den tidigare handledningen.

Hur man läser en DICOM-fil: Steg-för-steg-guide

Läs in DICOM-filen

Du kan ladda .dcm-filen i ett DicomFile-objekt och komma åt dess dataset, som demonstrerat nedan:

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

Läsa värden från en DICOM-fil

När filen har laddats kan du komma åt nyckelmetadata med hjälp av DICOM-taggar:

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

Du kan läsa hundratals DICOM-taggar på det här sättet beroende på vilken information du behöver.

Åtkomst till pixeldata

Om du vill hämta bilddata från DICOM-filen, använd:

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

Du kan använda denna byte-array för att återge bilden eller mata in den i vidare bearbetningsalgoritmer.

Hämtar ett standardvärde om en tagg saknas

När taggar är valfria kan du vilja ange fallback-värden. Använd GetSingleValueOrDefault för att hämta data eller returnera ett standardvärde om taggen är frånvarande.

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

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

Detta är idealiskt för scenarier där närvaron av taggar är oförutsägbar.

Hämta ett specifikt värde från en flervärdes-flagga

Om en tagg innehåller flera värden, men du bara behöver ett, använd GetValue med ett index eller en intervallsuttryck.

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

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

Obs: Denna metod kommer att kasta ett undantag om taggen saknas.

DCM Filvisare: Fullständig kod

Här är en komplett fungerande kod som visar hur man laddar en DICOM-fil och läser informationen om de tillgängliga taggarna:

// Ladda den sparade DICOM-filen
Aspose.Medical.Dicom.DicomFile dicomFile = DicomFile.Open("sample.dcm");
Aspose.Medical.Dicom.Dataset dataset = dicomFile.Dataset;

// Läs patientrelaterad information
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);

// Läs studieinformation
string studyDateStr = dataset.GetSingleValue<string>(Tag.StudyDate);
DateTime studyDate = DateTime.ParseExact(studyDateStr, "yyyyMMdd", null);
string studyID = dataset.GetSingleValue<string>(Tag.StudyID);

// Läs bildmetadata
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

// Visa 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

Försök själv

Du kan använda valfri .dcm-fil, oavsett om den har genererats med Aspose eller mottagits från en bildbehandlingsenhet. Ladda helt enkelt filen och läs taggarna, så är du redo.

Få en gratis licens

Du kan get a free temporary license för att utforska hela funktionaliteten i Aspose.Medical för .NET utan några begränsningar. Det är snabbt, enkelt och tar bara en minut.

DICOM Filvisare: Gratis Resurser

Du kan förbättra din utvecklingsupplevelse med dessa värdefulla resurser:

Slutsats

I den här artikeln har vi sett hur man läser och extraherar data från en DICOM-fil i C#. Som utvecklare kan du använda Aspose.Medical för .NET för att arbeta med DICOM (.dcm) filer och bygga din egen DCM-filvisningsapplikation.

Om du har frågor eller stöter på problem när du arbetar med DICOM-filer, tveka inte att ask on the Aspose Forums.Supportteamet är alltid redo att hjälpa till.

Se även