体积渲染
目录
体积渲染
在科学可视化和计算机图形学中,体积渲染是一组用于显示3D离散采样数据集(通常是3D标量场)的2D投影的技术。
典型的3D数据集是由CT、MRI或MicroCT扫描仪获取的一组2D切片图像。通常,这些是以规则模式(例如,每毫米深度一个切片)获取的,并且通常在规则模式中具有规则数量的图像像素。这是规则体积网格的示例,每个体积元素或体素由单个值表示,该值是通过对体素周围的直接区域进行采样而获得的。
要渲染3D数据集的2D投影,首先需要在相对于体积的空间中定义相机。此外,还需要定义每个体素的不透明度和颜色。这通常使用RGBA(用于红色、绿色、蓝色、alpha)传递函数来定义,该函数可以将任何可能的体素值映射到RGBA值。
例如,可以通过从体积中提取等值面(相等值的表面)并将它们渲染为多边形网格或直接将体积渲染为数据块来查看体积。的移动立方体算法是用于从体数据中提取等值面的常用技术。直接体绘制是一项计算密集型任务,可以通过多种方式执行。
体积渲染的范围
体积渲染不同于薄层断层扫描演示,通常也不同于3D模型的投影,包括xxx强度投影。尽管如此,从技术上讲,当在二维显示器上观看时,所有体积渲染都变成了投影,使得投影和体积渲染之间的区别有点模糊。尽管如此,体积渲染模型的缩影以混合着色和着色为特征,以创建逼真的和/或可观察的表示。
直接体积渲染
直接体积渲染器要求将每个样本值映射到不透明度和颜色。这是通过“传递函数”完成的,该函数可以是简单的斜坡、分段线性函数或任意表格。一旦转换为RGBA颜色模型(用于红色、绿色、蓝色、alpha)值,组合的RGBA结果就会投影到帧缓冲区的相应像素上。这样做的方式取决于渲染技术。
这些技术的组合是可能的。例如,剪切扭曲实现可以使用纹理硬件在屏幕外缓冲区中绘制对齐的切片。
硬件加速体积渲染
由于直接体渲染极其并行的特性,在GPU体渲染变得足够快之前,专用体渲染硬件是一个丰富的研究课题。最被广泛引用的技术是的VolumePro实时光线投射系统,通过开发汉斯皮特·菲斯特和科学家在三菱电气研究实验室,它采用了高内存带宽和蛮力使用光线投射算法,以呈现。该技术转移到TeraRecon,Inc.并生产和销售了两代ASIC。VP1000于2002年发布,VP2000于2007年发布。
最近开发的一种加速传统体积渲染算法(如光线投射)的技术是使用现代显卡。从可编程像素着色器开始,人们认识到了对多个像素进行并行操作的能力,并开始在图形处理单元(GPGPU)上执行通用计算。在像素着色器能够读取和显存随机写入和执行一些基本的数学和逻辑运算。这些SIMD处理器用于执行一般计算,例如渲染多边形和信号处理。在最近几代GPU中,像素着色器现在可以用作MIMD处理器(现在能够独立分支)利用高达1GB的浮点格式纹理内存。有了这样的能力,几乎任何具有可以并行执行的步骤的算法,例如体射线投射或断层扫描重建,都可以以极大的加速度执行。可编程像素着色器可用于模拟照明、阴影、反射、发光颜色等特性的变化。可以使用高级着色语言编写此类模拟。
优化技术
优化的主要目标是尽可能多地跳过音量。典型的医疗数据集的大小可能为1GB。要以30帧/秒的速度渲染,需要极快的内存总线。跳过体素意味着需要处理的信息更少。
空格跳过
通常,体绘制系统将具有用于识别不包含可见材料的体区域的系统。该信息可用于避免渲染这些透明区域。
早期光线终止
这是在按从前到后顺序呈现体积时使用的一种技术。对于穿过像素的光线,一旦遇到足够密集的材料,进一步的样本将对像素没有显着贡献,因此可以忽略。
八叉树和BSP空间细分
使用八叉树和BSP树等分层结构对于体积数据的压缩和体积射线投射过程的速度优化都非常有帮助。
音量分割
体积分割包括自动去骨,例如在此CT血管造影的右侧图像中使用的。胸部3D渲染CT扫描的体积分割:前胸壁、气道和肺根前方的肺血管已被数字化去除,以显示胸腔内容:-蓝色:肺动脉-红色:肺静脉(还有腹壁)-黄色:纵隔-紫色:横膈膜
图像分割是一种手动或自动过程,可用于在渲染之前将人们认为无趣的大部分体积分割出来,可以显着减少必须通过光线投射或纹理混合进行的计算量。对于n个顺序索引的体素,这种减少可以从O(n)到O(logn)。体积分割对于其他光线追踪算法也具有显着的性能优势。随后可以使用体积分割来突出显示感兴趣的结构。
通过以较粗的分辨率表示体积中不太有趣的区域,可以减少数据输入开销。仔细观察,这些区域中的数据可以通过从内存或磁盘读取或通过插值来填充。与从原始图像创建2Dmipmap图像的方式相同,将较粗分辨率的体积重新采样为较小的尺寸。这些较小的体积也可以在将体积旋转到新方向时单独使用。

预集成体积渲染
预集成体渲染是一种可以通过预计算大部分所需数据来减少采样伪影的方法。它在硬件加速应用程序中特别有用,因为它可以提高质量而不会对性能产生很大影响。与大多数其他优化不同,这不会跳过体素。相反,它减少了准确显示体素区域所需的样本数量。这个想法是渲染样本之间的间隔而不是样本本身。这种技术捕捉快速变化的材料,例如从肌肉到骨骼的过渡,计算量要少得多。
基于图像的网格划分
基于图像的网格划分是从3D图像数据(例如MRI、CT、工业CT或显微断层扫描)创建计算机模型的自动化过程,用于计算分析和设计,例如CAD、CFD和FEA。
体素的时间重用
对于完整的显示视图,每个像素(前一个)只需要显示一个体素(虽然可以使用更多的体素来平滑图像),如果需要动画,可以缓存要显示的前体素及其位置相对于相机可以在它移动时重新计算。在显示体素相距太远而无法覆盖所有像素的情况下,可以通过光线投射或类似方法找到新的前体素,并且在一个像素中有两个体素的情况下,可以保留前体素。