小白的学习之旅又前进一小小步,所有内容都是实践过程中确实经历过的,有理解不准确的还请大家留言,多多交流~
最近使用Brainweb时第一次遇见rawb格式的脑数据,本文总结rawb数据的python读取方法,以及将rawb数据转换成nii数据,方便用itk snap等软件查看
Brainweb的数据包括灰质白质等标签,下载方便。
链接:https://brainweb.bic.mni.mcgill.ca/brainweb/
Python读Brainweb的rawb数据
Brainweb提供的rawb数据不包含头信息,只是像素点信息的数组,头信息可以在下载的页面查看到。
读取方法:
import numpy as np
import nibabel as nib
# LI:读.rawb文件的数据,path是文件所在路径,自己加上就可以
img_data = np.fromfile(path, dtype='uint8')
# LI:将一维数据转换成三维数据,z*y*x:181*217*181
data_new_shape = img_data.reshape(181, 217, 181)
# LI:转换成nii图像,并存储
raw_affine = np.diag([-1, -1, 1, 1])
array_img = nib.Nifti1Image(data_new_shape, raw_affine)
nib.save(array_img, 'raw_new.nii')
原文中np.diag(-1,-1,1,1)缺少了中括号,应为:
np.diag([-1, -1, 1, 1])
这一步的具体原理我还没弄明白只知道affine得到的是4*4矩阵,在uint8格式下对角线值是-1,-1,1,1,哪位大神明白原理也请留言告诉我,谢谢~