国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python對DICOM圖像的讀取方法詳解

2020-01-04 17:01:16
字體:
來源:轉載
供稿:網友

DICOM介紹

DICOM3.0圖像,由醫學影像設備產生標準醫學影像圖像,DICOM被廣泛應用于放射醫療,心血管成像以及放射診療診斷設備(X射線,CT,核磁共振,超聲等),并且在眼科和牙科等其它醫學領域得到越來越深入廣泛的應用。在數以萬計的在用醫學成像設備中,DICOM是部署最為廣泛的醫療信息標準之一。當前大約有百億級符合DICOM標準的醫學圖像用于臨床使用。

看似神秘的圖像文件,究竟是如何讀取呢?網上隨便 一搜,都有很多方法,但缺乏比較系統的使用方法,下文綜合百度資料,結合python2.7,講解如何讀取及使用DICOM圖像。

讀取DICOM圖像,需要以下幾個庫:pydicom、CV2、numpy、matplotlib。pydicom專門處理dicom圖像的python專用包,numpy高效處理科學計算的包,依據數據繪圖的庫。

安裝:

pip install matplotlib
pip install opencv-python #opencv的安裝,小度上基本都是要下載包,安裝包后把包復制到某個文件夾下,#后來我在https://pypi.python.org/pypi/opencv-python找到這種pip的安裝方法,親測可用
pip install pydicom
pip install numpy

如果沒有記錯,安裝pydicom時,也會自動把numpy安裝上。

安裝好這些庫后,就可以對dicom文件操作。

具體看下面代碼:

#-*-coding:utf-8-*-import cv2import numpyimport dicomfrom matplotlib import pyplot as pltdcm = dicom.read_file("AT0001_100225002.DCM")dcm.image = dcm.pixel_array * dcm.RescaleSlope + dcm.RescaleInterceptslices = []slices.append(dcm)img = slices[ int(len(slices)/2) ].image.copy()ret,img = cv2.threshold(img, 90,3071, cv2.THRESH_BINARY)img = numpy.uint8(img)im2, contours, _ = cv2.findContours(img,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)mask = numpy.zeros(img.shape, numpy.uint8)for contour in contours: cv2.fillPoly(mask, [contour], 255)img[(mask > 0)] = 255kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(2,2))img = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)img2 = slices[ int(len(slices)/2) ].image.copy()img2[(img == 0)] = -2000plt.figure(figsize=(12, 12))plt.subplot(131)plt.imshow(slices[int(len(slices) / 2)].image, 'gray')plt.title('Original')plt.subplot(132)plt.imshow(img, 'gray')plt.title('Mask')plt.subplot(133)plt.imshow(img2, 'gray')plt.title('Result')plt.show()

在DICOM圖像里,包含了患者的相關信息的字典,我們可以通過dir查看DICOM文件有什么信息,可以通過字典返回相關的值。

import dicomimport jsondef loadFileInformation(filename): information = {} ds = dicom.read_file(filename) information['PatientID'] = ds.PatientID information['PatientName'] = ds.PatientName information['PatientBirthDate'] = ds.PatientBirthDate information['PatientSex'] = ds.PatientSex information['StudyID'] = ds.StudyID information['StudyDate'] = ds.StudyDate information['StudyTime'] = ds.StudyTime information['InstitutionName'] = ds.InstitutionName information['Manufacturer'] = ds.Manufacturer print dir(ds) print type(information) return informationa=loadFileInformation('AT0001_100225002.DCM')print a

總結

以上就是這篇文章的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 仁怀市| 阿瓦提县| 盐山县| 收藏| 民勤县| 千阳县| 新龙县| 安顺市| 吉水县| 商丘市| 中山市| 安仁县| 东源县| 河曲县| 辉南县| 瑞金市| 南投县| 额济纳旗| 滕州市| 阳江市| 改则县| 浦北县| 永丰县| 资中县| 东辽县| 资兴市| 韩城市| 海晏县| 手游| 安多县| 慈溪市| 马尔康县| 商河县| 株洲县| 镇原县| 安岳县| 延吉市| 绵阳市| 江津市| 绵阳市| 临泉县|