从2D图像堆栈渲染3D体积

时间:2012-05-17 14:42:43

标签: c++ opengl volumes

我参与了一个项目,我需要从卷的一系列图像中渲染3D体积。已经通过几种技术创建了图像,使得它们是所讨论的对象的垂直切片。

数据集与this question类似,但提问者正在寻找Matlab解决方案。

目标是让这张图近乎实时(> 1Hz更新率),从我的研究开始,openGL似乎是绘图的最快选择。在openGL中是否有内置函数在openGL中渲染卷而不是以下的伪代码算法。

foreach(Image in Folder)
     foreach(Pixel in Image)
        pointColour(pixelColour)
        pointLocation(Pixel.X,Pixel.Y,Image.Z)
        drawPoint

我不关心图像之间的插值,当前间距足够小,不需要它。

1 个答案:

答案 0 :(得分:3)

我担心如果您正在考虑体积渲染,您需要先了解volume rendering integral,因为屏幕上像素的合成颜色是与其对齐的所有体素的函数对于当前的视角。

有两种方法可以使用传统图形硬件实时渲染卷。

  1. 将体积渲染为与3D纹理(代理几何体)相交的一组2D视图对齐切片。解释here
  2. 使用使用可编程图形硬件的raycaster,教程here
  3. 这不是一个容易解决的问题 - 但取决于你需要做什么,事情可能会更简单一些。例如:您是否关心具有交互式传输功能?你想要透视图,还是正交投影就足够了?你在渲染iso表面吗?您是否仅将此用于MPR-type次观看?