使用python玩转dicom文件——医学图像处理工具pydicom入门教程
從醫(yī)院采集的超聲數(shù)據(jù)因?yàn)闀r(shí)間跨度大、設(shè)備差異等原因比較亂,想著找找工具怎么把這些dicom格式的文件整理一下,于是瞄準(zhǔn)了pydicom這一工具。中文資料也很魚龍混雜,干脆自己去他們的官方文檔直接學(xué)習(xí)。安裝方式是很簡單的在anaconda中pip install pydicom
參考資料:pydicom官方文檔
版本:pydicom 2.0.0
pydicom入門
- 數(shù)據(jù)讀取
- 信息獲取
- 數(shù)據(jù)寫入
- 使用matplotlib進(jìn)行可視化
數(shù)據(jù)讀取
數(shù)據(jù)讀取使用dmread()
import pydicomfpath='us13.DCM' dcm=pydicom.dcmread(fpath)有時(shí)可能會出現(xiàn)以下報(bào)錯(cuò)
raise InvalidDicomError("File is missing DICOM File Meta Information "pydicom.errors.InvalidDicomError: File is missing DICOM File Meta Information header or the 'DICM' prefix is missing from the header. Use force=True to force reading.這是由于dicom文件中信息缺失造成的或者此文件不是dicom文件但包含了dicom數(shù)據(jù),在確信此文件包含dicom數(shù)據(jù)的情況下根據(jù)提示應(yīng)該調(diào)用force參數(shù)強(qiáng)行讀取。
dcm=pydicom.dcmread(fpath,force=True)信息獲取
在完成上述的dicom文件讀取后可以使用print指令打印出其頭文件信息
import pydicomfpath='us13.DCM' dcm=pydicom.dcmread(fpath) print(dcm)輸出結(jié)果部分截圖
數(shù)據(jù)寫入
最簡單的方式可以采用sace_as()進(jìn)行數(shù)據(jù)保存
dcm.save_as('out.dcm')在默認(rèn)情況下,save_as()是以原樣的方式將數(shù)據(jù)寫入文件中。這意味著,即使你的數(shù)據(jù)集不符合DICOM文件格式,也仍將嚴(yán)格按照給定的格式進(jìn)行寫入。要確定您是以DICOM文件格式編寫數(shù)據(jù)集,可以使用write_like_original關(guān)鍵字參數(shù):
dcm.save_as('out.dcm', write_like_original=False)以上操作將自動的添加文件中缺失的頭文件信息,如果沒能成功自動補(bǔ)全的話將會報(bào)錯(cuò)
ValueError: Missing required File Meta Information elements from 'file_meta':(0002, 0010) TransferSyntaxUID這時(shí)需要手動進(jìn)行補(bǔ)全相關(guān)信息,再進(jìn)行保存
dcm.file_meta = FileMetaDataset() dcm.file_meta.TransferSyntaxUID = '1.2.840.10008.1.2.1' dcm.save_as('out.dcm', write_like_original=False)使用matplotlib進(jìn)行可視化
import pydicom from matplotlib import pyplot as pltfpath='US6.DCM' dataset=pydicom.dcmread(fpath)if 'PixelData' in dataset:rows = int(dataset.Rows)cols = int(dataset.Columns)print("Image size.......: {rows:d} x {cols:d}, {size:d} bytes".format(rows=rows, cols=cols, size=len(dataset.PixelData)))if 'PixelSpacing' in dataset:print("Pixel spacing....:", dataset.PixelSpacing)plt.imshow(dataset.pixel_array, cmap=plt.cm.bone) plt.show()總結(jié)
以上是生活随笔為你收集整理的使用python玩转dicom文件——医学图像处理工具pydicom入门教程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 通过Cadence学拉扎维的第2天-mo
- 下一篇: 线性调频信号及仿真[python]