python 讀取dicom文件,生成info.txt和raw文件的方法
目標:利用python讀取dicom文件,并進行處理生成info.txt和raw文件
實現(xiàn):通過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 讀取dicom文件,生成info.txt和raw文件的方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Python requests.post()方法中data和json參數的使用方法
這篇文章主要介紹了Python requests.post()方法中data和json參數的使用方法,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,感興趣的小伙伴可以參考一下2022-08-08
Python cookbook(數據結構與算法)通過公共鍵對字典列表排序算法示例
這篇文章主要介紹了Python cookbook(數據結構與算法)通過公共鍵對字典列表排序算法,結合實例形式分析了Python基于operator模塊中的itemgetter()函數對字典進行排序的相關操作技巧,需要的朋友可以參考下2018-03-03
在Ubuntu系統(tǒng)中運行python代碼的幾個步驟
項目中需要在Linux上運行自己寫的python腳本,特此記錄一下操作流程,整個流程比較簡單,下面這篇文章主要給大家介紹了關于在Ubuntu系統(tǒng)中運行python代碼的幾個步驟,需要的朋友可以參考下2023-12-12

