อ่านไฟล์ DICOM ใน C# | ตัวดูไฟล์ DCM ใน C#

ใน โพสต์สุดท้าย เราได้แสดงให้คุณเห็นวิธีการสร้างและบันทึกไฟล์ DICOM ใน C# โดยใช้ Aspose.Medical for .NET ขั้นตอนถัดไปคือการอ่านไฟล์ DICOM ที่บันทึกไว้ในโปรแกรม C# ในโพสต์บล็อกนี้คุณจะได้เรียนรู้วิธีการโหลด เปิด และอ่านไฟล์ DICOM โดยใช้ C# คุณสามารถใช้คู่มือนี้เป็นจุดเริ่มต้นในการสร้างโปรแกรมดูไฟล์ DCM ของคุณเอง

บทความนี้ครอบคลุมหัวข้อดังต่อไปนี้:

Aspose.Medical—DCM ไฟล์ผู้ดูแล

สำหรับการโหลด การอ่าน และการดูไฟล์ 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}");

คุณสามารถอ่าน 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

// แสดงข้อมูล
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 หรือได้รับจากอุปกรณ์ถ่ายภาพ เพียงแค่โหลดไฟล์และอ่านแท็กต่าง ๆ ก็พร้อมใช้งานแล้ว

ขอรับใบอนุญาตฟรี

คุณสามารถ get a free temporary license เพื่อสำรวจฟังก์ชันการทำงานทั้งหมดของ Aspose.Medical for .NET โดยไม่มีข้อจำกัด มันรวดเร็ว ง่ายดาย และใช้เวลาเพียงหนึ่งนาที

DICOM File Viewer: ฟรีทรัพยากร

คุณสามารถเพิ่มประสบการณ์การพัฒนาของคุณด้วยทรัพยากรที่มีค่าเหล่านี้:

สรุป

ในบทความนี้ เราได้เห็นวิธีการอ่านและดึงข้อมูลจากไฟล์ DICOM ใน C# ในฐานะที่เป็นนักพัฒนา คุณสามารถใช้ Aspose.Medical for .NET เพื่อทำงานกับไฟล์ DICOM (.dcm) และสร้างแอปพลิเคชันตัวดูไฟล์ DCM ของคุณเอง

หากคุณมีคำถามหรือต้องพบปัญหาในขณะที่ทำงานกับไฟล์ DICOM อย่าลังเลที่จะ ถามใน Aspose Forums ทีมสนับสนุนพร้อมที่จะช่วยเสมอ

ดูเพิ่มเติม