面绘制 (Surface Rendering)
VTK中基于面绘制实现三维重建,使用的是经典的Marching Cubes(移动立方体法)算法。
面绘制是采用分割技术对一系列的二维图像进行轮廓识别、提取等操作,最终还原出被检测物体的三维模型,并以表面的方式显示出来。
面绘制的数据流管道pipeline结构为:
读取器->提取等值面->数据处理->映射器->实例化角色->绘制器->绘制窗口->交互器->交换方式。
Marching Cubes算法简介:
首先,假定原始数据是离散的三维空间规则数据场;
其次,给出所求等值面的值;
最后,找出等值面经过的体元位置,求出该体元内的等值面并计算出相关参数(以便由常用的图形软件包或图形硬件提供的面绘制功能绘制等值面)。
VTK提供了两种提取等值面的类:
(1) vtkContourFilter
(2) vtkMarchingCubes.
VTK通过vtkPolyDataNormals在等值面上产生法向量;通过vtkStripper在等值面上产生纹理或三角面片。
体绘制(Volume Rendering)
VTK中基于体绘制实现三维重建,使用的是光线投射法(Ray-casting)。
体绘制的原理和面绘制完全不相同。面绘制需要生成中间图元,而体绘制则是直接在原图上进行绘制,内容需求较面绘制小。每切换一个视角需要重新对所有的像素点进行颜色和透明度计算,需要时间比面绘制长。
原文地址:http://blog.51cto.com/weiyuqingcheng/2113888
时间: 2024-09-28 13:03:00