خواندن فایل Dicom در پایتون
یکی از فرمتهای رایج برای ذخیرهسازی تصاویر پزشکی، DICOM است. برای کار با این نوع دیتاستها، نیاز است که نحوه خواندن فایل DICOM در پایتون را بدانیم. در این آموزش، نحوه فراخوانی یک فایل با پسوند dcm را آموزش خواهم داد. با من همراه باشید…
DICOM چیست؟
DICOM یک استاندارد بینالمللی برای ذخیرهسازی و انتقال تصاویر پزشکی است. در اواخر دهه 20 میلادی، تکنولوژیهای تصویربرداری جدید و پیشرفتهای در حوزه تصویربرداری پزشکی ظهور پیدا کردند. در هرکدام از این روشها، تصویر با یک فرمت خاص و متفاوت ذخیره میشد. طبیعتا به همین خاطر انتقال این تصاویر و استفاده از آنها در یک سیستم دیگر، راحت نبود. از این رو The American College of Radiology (ACR) و the National Electrical (NEMA) یک کمیته مشترک تشکیل دادند که در نهایت به پیدایش استاندارد DICOM منجر شد.
یک فایل DICOM چه اطلاعاتی دارد؟
محتویات یک فایل DICOM را میتوان به دو دسته تقسیم کرد:
- آرایه تصویر
- متادیتا (Metadata)
در ادامه در مورد هرکدام از این دو بخش، مختصری توضیح خواهم داد.
تصویر در فایل DICOM
این بخش شامل آرایه تصویر خام است که از دستگاه تصویربرداری دریافت شده است. دقت کنید که مقادیر آرایه تصویر بین 0 و یک یا 0 و 255 نیست. بسته به نوع تصویربرداری، بازه مقادیر پیکسلها متفاوت است. بنابراین برای استفاده از این تصاویر احتمالا نیاز به نرمال سازی مقادیر آن داشته باشید.
دادههای متادیتا (Metadata)
این بخش شامل اطلاعات بیمار (نام، جنسیت، تاریخ تولد و …)، اطلاعات عمومی تصویربرداری (زمان انجام آن، دستگاه تصویربرداری استفاده شده و …)، اطلاعات فنی تصویربرداری (اطلاعاتی مثل فاصله پیکسلها، زاویه چرخش و …) است. معمولا در دیتاستهای عمومی که ما با آنها سر و کار داریم، برای حفظ حریم خصوصی افراد، بخش اطلاعات بیمار خالی یا غیرواقعی است.
معرفی کتابخانه Pydicom
برای خواندن یک فایل DICOM در پایتون، میتوان از کتابخانه Pydicom استفاده کرد. Pydicom به صورت اختصاصی برای کار با فایلهای DICOM ساخته شده است. این کتابخانه به کاربران امکان میدهد تا به سادگی به دادههای تصویری و اطلاعات متادیتای موجود در فایلهای DICOM دسترسی پیدا کنند، آنها را تغییر دهند و یا حتی فایلهای جدید DICOM ایجاد کنند. در بخش بعدی، نحوه خواندن یک فایل DICOM با استفاده از کتابخانه Pydicom را آموزش خواهم داد.
نحوه خواندن یک فایل DICOM با کتابخانه pydicom در پایتون
نصب کتابخانه Pydicom
در قدم اول نیاز است که کتابخانه Pydicom را نصب کنیم. برای نصب این کتابخانه با استفاده از pip، کافی است Command Prompt را باز کرده و کد زیر را اجرا کنید:
pip install pydicom
با اجرای این دستور، کتابخانه Pydicom نصب خواهد شد. شما میتوانید این کتابخانه را با استفاده از Anaconda و مشابه با کتابخانههای دیگر نیز نصب کنید. بعد از نصب، این کتابخانه را فراخوانی کنید. به این شکل:
import pydicom
خواندن فایل DICOM در پایتون
با استفاده از دستور dcmread میتوانید یک فایل DICOM را در پایتون Load کنید. برای این کار ابتدا مسیر فایل DICOM را مشخص میکنیم. پسوند فایل DICOM به شکل dcm است. من این فایل DICOM را در کولب آپلود کردهام و مسیر فایل من این است:
dcm_path = '/content/image-000001.dcm'
حالا نوبت استفاده از دستور dcmread است. برای خواندن فایل DICOM، کافی است مسیر این فایل را به دستور dcmread بدهید:
ds = pydicom.dcmread(dcm_path)
خروجی این دستور، یک آبجکت از داده است که من آن را در متغیر ds ذخیره کردهام. اگر ds را پرینت کنید، متادیتای آن نمایش داده خواهد شد. چون خروجی آن طولانی است، من دیگر آن را نمایش نمیدهم. اما تصویر را از کجا استخراج کنیم؟
استخراج تصویر از فایل DICOM
برای استخراج تصویر از فایل DICOM، کافی است از اتریبیوت pixel_array استفاده کنید:
image = ds.pixel_array
به این ترتیب، آرایه تصویر در متغیر image ذخیره خواهد شد. در بخش بعدی این تصویر را با استفاده از Matplotlib نمایش خواهیم داد.
نمایش تصویر در Matplotlib
تصویری که داریم مربوط به MRI چشم است و بازه اعداد آن به شکل زیر است:
print('maximum value in image is: ', image.max()) print('minimum value in image is: ', image.min())
maximum value in image is: 233 minimum value in image is: 0
همانطور که قبلا گفتیم، بازه اعداد بین 0 و 1 نیست. بنابراین ابتدا نرمال سازی را انجام میدهیم و سپس تصویر را نمایش میدهیم:
import matplotlib.pyplot as plt import numpy as np normalized_image = (image - np.min(image)) / (np.max(image) - np.min(image)) plt.imshow(normalized_image, cmap='gray') plt.show()
تمام شد. به همین ترتیب میتوانید هر فایل DICOM دیگری را نمایش دهید.
جمعبندی
در این پست، دیدیم که یک فایل DICOM چه هست و چگونه میتوان با استفاده از کتابخانه Pydicom آن را فراخوانی کرد. گفتیم که هر فایل DICOM دو بخش دارد؛ آرایه تصویر و متا دیتا. همچنین توانستیم با استفاده از Matplotlib، تصویر را نمایش دهیم. اگر به آموزشهای مرتبط با دادههای پزشکی علاقمند هستید، در کامنتها 👇 اعلام کنید تا در آینده بیشتر به این دست پستها بپردازیم. تا پست بعدی، خدانگهدار👋
2 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
عالی بود. منتظر مطالب مشابه هستم.
ممنون از پیامتون 🙏
سعی میکنیم در آینده، مطالب بیشتری از حوزه پزشکی تالیف کنیم. 🌹