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_image = sitk.ReadImage(ct_path, sitk.sitkInt16)
ct_array = sitk.GetArrayFromImage(ct_image)
# 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可以不换,会降低读取速度,可自行考虑。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值