我将使用Matlab从灰度图像集中创建3D体积。一组包含2D灰度图像的连续和量化切片。我仍然认为自己是Matlab的新手,但这就是我目前的想法:
但是这里遇到了麻烦,我们如何连接切片之间的点,以便这些点可以成为一个卷?或者在Matlab中有更强大的方法吗?任何建议都受到高度赞赏。
答案 0 :(得分:16)
第0部分 - 假设
第1部分 - 从一堆2D图像中可视化3D体积
要从一堆2D图像中可视化或重建3D体积,您可以在matlab中尝试以下工具包。
1 3D CT / MRI图像交互式滑动查看器 http://www.mathworks.com/matlabcentral/fileexchange/29134-3d-ctmri-images-interactive-sliding-viewer
[2] Viewer3D http://www.mathworks.com/matlabcentral/fileexchange/21993-viewer3d
[3] Image3 http://www.mathworks.com/matlabcentral/fileexchange/21881-image3
[4] Surface2Volume http://www.mathworks.com/matlabcentral/fileexchange/8772-surface2volume
[5] SliceOMatic http://www.mathworks.com/matlabcentral/fileexchange/764
请注意,如果您熟悉VTK,可以试试这个: [6] matVTK http://www.cir.meduniwien.ac.at/matvtk/
我目前正在坚持使用[5] SliceOMatic,因为它简单易用。但是,默认情况下,在Matlab中渲染3D非常慢。打开openGL可以提高渲染速度。 (http://www.mathworks.com/help/techdoc/ref/opengl.html)或者简单地说, set(gcf,'Renderer','OpenGL')。
第2部分 - 插入切片之间的像素
要在切片之间插入像素,您需要指定插值方法(上面的一些工具包具有此功能/灵活性。否则,为了让您先行一步,插值的一些示例是双三次,样条,多项式等..(你可以通过查看google或google / scholar来解决问题领域更具针对性的插值方法)。
第3部分 - 3D预处理
查看您的程序,首先处理每个2D图像,然后处理体积数据。在许多高级算法或真正的3D处理中,您可以做的是首先处理3D域中的体积数据(简单地说,首先考虑26个邻居或更多的邻居)。完成此步骤后,您只需将体积数据输出到一堆2D图像中进行横截面查看,或者将其提供给上述工具包中的一个以进行3D查看或输出到第三方3D查看应用程序。
我已经按照上述概念进行了自己的医学影像研究项目,上述发现是based on my research experience documented here (with latest revisions)。
答案 1 :(得分:3)
MATLAB通常使用3d数组绘制体积数据。数据点沿每个轴在空间上均匀分开。如果3d数组中有您没有数据的站点,通常会为它们分配NaN
值,并且各种绘图函数通常可以合理的方式处理(即通常会按照您的意图运行)
如果将切片加载到3d数组中,使得数据的z方向上的相邻点也在数组的第3维中相邻,那么您应该没问题。