如何读取并对nii三维数据进行切片处理、转换格式保存

1.首先,我们从https://ww2.mathworks.cn/matlabcentral/fileexchange/8797-tools-for-nifti-and-analyze-image?s_tid=mwa_osa_a 下载Tools for NIfTI and ANALYZE image,并放到toolbox路径中;

2.添加导入路径:addpath('/MATLAB/R2013a/toolbox/NIfTI_20140122');

3. 导入图像:

close all;

clear all;

clc;

nii = load_nii( 'CT_wl_0.nii' );  % 装载.nii数据

img = nii.img;  % 因为这个文件有img和head二个部分,其中img部分是图像数据

4:切片分层显示图像:

[n1,n2,n3] = size(img); %读取文件的各个维度大小

imshow(img(:,:,10),[]); %预览第10个维度的图片

for i = 1:n3

figure(i) %建立一个图形窗口,如果没有这一句则所有切片只会依次显示于一个窗口

ti = imshow(img(:,:,i),[]);

end

5:保存图像为tif格式或其它格式:

imwrite(img(:,:,1),'result.tif');

>> imwrite(img(:,:,2),'result02.tif');

>> imwrite(img(:,:,3),'result03.tif');

>> imwrite(img(:,:,4),'result04.tif');

>> imwrite(img(:,:,5),'result05.tif');

>> imwrite(img(:,:,6),'result06.tif');

>> imwrite(img(:,:,7),'result07.tif');

>> imwrite(img(:,:,8),'result08.tif');

>> imwrite(img(:,:,9),'result09.tif');

>> imwrite(img(:,:,10),'result10.tif');

>> imwrite(img(:,:,11),'result11.tif');

>> imwrite(img(:,:,12),'result12.tif');

>> imwrite(img(:,:,13),'result13.tif');

>> imwrite(img(:,:,14),'result14.tif');

>> imwrite(img(:,:,15),'result15.tif');

>> imwrite(img(:,:,16),'result16.tif');

>> imwrite(img(:,:,17),'result17.tif');

>> imwrite(img(:,:,18),'result18.tif');

 

注:1.只有imwrite途经保存的图像没有白边

    2.保存到当前文件夹下:imwrite(I,'stripes2.png');

保存到当前文件夹下的一个子文件result下:imwrite(I,'./result/stripes2.png');

保存到当前文件夹上一层的一个文件夹result下:imwrite(I,'../result/stripes2.png');

其中I为要保存图像,stripes2.png为文件名,保存为png格式,要提前建立一个文件夹result才可以。

3.保存多个图像时,顺序命名图像文件名称需用到 num2str 或 sprintf命令。

 

 

针对第三点进行补充,可以自动命名并保存所有切片的程序如下:

nii = load_nii( 'MR_std.nii' );  % 装载.nii数据

img = nii.img;  % 因为这个文件有img和head二个部分,其中img部分是图像数据

save image.mat img  % 将数据变成mat格式

load 'image.mat'  % 加载数据

[n1, n2, n3] = size(img);   % 获取.nii文件的三个维度,一般1、2维是图像维度,第三维是切片

for i = 1:n3   % 开始切片数据轮寻

figure(i)   % 开始显示图片

ti = imshow(img(:,:,i),[]);  % 显示每一张切片图像

title(['result',num2str(i)])

     set(gcf,'color',[1 1 1])

     F(i)=getframe(gcf);

     imwrite(F(i).cdata,['result',num2str(i),'.tif'])   

end

  • 9
    点赞
  • 76
    收藏
    觉得还不错? 一键收藏
  • 21
    评论
### 回答1: 首先,我们需要将nrrd文件读取到Matlab中。这可以通过调用nrrdread函数实现,该函数可以从nrrd文件中读取数据和元数据。 接下来,我们需要利用Matlab中的NIfTI工具箱将读取的nrrd数据转换nii格式。这可以通过使用make_nii函数实现,该函数可以将读取的nrrd数据转换nii格式,并创建一个NIfTI数据结构。 最后,我们需要将转换后的nii数据存储在硬盘上,以便将其用于后续的分析。这可以通过调用save_nii函数实现,该函数将nii数据保存为文件。 下面是一个简单的Matlab代码示例,演示如何读取nrrd数据并将其转换nii格式: % 导入nrrd数据 [nrrd_data, metadata] = nrrdread('example.nrrd'); % 转换nii格式 nii_struct = make_nii(nrrd_data, metadata.spacing, metadata.origin); % 保存nii文件 save_nii(nii_struct, 'example.nii'); 通过运行这个代码示例,我们可以将名为"example.nrrd"的文件转换为"example.nii"文件,方便后续分析。 ### 回答2: MATLAB是一种常用的工具,为医学图像处理和分析提供了强大的支持。在读取nrrd数据的过程中,MATLAB提供了读取nrrd文件的函数nrrdread,可以将nrrd格式数据读入MATLAB,并直接使用MATLAB对其进行分析和处理。 当读取nrrd数据后,我们可以使用MATLAB中的mat2niix函数,将nrrd文件转换nii格式。该函数使用方法如下: ```matlab mat2niix('input_file.nrrd', 'output_file.nii') ``` 其中,input_file.nrrd表示要转换的nrrd文件的路径和文件名,output_file.nii表示转换后的nii文件的路径和文件名。 需要注意的是,转换后的nii文件格式可能与原始nrrd文件不完全相同,需要在进一步的分析过程中进行确认和调整。 除了使用MATLAB自带的函数,也可以使用一些第三方的工具箱来处理nrrd和nii格式数据,如NITRC-CE, NiftyReg, ANTS等。 总之,MATLAB提供了方便和灵活的工具来处理医学图像数据,并支持多种数据格式读取处理和存储,可以在医学图像分析和研究中起到很大的作用。 ### 回答3: MATLAB是一种很强大的科学计算软件,它支持读取处理多种数据格式,包括常见的NRRD和NIFTI格式。下面我们将介绍如何使用MATLAB读取NRRD数据并将其转换NII格式。 首先,我们需要下载并安装一个开源的NRRD阅读器——nrrdread。可以在MATLAB应用商店中查找到此工具,并安装至MATLAB中。完成安装后,我们可以开始读取NRRD数据了。 读取NRRD数据的方法如下: ```matlab [data, meta] = nrrdread('yourfile.nrrd'); ``` 其中,'yourfile.nrrd'是待读取的文件名,data是数据矩阵,meta是元数据读取数据后,我们需要将它转换NII格式,可以使用MATLAB自带的nifti工具箱实现。将NRRD数据转换NII格式的方法如下: ```matlab nii = make_nii(data, voxel_size, origin); save_nii(nii, 'yourfile.nii'); ``` 其中,voxel_size和origin是数据体素大小和原点信息,可以从元数据中获取得到。make_nii函数将数据和元数据转化为一个NII对象,而save_nii函数将NII对象保存NII文件。 完成上述步骤后,我们就成功地将一个NRRD格式数据转换NII格式,并保存到本地了。这样,我们就可以使用MATLAB或其他支持NII格式的软件进一步处理和分析这些数据了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值