栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

210928-Matlab和SimpleITK保存和读取nii格式及其差异

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

210928-Matlab和SimpleITK保存和读取nii格式及其差异

引文: nii格式是医学图像常用格式,类似mhd,可以显示三维信息。以前使用.npy格式,主要是无法直接查看,因此考虑了解nii格式。

1、Matlab添加工具箱NIfTI的方法
(Linux下savepath会报错:Unable to save path to file ‘/usr/local/MATLAB/R2016b/toolbox/local/pathdef.m’,权限问题,可以
sudo chmod 666 /usr/local/MATLAB/R2016b/toolbox/local/pathdef.m)
python下SimleITK(简写为sitk)也可以保存nii。
sitk读取matlab和sitk保存的nii没有差异。
matlab读取matlab和sitk保存的nii有差异。差异来源于nii中头文件差异,具体也不清楚。
具体应打开图像后再自行检查。

# read by sitk
sitk.ReadImage(ct_path, sitk.sitkInt16)
ct_array = sitk.GetArrayFromImage
# write by sitk
ct_sitk = sitk.GetImageFromArray(ct_array)
sitk.WriteImage(ct_sitk, ct_path)
% write by matlab
imgs_nii=make_nii(permute(imgs,[2,1,3]));  % nii into matlab, maybe caused by Column-major in matlab
save_nii(imgs_nii, 'imgs.nii');
% read by matlab
imgs_nii = load_nii('imgs.nii');
imgs = imgs_nii.img;
imgs = fliplr(rot90(imgsa));  % read nii from sitk
imgs = permute(imgsa, [2,1,3]);  % read nii from matlab

2、nii保存数据类型较多,常用(u)int8(16,32),float32(4),所以保存CT图像时可用int16或float32(文件会大一倍),保存CT分割轮廓可用int8,由于轮廓大部分是0元素,可以采用.nii.gz格式,极大减少文件大小,只需在保存时将.nii换为.nii.gz即可。CT可以不换,会降低读取速度,可自行考虑。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/273136.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号