vtk面绘制的实现
来源:互联网 发布:ubuntu系统声音主题包 编辑:程序博客网 时间:2024/06/05 12:05
如题:将图层数据(vtkimagedata)生成3D对象(vtkpolydata)
示例代码如下:
vtkSmartPointer<vtkMarchingCubes> pMarchingCubes = vtkSmartPointer<vtkMarchingCubes>::New(); pMarchingCubes->SetInputData(vtkimagedata); pMarchingCubes->SetNumberOfContours(1); pMarchingCubes->SetValue(0, 1);
vtkMarchingCubes简称MC方法,是一个过滤器,该过滤器接受一个体数据的输入(三维规则的点集),输出一个或者多个等值面。使用它,必须给等值面赋值。或者,你可以设定的一个scalar的范围和等值面的间隔来决定这个范围内的一系列的等值面的值。
输出的数据往往有噪声,因此通常会经过一些后续处理,以下是示例代码
vtkSmartPointer<vtkSmoothPolyDataFilter> pSmoothPolyDataFilter = vtkSmartPointer<vtkSmoothPolyDataFilter>::New(); pSmoothPolyDataFilter->SetInputConnection(pMarchingCubes->GetOutputPort()); pSmoothPolyDataFilter->SetNumberOfIterations(m_nNumberOfIterations); pSmoothPolyDataFilter->SetRelaxationFactor(0.05); vtkSmartPointer<vtkPolyDataNormals> pPolyDataNormals = vtkSmartPointer<vtkPolyDataNormals>::New(); pPolyDataNormals->SetInputConnection(pSmoothPolyDataFilter->GetOutputPort()); pPolyDataNormals->SetFeatureAngle(m_nFeatureAngle);
vtkSmoothPolyDataFilter 实现的是Laplacian 平滑,示例中只指定迭代次数和放松因子,迭代次数越多,平滑的越厉害,同时细节损失越严重。放松因子是Laplacian算法的一个参数,在所有的迭代算法中,这个参数控制迭代过程的稳定性。一般情况下小的放松系数和大的迭代次数会使迭代算法的收敛过程更稳定。
另外,可以使用其他变量控制平滑过程,BoundarySmoothing控制是否对边界点平滑。FeatureEdgeSmoothing控制是否对特征边上的点平滑,需用SetFeatureAngle指定特征角阈值,如一条边被两个相邻多边形公用,若这两个多边形的法向量的夹角(特征角)大于定义的阈值,则称该边为特征边。
vtkPolyDataNormals 用于计算polydata的法向量,计算法向量之后会使可视化之后的数据更加平滑,SetFeatureAngle用于设置特征角,两个相邻多边形的角度大于该角,则称多边形的共用边是尖锐的,默认是30度,锐边分裂(splitting)开启,多边形顺序(consistency)一致性开启。
推荐参考以下博客,介绍了体绘制与面绘制的基本实现http://blog.csdn.net/inter_peng/article/details/53931566
- vtk面绘制的实现
- 基于VTK实现面绘制(SR)和体绘制(VR)的基本代码
- VTK 三维重建 面绘制
- VTK面绘制
- VTK 面绘制 重建
- 基于VTK的体绘制系统实现
- VTK 面绘制 显示人头
- VTK 面绘制 三维数据源
- 用vtk+Qt实现离散数据的体绘制
- VTK:读取raw文件进行面绘制
- VTK实现面模型切割
- VTK实现面模型切割
- VTK面绘制时,通过Actor改变不了颜色
- 使用vtk面绘制dicom医学断层图像
- VTK之类的实现
- vtk体绘制交互问题的解决方案
- VTK 三维轮廓等值面的提取
- 多边形面的绘制
- 四大组件的匹配过程
- XML总结
- Maven学习笔记一
- C++ 静态成员
- C++详解Leetcode:105. Construct Binary Tree from Preorder and Inorder Traversal
- vtk面绘制的实现
- php 安装错误 undefined reference to `sapi_globals_id'
- bzoj2132: 圈地计划
- appium 代码实例
- python环境安装
- hpuoj 【1052】所爱图书【sort】
- Android Keycode详解
- Python Django项目基本配置
- 计算机名词解释