python 讀取.nii格式圖像實(shí)例
我就廢話不多說了,大家還是直接看代碼吧~
# encoding=utf8’’’查看和顯示nii文件’’’import matplotlibmatplotlib.use(’TkAgg’) from matplotlib import pylab as pltimport nibabel as nibfrom nibabel import nifti1from nibabel.viewers import OrthoSlicer3D example_filename = ’../ADNI_nii/ADNI_002_S_0413_MR_MPR____N3__Scaled_2_Br_20081001114937668_S14782_I118675.nii’ img = nib.load(example_filename)print (img)print (img.header[’db_name’]) #輸出頭信息width,height,queue=img.dataobj.shapeOrthoSlicer3D(img.dataobj).show() num = 1for i in range(0,queue,10): img_arr = img.dataobj[:,:,i] plt.subplot(5,4,num) plt.imshow(img_arr,cmap=’gray’) num +=1plt.show()
3D顯示結(jié)果:
ADNI數(shù)據(jù)維度(256,256,170)分段顯示:
補(bǔ)充知識(shí):python nii圖像擴(kuò)充
我就廢話不多說了,大家還是直接看代碼吧~
import osimport nibabel as nibimport numpy as npimport math src_us_folder = ’F:/src/ori’src_seg_folder = ’G:/src/seg’ aug_us_folder = ’G:/aug/ori’aug_seg_folder = ’G:/aug/seg’ img_n= 10rotate_theta = np.array([0, math.pi/2]) # augmentationaug_cnt = 0for k in range(img_n): src_us_file = os.path.join(src_us_folder, (str(k) + ’.nii’)) src_seg_file = os.path.join(src_seg_folder, (str(k) + ’_seg.nii’)) # load .nii files src_us_vol = nib.load(src_us_file) src_seg_vol = nib.load(src_seg_file) # volume data us_vol_data = src_us_vol.get_data() us_vol_data = (np.array(us_vol_data)).astype(’uint8’) seg_vol_data = src_seg_vol.get_data() seg_vol_data = (np.array(seg_vol_data)).astype(’uint8’) # get refer affine matrix ref_affine = src_us_vol.affine ############### flip volume ############### flip_us_vol = np.fliplr(us_vol_data) flip_seg_vol = np.fliplr(seg_vol_data) # construct new volumes new_us_vol = nib.Nifti1Image(flip_us_vol, ref_affine) new_seg_vol = nib.Nifti1Image(flip_seg_vol, ref_affine) # save aug_us_file = os.path.join(aug_us_folder, (str(aug_cnt) + ’.nii’)) aug_seg_file = os.path.join(aug_seg_folder, (str(aug_cnt) + ’_seg.nii’)) nib.save(new_us_vol, aug_us_file) nib.save(new_seg_vol, aug_seg_file) aug_cnt = aug_cnt + 1 ############### rotate volume ############### for t in range(len(rotate_theta)): print ’rotating %d theta of %d volume...’ % (t, k) cos_gamma = np.cos(t) sin_gamma = np.sin(t) rot_affine = np.array([[1, 0, 0, 0],[0, cos_gamma, -sin_gamma, 0],[0, sin_gamma, cos_gamma, 0],[0, 0, 0, 1]]) new_affine = rot_affine.dot(ref_affine) # construct new volumes new_us_vol = nib.Nifti1Image(us_vol_data, new_affine) new_seg_vol = nib.Nifti1Image(seg_vol_data, new_affine) # save aug_us_file = os.path.join(aug_us_folder, (str(aug_cnt) + ’.nii’)) aug_seg_file = os.path.join(aug_seg_folder, (str(aug_cnt) + ’_seg.nii’)) nib.save(new_us_vol, aug_us_file) nib.save(new_seg_vol, aug_seg_file) aug_cnt = aug_cnt + 1
以上這篇python 讀取.nii格式圖像實(shí)例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. .Net加密神器Eazfuscator.NET?2023.2?最新版使用教程2. 詳解瀏覽器的緩存機(jī)制3. Xml簡介_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理4. python多線程和多進(jìn)程關(guān)系詳解5. 一款功能強(qiáng)大的markdown編輯器tui.editor使用示例詳解6. Python xlrd/xlwt 創(chuàng)建excel文件及常用操作7. python 寫函數(shù)在一定條件下需要調(diào)用自身時(shí)的寫法說明8. 存儲(chǔ)于xml中需要的HTML轉(zhuǎn)義代碼9. Python 實(shí)現(xiàn)勞拉游戲的實(shí)例代碼(四連環(huán)、重力四子棋)10. ASP動(dòng)態(tài)網(wǎng)頁制作技術(shù)經(jīng)驗(yàn)分享
