在Matlab中,我想绘制几个二维图像(I(x,y)格式的二维矩阵中的所有数据)。我知道一个单一的情节,imagesc(我)可以实现所需的图像。但是,现在,我得到了一些图像,并希望将它们放在堆栈格式中,就像Examples中的图像如何在Matlab中以堆栈样式绘制多个2D图像?
回答
正如你所暗示的,你的问题最有用的功能是:slice
。您还应该阅读本Mathworks文章:Exploring Volumes with Slice Planes
,因为它提供了有关如何使用切片的更多示例。
对于你的情况,你有每个切片的数据(每个图像是一个切片),你只需要将它们打包在一起,以便Matlab将它们解释为体积数据。
由于您没有提供任何样本数据来处理,我必须生成一个小样本。我将使用Matlab的功能flow
生成容积数据,并提取4幅图像(4片)出来的:
%% Generate sample images
[x,y,z,v] = flow; %// x,y,z and v are all of size [25x50x25]
im1 = v(:,:,5); %// extract the slice at Z=5. im1 size is [25x50]
im2 = v(:,:,10); %// extract the slice at Z=10. im2 size is [25x50]
im3 = v(:,:,15); %// extract the slice at Z=15. im3 size is [25x50]
im4 = v(:,:,20); %// extract the slice at Z=20. im4 size is [25x50]
hf = figure ;
subplot(221);imagesc(im1);title('Z=5');
subplot(222);imagesc(im2);title('Z=10');
subplot(223);imagesc(im3);title('Z=15');
subplot(224);imagesc(im4);title('Z=20');
%// This is just how I generated sample images, it is not part of the "answer" !
它给你4张简单的图片:
现在是真正的乐趣。堆栈所有的图像在一个矩阵,就好像他们只是切片:
M(:,:,1) = im1 ;
M(:,:,2) = im2 ;
M(:,:,3) = im3 ;
M(:,:,4) = im4 ;
您现在有一个矩阵M [25x50x4]
。 如果你有太多的图片,你可以制定一个循环来堆叠他们。
从那里开始,只需拨打slice
即可获得您想要的照片。查看文档以探索所有可能的渲染选项。一个简单的例子是:
hf2 = figure ;
hs = slice(M,[],[],1:4) ;
shading interp
set(hs,'FaceAlpha',0.8);
主要生产:
注:这里使用了默认的索引,这应该是对你有好处描述(简单地堆积一些图片)的问题。如果你想让你的体积具有真实的坐标,你可以用ndgrid
建立一个坐标系统。例如:
[xs,ys,zs] = ndgrid(1:25 , 1:50 , 1:4) ;
将创建尺寸为[25x50x4]
的网格/坐标系。只需替换数字即可构建所需的网格坐标。
谢谢。它很好地工作。 –
将它们全部排列在3D矩阵中。这将安排他们,你会得到stack(i,j,k)
,其中stack(i,:,:)
给你一个特定的图像和i
是切片号码。一旦完成,使用this库。 Viewer3D
几乎可以让您在交互式3D图形界面中将所有内容都可视化,并且还可以执行插值。但是,切片之间的数据应该存在正相关关系,否则3D图像看起来没有意义。
- 1. 在WebGL中绘制多个2D图像
- 2. 2D绘制在Matlab
- 3. 如何在Matlab中绘制2D FFT?
- 4. 在MATLAB中创建图像堆栈
- 5. Matlab。如何绘制图像
- 6. 在DirectX中绘制多个2D图形
- 7. 如何在R中的3D图中绘制多个2d图?
- 8. 如何在2D矩阵中绘制matlab中的多边形
- 9. 绘制2D网格在MATLAB
- 10. MATLAB - 绘制多个图形
- 11. 如何在XNA中绘制2D像素?
- 12. Matlab - 堆叠图像(2d切片)
- 13. 怎样堆栈中的图像垂直
- 14. 如何在R中绘制堆栈系列线图?
- 15. 通过多个2D Matlab绘图进行动画制作
- 16. 如何传说在Matlab中绘制堆积条形图组?
- 17. 如何在matlab上加载图像堆栈
- 18. 在matlab中绘制2d矩阵的行
- 19. 绘制matlab中的多个图
- 20. 在绘制图像时出现javascript堆栈溢出
- 21. 如何在matlab中绘制背景图中的图像
- 22. 向量化在Matlab中切断图像堆栈视图
- 23. 在OpenGL中绘制多个2D纹理
- 24. 在MATLAB中绘制极坐标图像
- 25. 在图像中绘制矩形 - Matlab
- 26. 如何用matplotlib绘制多个图像?
- 27. 通过调用堆栈绘制图表
- 28. 如何以编程方式创建图像像堆栈交换图像flair
- 29. Gnuplot如何绘制类似于Matlab的样式的3D图形
- 30. 在android中绘制一个2D饼图,就像饼图。
你想要什么叫切片,检查这个问题http://stackoverflow.com/questions/29625091/plotting-a-3d-matrix-in-slices-matlab –