日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

使用python玩转dicom文件——医学图像处理工具pydicom入门教程

發(fā)布時(shí)間:2023/12/31 python 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用python玩转dicom文件——医学图像处理工具pydicom入门教程 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

從醫(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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。