matlab - 从灰度图像的 2D 切片集创建 3D 体积

标签 matlab image-processing 3d 2d

我要使用 Matlab 从灰度图像集创建一个 3D 体积。一组包含二维灰度图像的连续量化切片。我仍然认为自己是 Matlab 的菜鸟,但这是我目前的想法:

  • 为 3D 体积创建一个空白空间。
  • 在每张图片上,我们执行所有的预处理操作,以便我们只得到我们感兴趣的部分。 (在这个问题中,假设这个预处理部分总是完美地工作)
  • 遍历图像,每个像素在 2D 上的 x 和 y 坐标将转移到空白空间。对于 z 坐标,我们可以使用与每个切片之间的距离相关的切片编号。如果一个像素与另一个像素相邻,则 3D 点将连接在一起。
  • 重复前两个步骤,直到完成所有切片。我们现在将连接所有点,就像在 2D 切片中一样。

但是麻烦来了,我们如何将切片之间的点连接起来,让这些点成为一个体积呢?或者在 Matlab 中有更强大的方法吗?非常感谢任何建议。

最佳答案


第 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) 或者简单地说,set(gcf, 'Renderer', 'OpenGL')


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


要在切片之间插入像素,您需要指定一种插值方法(上面的一些工具包具有这种能力/灵 active 。否则,为了给您一个良好的开端,插值的一些示例是双三次、样条、多项式等..(您可以通过在 google 或 google/scholar 上查找更适合您的问题领域的插值方法来解决这个问题)。


第 3 部分 - 3D 预处理


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


我在自己的医学影像研究项目中遵循了上述概念,上述发现是 based on my research experience documented here (with latest revisions) .

关于matlab - 从灰度图像的 2D 切片集创建 3D 体积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6891154/

相关文章:

python - 如何在Python中 reshape 一个矩阵,然后将其乘以另一个矩阵,然后再次 reshape 它

arrays - 在matlab中对向量中的数字 block 求和

matlab - 如何使用 vim 和包含 "+"符号的路径

3d - three.js 加载具有多个可点击点的 .obj 文件

math - 围绕原点进行 3d 旋转

performance - 从具有增强性能的文本文件中删除重复出现的行

Python Image.open() 给出 'object has no attribute' 错误

objective-c - 使用摄像头检测心率

java - 使用位图的图像质量问题

c++ - 地形跟随算法中的负行和负列