1 VTK简介
VTK(The Visualization ToolKit): 可视化的开源工具包。可自由使用的图像处理和可视化的三维计算机图形学软件系统,被世界各地成千上万的研究人员和开发人员使用。类似的还有opencv
VTK不是一个公司,一个单位开发出来的,而是全世界科学工作者贡献得到的
VTK由C++代码组成的,其大量的库都是由C++编写,但是它提供了几个解释接口层,包括JAVA、Python等。Kitware为VTK提供专业支持和产品。
(1)VTK提供了广泛的视觉算法,包含scalar、vector、tensor、texture、and volumetric methods
(2)VTK提供了先进的建模技术,例如隐式建模(implicit modeling)、三角网格简化(polygon reduction)、网格光滑(mesh smooothing)、切割(cutting)、轮廓(contouring)等等——对三维可视化提供了非常强的工具包。
(3)数十种成像算法已直接集成,允许用户混合2D成像/3D图形算法和数据
(4)编写基于先进的程序理念,面向对象编程,有很好的扩展性,易于维护
(5)跨平台的,支持各种操作系统(在不同平台下对VTK进行编译,形成适用于该平台下的包即可)
(6)VTK中的图形模块是更加上层的抽象,相较于其他渲染库如OpenGL,更容易去创建有用的图形和视觉程序,其实底层部分还是会调用OpenGL的很多功能。
(7)VTK程序是被C++直接写的(已有包含700+类),但是支持TCL、java、python。实际上,在JAVA上还能提供很好的GUI。能够快速建立有用的应用。
特点:
(1)软件:
联机文档;基于C++代码,但易于理解 ;包含很多案例,程序,测试案例,数据;支持多线程,分布式存储。
(2)交互与界面:
集成了很多窗口系统,包括QT(界面优美,但是简单)等;支持很好的人机交互; (6)包含一系列widget:如点、线。。。
(3)3D图形
表面渲染;体绘制;等
(4)支持数据类型
polygonal data(多边形数据):点、线、多边形、三角形带;图像和volumes;structured grids
图像(image)/体(volumes)
结构化(非结构化)网格(structured grid)
非结构化点
(5)图像操作
特征、过滤(低通、高通滤波、膨胀、腐蚀、卷积、差异、求梯度、均值、距离、FFT、高斯、直方图、阈值化、填充等等)
优点:
(1)免费
(2)容易创建图像、视觉软件
(3)基于c++ ,但是易于扩展。适应于各种语言
(4)图像、视觉、成像代码
(5)支持很多3Dwidget
(6)很多先进有用的算法
(7)集成软件
(8)平台库独立
(9)数据和图片等不同结构之间的转换
(10)面向对象
缺点:
(1)速度慢:如果你精通图形学,建议使用OpenGL,VTK适合不太专业的开发者,特别是图形学。
(2)非常大:需要较好的电脑配置
下载:
http://www.vtk.org
2 ITK简介
VTK缺点:只支持三维数据,内存管理较差
ITK: 更加关注于图像配准和图像分割(ITK主要的推出是医学图像,但是因为功能强大,在其他领域也十分流行)
ITK同样使用C++实现,但是支持其他语言;跨平台;
ITK不再支持图形学的功能。
Cmake: vtk和itk使用Cmake进行编译
提供强大的图像功能(配准、分割):
(1)图像配准:相互信息(mutual information)、地标距离(landmark distance)
(2)图像转换:仿射(affine)、Rigid、透射(projective)、基于核的操作
(3)优化算法:共轭梯度法、梯度下降法
(4)分割算法:可变形网格(deformable mesh)、分水岭(watershed)、区域增长(Region growing)
(5)图像处理算法:对比度增强算法、形态学图像处理
(1)图像处理:ITK提供强大的图像处理的操作(配准、分割等);
(2)可视化:三维绘制,图形学工作,使用VTK、OpenGL
(3)界面:使用QT等工具
ITK所需的工具:
(1)c++编译器
(2)Cmake:http://www.cmake.org