用python加载dicom图片的方法:使用pydicom、CV2、numpy、matplotlib等库即可。pydicom库是专门用来处理dicom图像的python专用库。
python读取DICOM图像,需要以下几个库:pydicom、CV2、numpy、matplotlib。pydicom是专门处理dicom图像的python专用包,numpy高效处理科学计算的包,依据数据绘图的库。
(推荐教程:Python入门教程)
安装需要的库
pipinstallmatplotlib
pipinstallopencv-python
pipinstallpydicom pipinstallnumpy
安装好这些库后就可以对dicom文件操作了。
具体代码如下:
#-*-coding:utf-8-*-
importcv2
importnumpy
importdicom
frommatplotlibimportpyplotasplt
dcm=dicom.read_file("AT0001_100225002.DCM")
dcm.image=dcm.pixel_array*dcm.RescaleSlope+dcm.RescaleIntercept
slices=[]
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)
forcontourincontours:
cv2.fillPoly(mask,[contour],255)
img[(mask>0)]=255
kernel=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)]=-2000
plt.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文件有什么信息,可以通过字典返回相关的值。
importdicom
importjson
defloadFileInformation(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
printdir(ds)
printtype(information)
returninformation
a=loadFileInformation('AT0001_100225002.DCM')
printa