从2D切片的灰度图像创建3D体积
image-processing
matlab
5
0

我要使用Matlab从灰度图像集中创建3D体积。一组包含2D灰度图像的连续且量化的切片。我仍然被认为是Matlab的新秀,但这就是我目前的想法:

  • 为3D体积创建一个空白空间。
  • 在每个图像上,我们执行所有预处理操作,以便仅得到我们感兴趣的部分。 (在此问题中,假定此预处理部分始终正常运行)
  • 浏览图像,二维上每个像素的x和y坐标将转移到空白区域。对于z坐标,我们可以相对于每个切片之间的距离使用切片编号。如果一个像素与另一个像素相邻,则3D点将连接在一起。
  • 重复前面的2个步骤,直到完成所有切片。现在,我们将像2D切片中那样连接所有点。

但是麻烦来了,我们如何连接切片之间的点,以使这些点成为一个体积?还是在Matlab中有更强大的方法?任何建议都将受到高度赞赏。

参考资料:
Stack Overflow
收藏
评论
共 2 个回答
高赞 时间 活跃

第0部分-假设


  • 所有2D图像都具有相同的尺寸,因此您的3D体积可以将它们全部容纳在一个矩形立方体中
  • 每个2D图像中的大多数像素都具有3D空间关系(如果每个2D图像中的像素具有某种随机分布,则无法直观地看到。)

第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]图片3 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)或简单地说, 设置(gcf,'Renderer','OpenGL')


第2部分-在切片之间插入像素


要对切片之间的像素进行插值,您需要指定一种插值方法(上述一些工具包具有此功能/灵活性。否则,为了让您有一个良好的开端,一些插值示例包括双三次,样条,多项式等。(您可以通过在google或google / scholar上查找针对您问题域的插值方法来解决此问题)。


第3部分-3D预处理


查看程序,您首先要处理每个2D图像来处理体积数据。在许多高级算法中或在真正的3D处理中,您可以做的是首先在3D域中处理体积数据(简单地说,首先要考虑26个或更多邻居)。完成此步骤后,您可以将体积数据简单地输出到一堆2D图像中以进行横截面查看,或者提供给上述工具箱之一进行3D查看或输出到第三方3D查看应用程序。


我在自己的医学影像研究项目中遵循了上述概念,并且上述发现是基于此处记录的研究经验(最新修订)

收藏
评论

MATLAB通常使用3d数组绘制体积数据。数据点沿每个轴在空间上均匀分离。如果3d数组中有您没有数据的站点,通常会为它们分配NaN值,并且各种绘图功能通常可以以合理的方式处理此问题(即通常会按您的预期方式运行)。

如果将切片加载到3d数组中,使得数据的z方向上的相邻点在数组的第3维上也相邻,则应该没问题。

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号