第1章 VTK概览 1
1.1 VTK概述 1
1.1.1 VTK是什么 1
1.1.2 VTK能做什么 1
1.1.3 如何获取VTK源码 2
1.1.4 VTK学习资源 5
1.2 VTK的编译安装 5
1.2.1 编译VTK的准备工作 6
1.2.2 编译VTK的详细步骤 7
1.3 创建一个简单的VTK程序 12
1.3.1 什么是CMake 12
1.3.2 CMakeLists.txt脚本文件 13
1.3.3 CMake的几个常用命令 16
1.3.4 一个简单的VTK工程 19
1.4 本章小结 20
第2章 VTK的基本概念 21
2.1 一个稍微复杂的VTK程序 21
2.2 三维场景的基本要素 26
2.2.1 灯光 26
2.2.2 相机 27
2.2.3 颜色 29
2.2.4 纹理映射 30
2.3 坐标系统及空间变换 31
2.3.1 坐标系统 31
2.3.2 空间变换 34
2.4 VTK管线 35
2.4.1 VTK渲染引擎 35
2.4.2 VTK可视化管线 37
2.5 VTK智能指针 41
2.5.1 引用计数 41
2.5.2 智能指针 42
2.5.3 运行时类型识别 45
2.6 本章小结 46
第3章 VTK基本数据结构 47
3.1 可视化数据的基本特点 47
3.2 数据对象和数据集 48
3.2.1 vtkDataObject 48
3.2.2 vtkDataSet 48
3.3 单元类型 53
3.3.1 线性单元 56
3.3.2 非线性单元 57
3.4 属性数据 59
3.4.1 标量数据 60
3.4.2 矢量数据 61
3.4.3 纹理坐标 61
3.4.4 张量数据 61
3.5 不同类型的数据集 62
3.5.1 vtkImageData 62
3.5.2 vtkPolyData 63
3.5.3 vtkRectilinearGrid 63
3.5.4 vtkStructuredGrid 63
3.5.5 vtkUnsructuredGrid 63
3.5.6 vtkUnstructuredPoints 64
3.6 数据的存储与表达 64
3.6.1 vtkDataArray 64
3.6.2 数据对象的表达 66
3.7 本章小结 67
第4章 VTK数据的读写 68
4.1 Reader与Writer类 68
4.1.1 vtkImageData类型 68
4.1.2 vtkPolyData类型 73
4.1.3 vtkRectilinearGrid类型 74
4.1.4 vtkStructuredGrid类型 74
4.1.5 vtkUnstructuredGrid类型 74
4.2 场景的导入与导出 74
4.3 本章小结 76
第5章 VTK图像处理 77
5.1 VTK图像创建 77
5.1.1 VTK图像数据结构 77
5.1.2 VTK图像创建 78
5.2 VTK图像显示 80
5.2.1 vtkImageViewer2 80
5.2.2 vtkImageActor 82
5.2.3 图像融合 84
5.3 VTK图像基本操作 85
5.3.1 图像信息的访问与修改 85
5.3.2 图像像素值的访问与修改 88
5.3.3 图像类型转换 91
5.3.4 图像颜色映射 92
5.3.5 区域提取 96
5.3.6 直方图统计 102
5.3.7 图像重采样 107
5.3.8 图像运算 109
5.3.9 图像二值化 112
5.4 边缘检测 114
5.4.1 梯度算子 114
5.4.2 Canny算子 117
5.4.3 拉普拉斯算子 120
5.5 图像平滑 121
5.5.1 均值滤波 122
5.5.2 高斯平滑 123
5.5.3 中值滤波 124
5.5.4 各向异性滤波 124
5.6 频域处理 125
5.6.1 快速傅里叶变换 126
5.6.2 低通滤波 128
5.6.3 高通滤波 130
5.7 本章小结 132
第6章 VTK图形处理 133
6.1 vtkPolyData数据生成与显示 133
6.1.1 vtkPolyData数据源 134
6.1.2 vtkPolyData数据的创建 135
6.1.3 vtkPolyData属性数据 137
6.2 基本的图形操作 141
6.2.1 法向量计算 143
6.2.2 符号化Glyphing 146
6.2.3 曲率计算 147
6.3 网格平滑 149
6.4 封闭性检测 151
6.5 连通区域分析 152
6.6 多分辨率处理 155
6.6.1 网格抽取 155
6.6.2 网格细化 156
6.7 表面重建 158
6.7.1 三角剖分 158
6.7.2 等值面提取 160
6.7.3 点云重建 162
6.8 点云配准 163
6.9 纹理映射 167
6.10 本章小结 168
第7章 体绘制 170
7.1 体绘制管线 170
7.2 vtk VolumeMapper 173
7.2.1 vtk VolumeRayCastMapper 173
7.2.2 vtkFixedPointVolumeRay CastMapper 176
7.2.3 vtkGPUVolumeRay CastMapper 177
7.2.4 纹理映射体绘制 178
7.2.5 裁剪 181
7.2.6 法向编码 182
7.3 vtkVolume 183
7.3.1 不透明度传输函数 183
7.3.2 梯度不透明度函数 185
7.3.3 颜色传输函数 185
7.3.4 光照与阴影 187
7.3.5 vtkLODProp3D 188
7.4 不规则网格数据体绘制技术 189
7.4.1 vtkUnstructuredGridVolume RayCastMapper 190
7.4.2 vtkUnstructuredGridVolume ZSweepMapper 190
7.4.3 vtkProjectedTetrahedra Mapper 190
7.4.4 vtkHAVSVolumeMapper 191
7.5 本章小结 192
第8章 VTK交互与Widget 194
8.1 观察者/命令模式 194
8.1.1 事件回调函数 194
8.1.2 vtkCommand子类 196
8.2 交互器样式 198
8.2.1 vtkRenderWmdowInteractor 198
8.2.2 vtkInteractorStyle 206
8.3 VTK Widget 212
8.3.1 创建Widget交互 216
8.3.2 测量类Widget 219
8.3.3 标注类Widget 220
8.3.4 分割/配准类Widget 222
8.3.5 其他Widget 223
8.4 拾取 223
8.4.1 点拾取 224
8.4.2 单元拾取 226
8.4.3 Prop拾取 228
8.5 本章小结 230
第9章 基于VTK的GUI应用程序 231
9.1 基于Qt的VTK应用程序 231
9.1.1 用CMake管理Qt工程 231
9.1.2 用CMake管理Qt与VTK工程 233
9.1.3 环境变量的加载 234
9.1.4 用QVTKWidget整合Qt和VTK 236
9.2 基于MFC的VTK应用程序 240
9.2.1 基于单文档的VTK应用程序 240
9.2.2 基于VTK的图像重采样程序 247
9.2.3 基于对话框的VTK应用程序 253
9.3 本章小结 264
第10章 自定义VTK类 265
10.1 VTK开发基础 265
10.1.1 引用计数与智能指针 265
10.1.2 vtkObject类分析 269
10.1.3 VTK类的实现 273
10.2 VTK管线机制 279
10.2.1 信息对象类vtkInformation 281
10.2.2 管线执行模型 286
10.3 自定义Filter 290
10.3.1 自定义Filter基本步骤 290
10.3.2 Filter实例 296
10.4 本章小结 302
附录 303
附录A 从VTK 5.0到VTK 6.0 303
附录B 体绘制传输函数控件 323
附录C VTK中文的实现 325
附录D VTK在商业软件中的应用 326
参考文献 328