by HPC_ZY
之前写了医学影像三维重建的文章,许多小伙伴都来问测试数据的model是怎么生成的。这个其实是MATLAB基础,但由于询问的人太多,就在这里统一回复了。
一、三维体数据的生成
其实三维体数据本质就是三维矩阵、三维数组,最简单的就是把值一个个存进去。
% M,N,D 是长宽高,请按照你自己的数据设置
model = zeros(M,N,D);
for i = 1:M
for j = 1:N
for k = 1:D
% ai是某个想设定的值,请用具体值代替此处的ai
model(i,j,k) = ai;
end
end
end
二、多二维矩阵生成三维体数据
- 赋值法
% M,N,D 是长宽高,请按照你自己的数据设置
model = zeros(M,N,D);
for k = 1:D
% Ai是某个想存入的二维矩阵,请用具体矩阵代替此处的Ai
% 每个Ai尺寸必须一致
model(:,:,k) = Ai;
end
- 拼接法
% Ai是某个想存入的二维矩阵,请用具体矩阵代替此处的Ai
% 每个Ai尺寸必须一致
model = cat(3,A1,A2,...,Ai,...,An);
三、多二维图像生成三维体数据
假设你有很多二维切片图像,想生成三维体数据。
% M,N,D 是长宽高,请按照你自己的数据设置
model = zeros(M,N,D);
for k = 1:D
% 请使用你自己的图片名,替代此处的filename
im = imread(filename);
% 如果你的图像是彩色时,需要加入下一句;如不是,请删去。
im= rgb2gray(im);
model(:,:,k) = im;
end
关于如何在循环中修改文件名(filename)方法,假如我的图像命名为
test1.jpg
test2.jpg
…
test86.jpg.
test87.jpg
则方法如下:
% 此处的k为上述代码中的迭代变量
filename = ['test',num2str(k),'.jpg'];
四、DICOM序列生成三维体数据
五、其他
当然有时你也能直接获得三维体数据(别人给的,或网上下载的)。
此时只需要根据该数据的类型,使用相应的读取方法(百度)即可,如:
.mat
.vtk
.raw
…