这篇文章将为大家详细讲解有关如何使用python 读取dicom文件,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
目标:利用python读取dicom文件,并进行处理生成info.txt和raw文件
实现:通过pydicom读取dicom文件
代码:
import numpy import pydicom import os # dicom文件所在的文件夹目录 PathDicom = '/home/lk/testdata/1.3.6.1.4.1.9328.50.1.42697596859477567872763647333745089432/' # 筛选出文件夹目录下所有的dicom文件 lstFilesDCM = [] for dirName, subdirList, fileList in os.walk(PathDicom): for filename in fileList: if '.dcm' in filename.lower(): lstFilesDCM.append(os.path.join(dirName, filename)) # Get ref file RefDs = pydicom.read_file(lstFilesDCM[0]) # Load dimensions based on the number of rows, columns, and slices (along the Z axis) ConstPixelDims = (int(RefDs.Rows), int(RefDs.Columns), len(lstFilesDCM)) # Load spacing values (in mm) ConstPixelSpacing = (float(RefDs.PixelSpacing[0]), float(RefDs.PixelSpacing[1]), float(RefDs.SliceThickness)) # save info.txt info = ConstPixelDims + ConstPixelSpacing f = open('/home/lk/testdata/1.3.6.1.4.1.9328.50.1.42697596859477567872763647333745089432/info.txt', 'w') for n in info: f.write(str(n)+' ') f.close() # According to location sorting location = [] for i in range(len(lstFilesDCM)): ds = pydicom.read_file(lstFilesDCM[i]) location.append(ds.SliceLocation) location.sort() # The array is sized based on 'ConstPixelDims' ArrayDicom = numpy.zeros((len(lstFilesDCM), RefDs.Rows, RefDs.Columns), dtype=RefDs.pixel_array.dtype) # loop through all the DICOM files for filenameDCM in lstFilesDCM: # read the file ds = pydicom.read_file(filenameDCM) # store the raw image data ArrayDicom[location.index(ds.SliceLocation), :, :] = ds.pixel_array # save raw ds = ArrayDicom.tostring() f = open('/home/lk/testdata/1.3.6.1.4.1.9328.50.1.42697596859477567872763647333745089432/1.raw', 'wb') f.write(ds) f.close()
代码编写过程遇到的问题及解决方法:
Problem one: pydicom版本问题。
pydicom1.x中读取dicom文件调用pydicom.read_file(filename);
pydicom0.9中读取dicom文件调用dicom.read_file(filename);
Problem two:python中IO操作
(1) f = open(filename, mode)
其中filename为文件的路径, mode为操作标识符:‘r' 表示读, ‘w'表示写,‘a'表示既可读又可写,‘b'表示二进制文件。
(2) f.write(value)
其中参数value必须是字符串类型的。
python常用的库:1.requesuts;2.scrapy;3.pillow;4.twisted;5.numpy;6.matplotlib;7.pygama;8.ipyhton等。
关于如何使用python 读取dicom文件就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。