赞
踩
OpenCV
OpenGL
OpenSceneGraph
Vulkan
WebGL
OpenCL
CUDA
DirectX
Direct3D
DirectX和Direct3D区别与联系
vtk是一个算法库,里面包括了很多挺不错的算法,如果做有限元云图,等值线,特别是医疗方面的算法,有很大的参加价值,我曾经把它的等值线算法提取出来
一个类就可以实现,主要函数就三四个,而且同时实现了云图,等值线,比网上的追踪算法要简单许多,它是一种栅格算法,国外的的维基百科有介绍,但是维基百科上的介绍和vtk的也不完全一样,虽然思路是一致的。vtk的渲染效率应该不是很快,里面没有集成八叉树等场景管理的算法,它的主要目的也不是渲染,而是算法。
而且它的架构也是一种管道流的方法,输入数据经过一系列的算法处理后,最终形成点,线,面,存入vtkPolyData里面,然后在屏幕上绘制出来。
使用vtk主要有两种方法,第一种就是参考它的算法,直接抽也来,用自己的数据结构实现,这种方法方法可以脱离vtk, 直接加入到自己的软件里面,缺点就是提出麻烦,需要对vtk比较熟悉
第二种方法就是用vtk的数据结构,算法部分直接用vtk的库,然后最终的点线面数据从vktPolyData提取出来,用自己的代码绘制。缺点就是如果只用某种算法,比如它的等值线算法的话,也需要引用它的好几个库,显得太臃肿,优点是不用提取算法,而且可以直接的使用它提供的多种算法,本人两种方法都用过。
osg是一种场景图的方法,每个opengl相关的函数都是一个节点, 适合用仿真,里面集成的很多算法,比如多相机,多视图,粒子系统,各种回调函数,求交等都比较合适仿真,而且它只支持opengl, 扩展起来很方便,里面还集成了几种漫游器,如果要写自己的漫游器,也可以参考。如果初学者要学习图形学的话,推荐学习osg,网上也有很多的资料和教程,而且它有多线程的实现模型。
ogre用于游戏多些,而且支持d3d, 由于要同时实现opengl和d3d,所以相对OSG来说,它比较难以扩展,但是它的一些插件式的架构设计相当不错,如果想进入游戏行业,同时想学习了解引擎架构的话,推荐学习ogre,感觉ogre有点过度设计了,反而难以扩展,而且里面也没有集成好用的漫游器。它的粒子系统,场景管理都是插件式的,可以利用它来学习插件式的程序设计。
其他关于 vtk 与osg
在VTK之上开发的Paraview成为开源软件和很多公司的可视化工具。尤其在医疗三维可视化方面,基本上算是首选开发工具。采用VTK和Paraview为可视化开发工具比较出名的有OpenFOAM,Salome,StressCheck,Cubit等。
Vtk,(visualization toolkit)是一个开源的免费软件系统,主要用于三维计算机图形学、图像处理和可视化。Vtk是在面向对象原理的基础上设计和实现的,它的内核是用C++构建的,包含有大约250,000行代码,2000多个类,还包含有几个转换界面,因此也可以自由的通过Java,Tcl/Tk和Python各种语言使用vtk
VTK以用户使用的方便性和灵活性为主要原则,具有如下的特点:
1) 具有强大的三维图形功能。Visualization Toolkit 既支持基于体素Voxel-basedrendering 的体绘制Volume Rendering又保留了传统的面绘制,从而在极大的改善可视化效果的同时又可以充分利用现有的图形库和图形硬件
2) Visualization Toolkit 的体系结构使其具有非常好的流streaming和高速缓存caching 的能力,在处理大量的数据时不必考虑内存资源的限制
3) Visualization Toolkit 能够更好的支持基于网络的工具比如Java 和VRML 随着Web 和Internet 技术的发展VisualizationToolkit 有着很好的发展前景
4) 能够支持多种着色如OpenGL 等
5) Visualization Toolkit 具有设备无关性使其代码具有良好的可移植性
6) Visualization Toolkit 中定义了许多宏,这些宏极大的简化了编程工作并且加强了一致的对象行为
7) Visualization Toolkit 具有更丰富的数据类型,支持对多种数据类型进行处理
8) 既可以工作于Windows 操作系统又可以工作于Unix 操作系统极大的方便了用户。
OpenCV是 Open Source Computer Vision Library
OpenGL是 Open Graphics Library
OpenCV主要是提供图像处理和视频处理的基础算法库,还涉及一些机器学习的算法。比如你想实现视频的降噪、运动物体的跟踪、目标(比如人脸)的识别这些都是CV的领域
OpenGL则专注在Graphics,3D绘图。
其实两者的区别就是Computer Vision和Computer Graphics这两个学科之间的区别,前者专注于从采集到的视觉图像中获取信息,是用机器来理解图像;后者是用机器绘制合适的视觉图像给人看。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。