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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

全网最详细 Python如何读取NIFTI格式图像(.nii文件)和 .npy格式文件和pkl标签文件内容

發布時間:2025/3/11 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 全网最详细 Python如何读取NIFTI格式图像(.nii文件)和 .npy格式文件和pkl标签文件内容 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在醫學圖像處理中,我們經常使用一種NIFTI格式圖像(.nii文件),現在我們來看看

  • 什么是.nii文件?
  • 該如何讀取.nii文件?
  • 1. NIFTI格式圖像

  • 什么是NIFTI(Neuroimaging Informatics Technology Initiative)格式圖像?
    在講解什么是NIFTI格式之前,得先了解一下Analyze格式。Analyze格式儲存的每組數據組包含2個文件,一個為數據文件,其擴展名為.img,包含二進制的圖像資料;另外一個為頭文件,擴展名為.hdr,包含圖像的元數據。在fMRI的早期,Analyze格式最常用的格式,但現在逐漸被NIFTI格式所取代。Analyze格式主要不足就是頭文件不能真正反映元數據。
    標準NIFTI圖像的擴展名是.nii,也包含了頭文件及圖像資料。由于NIFTI格式和Analyze格式的關系,因此NIFTI格式也可使用獨立的圖像文件(.img)和頭文件(.hdr)。單獨的.nii格式文件的優勢就是可以使用標準的壓縮軟件(如gzip)進行壓縮,而且一些分析軟件包(比如FSL)可以直接讀取和寫入壓縮的.nii文件(擴展名為.nii.gz)。

  • 為什么會出現NIFTI格式圖像?
    原來的ANALYZE 7.5 format圖像格式缺少一些信息,比如沒有方向信息,病人的左右方位等,如果需要包括額外的信息,就需要一個額外的文件,比如ANALYZE 7.5就需要一對<.hdr, .img>文件來保存圖像的完整信息。因此,解決這個問題Data Format Working Group (DFWG) 將圖像格式完整的定義為NIFTI格式。

  • 詳細了解NIFTI格式請參見:?https://brainder.org/2012/09/23/the-nifti-file-format/

    2. 讀取NIFTI格式圖像

    2.1 ITK-SNAP

    推薦ITK-SNAP下載地址:http://www.itksnap.org/pmwiki/pmwiki.php?n=Downloads.SNAP3

    可以看到:itk-snap獲得了分別來自三個角度的視圖(水平面、矢狀面、冠狀面)

    2.2? Python讀取npy文件代碼

    import os image = np.load('/content/drive/MyDrive/coursework1-data/2D_projection_R_sub-0.npy', encoding='bytes') print(image.shape) A = image[:, :, 0] B = image[:, :, 1] C = image[:, :, 2] plt.imshow(A) plt.show() plt.imshow(B) plt.show() plt.imshow(C) plt.show()

    ?2.3? Python讀取pkl文件代碼

    file_path='/content/drive/MyDrive/Colab Notebooks/Training_meta.pkl' meta_path=os.path.join(file_path) meta=pd.read_pickle(meta_path) print(meta)

    ?

    ?2.4? Python讀取nii文件代碼并保存成png格式圖片

    import numpy as np import os #遍歷文件夾 import nibabel as nib #nii格式一般都會用到這個包 import imageio #轉換成圖像 from PIL import Image np.set_printoptions(threshold=np.inf) def nii_to_image(niifile):return 0filepath = './' # 讀取本代碼同個文件夾下所有的nii格式的文件 filenames = os.listdir(filepath) imgfile = './'slice_trans = []for f in filenames: #開始讀取nii文件s = f[-3:]print(s)if s != '.nii':continues1 = f[:-4]print(s1)imgfile_path = imgfile + s1print("imgfile_path:"+imgfile_path)img_path = os.path.join(filepath, f)img = nib.load(img_path) #讀取niiprint("img:")print(img)img_fdata = img.get_fdata()fname = f.replace('.nii','') #去掉nii的后綴名img_f_path = os.path.join(imgfile, fname)if not os.path.exists(img_f_path):os.mkdir(img_f_path)#創建nii對應的圖像的文件夾 # # if not os.path.exists(img_f_path): # os.mkdir(img_f_path) #新建文件夾 # #開始轉換為圖像if '.gz' in s1:(x, y, z, _) = img.shapeprint("img2:")print(img.shape)else:(x,y,z) = img.shapeprint("img3:")print(img.shape)for i in range(z): #z是圖像的序列silce = img_fdata[:, :, i] #選擇哪個方向的切片都可以imageio.imwrite(os.path.join(img_f_path,'{}_mask.png'.format(i)), silce)img = Image.open(os.path.join(img_f_path,'{}_mask.png'.format(i)))img.save(os.path.join(img_f_path,'{}_mask.png'.format(i)))

    任何程序錯誤,以及技術疑問或需要解答的,請添加作者VX:1755337994

    ?

    ?

    總結

    以上是生活随笔為你收集整理的全网最详细 Python如何读取NIFTI格式图像(.nii文件)和 .npy格式文件和pkl标签文件内容的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。