Pythonは.nii形式の画像の例を読み取ります

ナンセンスなことはあまり言いませんが、みんなコードを見てください〜

# encoding=utf8
'''
niiファイルの表示と表示
'''
import matplotlib
matplotlib.use('TkAgg')from matplotlib import pylab as plt
import nibabel as nib
from nibabel import nifti1
from 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.shape
OrthoSlicer3D(img.dataobj).show()
 
num =1for i inrange(0,queue,10):
 
 img_arr = img.dataobj[:,:,i]
 plt.subplot(5,4,num)
 plt.imshow(img_arr,cmap='gray')
 num +=1
plt.show()

3 Dは結果を示しています:

ADNIデータディメンション(256、256、170)セグメント表示:

補足知識:pythonnii画像拡張

ナンセンスなことはあまり言いませんが、みんなコードを見てください〜

import os
import nibabel as nib
import numpy as np
import 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=10
rotate_theta = np.array([0, math.pi/2])
 
# augmentation
aug_cnt =0for k inrange(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 newvolumes
 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 inrange(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 newvolumes
 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形式の画像を読み取る上記の例は、エディターによって共有されるすべてのコンテンツです。参照を提供したいと思います。

Recommended Posts

Pythonは.nii形式の画像の例を読み取ります
PythonはVOC形式のラベルの例を生成します
npy形式のデータ例へのPythonアクセス
100の小さなPythonの例
Python画像認識OCR
python PIL open \ display \ save image
Pythonは画像スティッチングを実装しています
画像処理PILに関するPython
Pythonはファイルを1行ずつ読み取ります
Pythonはパノラマ画像スティッチングを実装しています
画像スティッチング用のpythonopencv
Pythonは画像スティッチング機能を実装しています