python 读取dicom文件,生成info.txt和raw文件
2018-03-07 19:26
501 查看
目标:利用python读取dicom文件,并进行处理生成info.txt和raw文件
实现:通过pydicom读取dicom文件
代码:
代码编写过程遇到的问题及解决方法:
Problem one: pydicom版本问题。
pydicom1.x中读取dicom文件调用pydicom.read_file(filename);
pydicom0.9中读取dicom文件调用dicom.read_file(filename);
[b]Problem two:python中IO操作
(1)f = open(filename, mode)
其中filename为文件的路径, mode为操作标识符:‘r’ 表示读, ‘w’表示写,‘a’表示既可读又可写,‘b’表示二进制文件。
(2)f.write(value)
其中参数value必须是字符串类型的。
当然还有一些其他的问题,在这里就不细说了,多入坑才能学的多,切不可烦躁,代码就是要多敲才能得心应手,共勉。
实现:通过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);
[b]Problem two:python中IO操作
(1)f = open(filename, mode)
其中filename为文件的路径, mode为操作标识符:‘r’ 表示读, ‘w’表示写,‘a’表示既可读又可写,‘b’表示二进制文件。
(2)f.write(value)
其中参数value必须是字符串类型的。
当然还有一些其他的问题,在这里就不细说了,多入坑才能学的多,切不可烦躁,代码就是要多敲才能得心应手,共勉。
相关文章推荐
- 使用Python将TXT文本内容读取后生成指定XML格式的文件
- 利用Python读取文件名并生成txt文件——以图片文件为例
- 使用Python将TXT文本内容读取后生成指定XML格式的文件
- python读取excel中表结构生成sql语句,存入txt文件
- [python]python读取txt文件
- Python读取txt文件后去除每行后面的\n
- Python 如何读取TXT文件
- python读取目录下文件并生成日志
- Python瞎折腾[1]-读取txt文件
- 读取INRIA 说明文件 生成 voc xml python 版本
- python2 读取文件TXT编码问题
- Python实现读取txt文件并画三维图简单代码示例
- Python实现读取目录所有文件的文件名并保存到txt文件代码
- python读取txt文件并画图
- P-1.7 [有例题]Python读取、写入.txt文件
- python-读取excel,txt,csv文件
- Python读取TXT文件问题
- python中读取txt文件,windows下么有毛病,到Linux下总是只有最后一行有效,怎么解决?
- Python中对文件夹下的特定格式图像全部读取并转化为数组保存(也可转化为txt文件)
- 用python生成1000个txt文件的方法