1 OpenCV
OpenCV的全称是 Open Source Computer Vision Library,直译就是“开源计算 机视觉库”。取代表开源的单词“Open”、“Computer”的首字母“C”以及“Vision” 的首字母“V”,组合命名为“OpenCV”。
OpenCV于1999年由Intel建立,如今由 Willow Garage提供支持。它是一个 基于开源发行的跨平台计算机视觉库,可以运行在Linux、Windows、Mac OS、Android、iOS、Maemo、FreeBSD、OpenBSD等操作系统上。OpenCV 由一系列 C函数和C++类构成,轻量且高效。强大的OpenCV除了用C/C++语言进行开发和使用之外,还支持使用C#、Ch、Ruby等编程语言,同时提供了对Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。下图所示为OpenCV的Logo图形。
OpenCV的设计目标是执行速度尽量快,主要关注实时应用。它采用优化的C/C++代码编写,能够充分利用多核处理器的优势,其主要目标是构建一个简单易用的计算机视觉框架,以帮助开发人员更便捷地设计更复杂的计算机视觉相关应用程序。
OpenCV由一系列C函数和C++类构成,拥有包括500多个C函数的跨平台的中高层 API。它不依赖于其他的外部库—但如果有需要,也可以使用某些外部库。OpenCV覆盖了计算机视觉的许多应用领域,如工厂产品检测、医学成像、信息安全、用户界面、摄像机标定、立体视觉和机器人等。因为计算机视觉和机器学习密切相关,所以OpenCV还提供MLL(Machine Learning Library)机器学 习库。该机器学习库主要用于统计方面的模式识别和聚类(clustering)。MLL 除了用在视觉相关的任务中,还可以方便地应用于其他机器学习场合。
2 图像处理
图像处理(Image Processing)是用计算机对图像进行分析,以达到所需结果的技术,又称影像处理。图像处理技术一般包括图像压缩,增强和复原,匹配、描述和识别3个部分。图像处理一般指数字图像处理(Digital Image Processing)。其中,数字图像是指用工业相机、摄像机、扫描仪等设备经过拍摄得到的一个大的二维数组。该数组的元素称为像素,其值称为灰度值。而数字图像处理是通过计算机对图像进行去除噪声、增强、复原、分割、提取特征等处理的方法和技术。
计算机视觉(Computer Vision)是一门研究如何使机器“看”的科学,具体地说,就是是指用摄影机和电脑代替人眼对目标进行识别、跟踪和测量等机器视觉,并进一步做图形处理,用电脑处理使之成为更适合人眼观察或传送给仪器检测的图像的一门学科。作为一门科学学科,计算机视觉研究相关的理论和技术,试图建立能够从图像或者多维数据中获取“信息”的人工智能系统。因为感知可以看做是从感官信号中提取信息,所以计算机视觉也可以看做是研究如何使人工系统从图像或多维数据中“感知”的科学。
图像处理和计算机视觉的区别在于:图像处理侧重于“处理”图像——如增强,还原,去噪,分割,等等;而计算机视觉重点在于使用计算机(也许是可移动式的)来模拟人的视觉,因此模拟才是计算机视觉领域的最终目标。而OpenCV (Open Source Computer Vision Library),是一个基于开源发行的跨平台计算机视觉库,它实现了图像处理和计算机视觉方面的很多通用算法,已经成为了计算机视觉领域最有力的研究工具之一。
OpenCV 项目最早由Intel 公司于1999年启动,旨在促进CPU密集型应用。为了达到这一目的,Intel启动了多个项目,包括实时光线追踪和三维显示墙。在Intel的性能库团队的帮助下, OpenCV实现了一些核心代码和算法,并发给Intel俄罗斯的库团队。因此, OpenCV的诞生,是在与软件性能库团队的合作下,发源于Intel的研究中心,并在俄罗斯得到实现和优化。
3 OpenCV应用领域
- 人机交互
- 物体识别
- 图像分区
- 人脸识别
- 动作识别
- 运动跟踪
- 机器人