
في منشورنا الأخير، أظهرنا لك كيفية إنشاء وحفظ ملف DICOM بلغة C# باستخدام Aspose.Medical for .NET. الخطوة التالية هي قراءة ملف DICOM المحفوظ برمجيًا في C#. في هذه التدوينة، ستتعلم كيفية تحميل وفتح وقراءة ملفات DICOM باستخدام C#. يمكنك استخدام هذا الدليل كنقطة انطلاق لإنشاء تطبيق خاص بك لعرض ملفات DCM.
تتناول هذه المقالة المواضيع التالية:
Aspose.Medical—عارض ملفات DCM
لتحميل وقراءة وعرض ملفات DICOM، سنستخدم Aspose.Medical for .NET.فهو يوفر واجهة برمجة تطبيقات سهلة الاستخدام للمطورين لقراءة وتحليل واستخراج بيانات DICOM بسهولة. يجعل كائن Dataset داخل فئة DicomFile في واجهة برمجة التطبيقات من السهل العمل مع بيانات التعريف الطبية.
قبل أن نبدأ، تأكد من ما يلي:
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: الكود الكامل
إليك رمز كامل يعمل يوضح كيفية تحميل ملف 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 أو تم تلقيه من جهاز تصوير. ما عليك سوى تحميل الملف وقراءة العلامات، وستكون مستعدًا تمامًا.
احصل على ترخيص مجاني
يمكنك الحصول على ترخيص مؤقت مجاني لاستكشاف كافة وظائف Aspose.Medical for .NET دون أي قيود. إنه سريع وسهل، ويستغرق دقيقة واحدة فقط.
عارض ملفات DICOM: موارد مجانية
يمكنك تعزيز تجربتك في التطوير من خلال هذه الموارد القيمة:
استنتاج
في هذه المقالة، لقد رأينا كيفية قراءة واستخراج البيانات من ملف DICOM في C#. كمطور، يمكنك استخدام Aspose.Medical for .NET للعمل مع ملفات DICOM (.dcm) وبناء تطبيق خاص بك لعرض ملفات DCM.
إذا كان لديك أسئلة أو واجهت مشكلات أثناء العمل مع ملفات DICOM، فلا تتردد في ask on the Aspose Forums.فريق الدعم دائمًا جاهز للمساعدة.