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

Kar*_*arl 10 3d matlab 2d image-processing

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

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

但是这里遇到了麻烦,我们如何连接切片之间的点,以便这些点可以成为一个体积?或者在Matlab中有更强大的方法吗?任何建议都非常感谢.

Gar*_*sui 16


第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] 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)或者简单地说,设置(gcf,'渲染器','OpenGL').


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


要在切片之间插入像素,您需要指定插值方法(上面的一些工具包具有此功能/灵活性.否则,为了给您一个良好的开端,插值的一些示例是双三次,样条,多项式等.(你可以通过在谷歌或谷歌/学者上查找更具体的问题域的插值方法来解决这个问题.


第3部分 - 3D预处理


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


我已经按照上述概念进行了自己的医学影像研究项目,上述发现是基于我在此记录的研究经验(最新修订版).