医学影像中用 python 读取 nrrd 文件、nrrd转nii、nrrd转h5
用 python 讀取 nrrd 文件一般使用 pynrrd 這個庫
1 安裝pynrrd
pip 安裝
pip install pynrrd源碼安裝
pip install git+https://github.com/mhe/pynrrd.git cd pynrrd pip install . // 注意不要忘了最后的小點2 讀取 nrrd 文件
//先導入 nrrd 庫 import nrrd data_path=r'你自己的 nrrd 文件路徑’ data,options=nrrd.read(data_path) # 讀入 nrrd 文件 ''' data:保存圖片的多維矩陣; nrrd_options:保存圖片的相關信息 ''' 可以打印查看data 和 nrrd_options 里面的內容: print(data) print(options) OrderedDict([('type', 'unsigned char'), ('dimension', 3), ('space', 'left-posterior-superior'), ('sizes', array([640, 640, 88])), ('space directions', array([[1., 0., 0.],[0., 1., 0.],[0., 0., 1.]])), ('kinds', ['domain', 'domain', 'domain']), ('encoding', 'raw'), ('space origin', array([0., 0., 0.]))])3 查看 nrrd 文件的形狀
# 查看nrrd文件的形狀 print(data.shape) # (640, 640, 88)正常情況下讀取出來的 nrrd 數據應該都是類似這種的格式:[w, h, n]第三維度保存的是圖像的序號;
但是在一些情況先我們讀出來的數據格式是:[c, w, h, n] ;這乍一看沒啥為題,就是多了第一維度的通道信息。
4 將 nrrd 矩陣轉換為圖像數據
4.1 數據格式為[w, h, n]
import nrrd import PIL from PIL import Imagedata_path = './data/laendo.nrrd' data, options = nrrd.read(data_path) # 讀入nrrd文件 ''' data:保存圖片的多維矩陣 nrrd_options:保存圖片的相關信息 ''' print(data) print(options) # 查看nrrd文件的形狀 print(data.shape)img = Image.fromarray(data[:, :, 50]) temp_path = './data/temp_img.png' img.convert('RGB').save(temp_path)4.2 數據格式為[c, w, h, n]
我的 nrrd 文件轉成圖像后是用于深度學習,
data.shape = (3, 512, 512, 237)
所以就先將其轉換為PIL 格式(需要用到PIL庫)
究其原因,是因為[c, w, h, n]中,c的原因;如果要想成功的將其轉換為圖像數據,可以使用下面這條命令
img=Image.fromarray(data[1,:,:,20]) # 截取第一個通道的第20張圖片但是我經過對比,發現三個通道上的信息不同,如果隨意選擇一個進行提取,那么就會丟失另外兩個通道的信息。后面我問其他人,他們說第一個維度上的數值還有為 2 的,瞬間就給我整懵了。
后來經過查詢以及對三個通道的圖像對比,懷疑第一維度上面的信息可能表示 患者接受掃描的期相,1 表示平掃,只有一期;2 表示增強,有動脈期和靜脈期;3 表示造影,有動脈期、靜脈期和平衡期。
同時從掃描角度考慮,在這幾個掃描期相中,患者的位置是相對固定的,也就是說我們可以隨意選擇其中一個期相都可以;但是反過來,我們可以將所有期相的數據都利用上。
如果只是想隨意選擇其中的一個期相,使用上面一個命令即可,如果想將所有的期相都用起來,那么需要增加一個循環。
5 nrrd轉nii
import nrrd import nibabel as nib import numpy as np# nrrd 文件保存路徑 data_path=r'./data/1.nrrd' save_path='./data/1.nii'data,options=nrrd.read(data_path) # 讀取 nrrd 文件 img=nib.Nifti1Image(data,np.eye(4)) # 將 nrrd 文件轉換為 .nii 文件 nib.save(img,save_path) # 保存 nii 文件6 nrrd轉h5
- Download heart MRI data MICCAI 2018 Atrial Segmentation Challenge.
- Pre-processing data like existing work UA-MT
總結
以上是生活随笔為你收集整理的医学影像中用 python 读取 nrrd 文件、nrrd转nii、nrrd转h5的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网络流的最大流入门(从普通算法到dini
- 下一篇: Ribbon使用及其客户端负载均衡实现原