DICOM الصور الرقمية الطبية والتعامل معها باستخدام بايثون

لم اكن اعرف ان هناك معيار عالمي للصور الطبية يدعى DICOM
هذا المعيار تم تطويره والمسؤول عنه حاليا هي الجمعية الوطنية لمصنعي الاجهزة الكهربائية NEMA 
حيث يقدم هذا المعيار خدمة رائعة للشركات المصنعة للأجهزة المتعلقة بالتصوير الطبي ( اجهزة تصوير ، اجهزة طباعة ، نقل وحفظ هذه الصور) 
جميع هذه الاجهزة تعمل وفق نظام عمل موحد يسهل التواصل فيما بينها.



في هذه المدونة سأقدم شرح مبسط للأدوات التي تحتاجها للتعامل مع الفايلات المبنية وفق المعيار DICOM
صيغة هذه الملفات بالعادة تنتهي بـ dcm. 
هناك عدة مكتبات يمكنها التعامل مع هكذا نوع لكن النوع الذي استخدمه بالشرح في هذه التدوينة هي pydicom
كبداية كل ماتحتاجه هو تضمين هذه المكتبة ضمن بيئة بايثون الخاصة بك. وبكل بساطة للقيام بهذا الامر ماعليك سوى استخدام الامر السحري في بايثون لتضمين اغلب المكتبات بكل سهولة:

pip install pydicom

بعد ذلك تقوم بعمل استدعاء للأمور التي تحتاجها في عملك dcmread هي الكلاس المسؤولة عن قراءة الملف. matplotlib.pyplot المسؤولة عن رسم الصور. get_testdata_file نستخدمها لجلب بيانات صورية طبية مجانية (للتجربة)

import matplotlib.pyplot as plt
from pydicom import dcmread
from pydicom.data import get_testdata_file

fpath = get_testdata_file('CT_small.dcm')
ds = dcmread(fpath)

# Normal mode:
print()
print(f"File path........: {fpath}")
print(f"SOP Class........: {ds.SOPClassUID} ({ds.SOPClassUID.name})")
print()

pat_name = ds.PatientName
display_name = pat_name.family_name + ", " + pat_name.given_name
print(f"Patient's Name...: {display_name}")
print(f"Patient ID.......: {ds.PatientID}")
print(f"Modality.........: {ds.Modality}")
print(f"Study Date.......: {ds.StudyDate}")
print(f"Image size.......: {ds.Rows} x {ds.Columns}")
print(f"Pixel Spacing....: {ds.PixelSpacing}")

# use .get() if not sure the item exists, and want a default value if missing
print(f"Slice location...: {ds.get('SliceLocation', '(missing)')}")

# plot the image using matplotlib
plt.imshow(ds.pixel_array, cmap=plt.cm.gray)
plt.show()

لمشاهدة شرح الكود بشكل مختصر تستطيع متابعة هذا الفيديو على اليويتيوب قمت بشرح اكثر الامور 



تعليقات

المشاركات الشائعة من هذه المدونة

مدير حزم والمكتبات في البايثون pip manager

التجريد ‏في ‏البرمجة ‏الكائنية ‏التوجه

الكبسولات البرمجية