欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python讀取預(yù)處理DICOM文件方式詳解

 更新時(shí)間:2023年03月31日 09:39:00   作者:Sayello  
這篇文章主要介紹了Python讀取預(yù)處理DICOM文件方式,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

需要的庫(kù)

●Simpleitk
安裝命令:

conda install -c simpleitk simpleitk

使用:

import SimpleITK as sitk

pydicom(不推薦,可能有些文件打不開(kāi))
安裝命令:

conda install -c conda-forge pydicom

●PIL
使用:

from PIL import Image

讀取dicom

讀取Series信息
由于患者可以同時(shí)做多個(gè)檢查,所以dicom中可以包含多個(gè)study(多次檢查,一般只有一個(gè)檢查,所以不用管這個(gè))和series(多個(gè)部位,一些信息也是用不同series保存),所以第一步就是要讀取series信息。

在這里插入圖片描述

代碼:

reader = sitk.ImageSeriesReader()
ids = reader.GetGDCMSeriesIDs(dict_name)

ids里包含了所有series的id,dict_name為dicom文件所在目錄路徑
讀取Series中所有圖片
利用上面讀取的series的id可以分開(kāi)讀取不同series。
代碼:

for i in ids:
    series_file_name = reader.GetGDCMSeriesFileNames(dict_name, i)

series_file_name中包含某個(gè)series所有圖片的路徑,一般我們只需要圖片數(shù)量最多的那個(gè)series。ids為series的id列表,dict_name為dicom文件所在目錄路徑。

(重點(diǎn))讀取meta data(元數(shù)據(jù))
dicom文件包含大量的元數(shù)據(jù),會(huì)指出與該次檢查的相關(guān)信息,常用的有 Slice thickness(層厚), Pixel spacing(像素間距)可以根據(jù)需要讀取相應(yīng)的元數(shù)據(jù)。
代碼:

file_reader = sitk.ImageFileReader()
file_reader.SetFileName(series_file_name[0])
file_reader.ReadImageInformation()
study_id = file_reader.GetMetaData("0008|1030")
series_file_name[0]

可以為任意dicom文件的路徑,“0008|1030"為元數(shù)據(jù)的tags,詳細(xì)的可以參考http://www.yuantk.com/toolkit_40.html ,或者直接搜索"dicom tag”

轉(zhuǎn)換為圖片并保存
代碼:

image = sitk.ReadImage(series_file_name[0])
image_data = sitk.GetArrayFromImage(image)[0]
image_data = normalization(image_data)
Image.fromarray(image_data).convert("RGB").save(image_save_path)

series_file_name[0]可以為任意dicom文件的路徑,使用simpleitk讀取的數(shù)據(jù)已經(jīng)進(jìn)利用斜率和截距進(jìn)行了線性變換無(wú)需二次處理。image_save_path為保存的路徑,注意路徑要包含文件名(例:‘./1.png’),這里的要重點(diǎn)關(guān)注normalization函數(shù),該函數(shù)涉及窗口技術(shù)。

(重點(diǎn))窗口技術(shù)
由于dicom存儲(chǔ)的是CT值矩陣,由于各種組織結(jié)構(gòu)或病變具有不同的CT值,因此欲顯示某一組織結(jié)構(gòu)細(xì)節(jié)時(shí),應(yīng)選擇適合觀察該組織或病變的窗寬和窗位,以獲得最佳顯示,這里需要利用窗口技術(shù)進(jìn)行轉(zhuǎn)換。窗口技術(shù)涉及兩個(gè)關(guān)鍵參數(shù),窗位與窗寬。
窗寬(WW):是CT圖像上顯示的CT值范圍,在此CT值范圍內(nèi)的組織和病變均以不同的灰度顯示,而CT值高于此范圍的組織和病變,均以白影顯示,不再有灰度差異;反之,低于此范圍的組織結(jié)構(gòu),均以黑影顯示,也無(wú)灰度差別。
窗位(WL):是窗的中心位置。
公式:

WW=CTmax-CTmin
WL=(CTmax+CTmin)/2
CTmax = WW/2+WL
CTmin = WL-WW/2

轉(zhuǎn)換后的圖片灰度值=(CT值-CTmin) / (CTmax - CTmin) * 255
代碼:

def normalization(data, window_level=-600., window_width=2000.):
	high = window_level + window_width / 2
	low = window_level - window_width / 2
	data = (data - low) / window_width * 255
	data[data > 255] = 255
	data[data < 0] = 0
	return data

window_level和window_width根據(jù)實(shí)際需要設(shè)定,data為simpleitk讀取的數(shù)據(jù)

到此這篇關(guān)于Python讀取預(yù)處理DICOM文件方式的文章就介紹到這了,更多相關(guān)Python讀取DICOM文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python如何將多個(gè)模型的ROC曲線繪制在一張圖(含圖例)

    python如何將多個(gè)模型的ROC曲線繪制在一張圖(含圖例)

    這篇文章主要給大家介紹了關(guān)于python如何將多個(gè)模型的ROC曲線繪制在一張圖的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-02-02
  • 解決python中導(dǎo)入win32com.client出錯(cuò)的問(wèn)題

    解決python中導(dǎo)入win32com.client出錯(cuò)的問(wèn)題

    今天小編就為大家分享一篇解決python中導(dǎo)入win32com.client出錯(cuò)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-07-07
  • python 識(shí)別圖片中的文字信息方法

    python 識(shí)別圖片中的文字信息方法

    今天小編就為大家分享一篇python 識(shí)別圖片中的文字信息方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • 用代碼幫你了解Python基礎(chǔ)(3)

    用代碼幫你了解Python基礎(chǔ)(3)

    這篇文章主要用代碼幫你了解Python基礎(chǔ),使用循環(huán),字典和集合的示例代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Python中裝飾器學(xué)習(xí)總結(jié)

    Python中裝飾器學(xué)習(xí)總結(jié)

    這篇文章主要介紹了Python中裝飾器學(xué)習(xí)總結(jié),分享了相關(guān)代碼示例,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • python之?dāng)M合的實(shí)現(xiàn)

    python之?dāng)M合的實(shí)現(xiàn)

    這篇文章主要介紹了python之?dāng)M合的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Python處理CSV與List的轉(zhuǎn)換方法

    Python處理CSV與List的轉(zhuǎn)換方法

    下面小編就為大家分享一篇Python處理CSV與List的轉(zhuǎn)換方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • python實(shí)現(xiàn)輸出一個(gè)序列的所有子序列示例

    python實(shí)現(xiàn)輸出一個(gè)序列的所有子序列示例

    今天小編就為大家分享一篇python實(shí)現(xiàn)輸出一個(gè)序列的所有子序列示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11
  • Pytorch distributed 多卡并行載入模型操作

    Pytorch distributed 多卡并行載入模型操作

    這篇文章主要介紹了Pytorch distributed 多卡并行載入模型操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • python去掉行尾的換行符方法

    python去掉行尾的換行符方法

    下面小編就為大家?guī)?lái)一篇python去掉行尾的換行符方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-01-01

最新評(píng)論