一、计算机视觉
1.定义:给计算机安装上眼睛(照相机)和大脑(算法),让其能感知周围的环境。它是对生物视觉的一种模拟,通常的做法是通过对采集的图像或视频进行处理来获得相应场景的三维信息。
2.应用: 计算机科学和工程、信号处理、物理学、应用数学和统计学
3.OpenCV不但能够实时运行许多不同的计算机视觉算法(高度优化),而且几乎可以兼容所有的平台。OpenCV是开发计算机视觉最流行的库之一。它使我们能够实时运行许多不同的计算机视觉算法。
二、本书主要内容
1.各种操作系统的 安装步骤,介绍人类视觉系统,以及计算机视觉视觉中主要的各种内容。
2.如何在OpenCV中读/写图像和视频,并且介绍如何使用Cmake建立一个项目。
3.介绍如何通过创建一个图形用户界面和鼠标事件检测器来实现交互式应用程序。
4.直方图和滤波器,演示如何卡通化图像。
5.描述各种图像的预处理技术,如如何去噪声、阈值化,以及轮廓分析。
6.处理对象识别和机器学习,并学习如何使用支持向量机建立一个对象分类系统。
7.讨论人脸检测和Harr级联,并解释如何使用这些方法来检测人脸的各个部分。
8.探索背景差分、视频监控和形态学图像操作,并描述它们如何彼此关联。
9.如何使用不同的技术跟踪对象,如基于颜色和基于特征。
10.介绍光学字符识别、文本分割和Tesseract OCR引擎。
11.深入研究Tessertact OCR引擎,介绍如何将它应用于文本检测、提取和识别。
下载本书事例代码
第1 章 OpenCV的探险之旅
1.1理解人类视觉系统
一、人类的视觉系统
1.特点
- 人类视觉对低频内容敏感程度高于高频内容。低频内容(像素值不迅速改变的平面区域)高频内容(像素值波动很大的角落和边缘区域)
- 人眼敏感度:亮度变化>颜色变化
- 对运动事物敏感。如有东西在视野中运动,即时没有直视,也很快意识到。
- 往往用心记住视野内突出的点。
2.看不同事物的角度
3.人类如何理解图像内容
(1)趋于通过形状和一些重要特征记忆一个对象。大脑创建了可以帮助我们稳健有关位置、缩放和角度方面的不变性层次结构。
(2)很多细胞在视觉皮层。如人轻松识别椅子。
4.机器难以理解图像内容?
(1)形状、尺寸、观点、角度、光线、遮挡。如机器眼里,同样的椅子从侧面看不一样。
(2)一种解决方法:将一个对象的变化存储起来,包括大小、角度、光线等,但很费时且不能将遇到的每一种变化收集起来。当有特殊遮挡时,也无法识别。
(3)构建基本功能块,在各种情况下结合成复杂的算法,OpenCV提供很多功能。可以高效使用它创建有趣的应用。
二、OpenCV可以做什么
1.做很多可以想象出的计算机视觉任务。需要理解哪些函数和模块能达到预期的效果。
2.可以立即使用的方法:
(1)内置数据结构和输入、输出
OpenCV中提供大量内置基元去处理涉及图像和计算机视觉的操作。如果从零开始写,需要定义一些对象包括图像、点、矩阵等。OpenCV中愿意提供基本框架。
imgcodecs模块处理图像文件的读写。当处理图像和创建图像文件时,你可以通过简单的命令将图像保存为PNG或者JPG格式文件。当使用摄像头时 需要处理大量的视频文件。
videoio模块可以处理视频文件所有读写相关的操作。
(2)图像处理方法
当编写计算机视觉算法时,会有一堆反复使用的基本图像处理操作。
imgproc模块:大部分函数。可以处理如图像滤波,形态学操作,几何变换,色彩变换,绘制图像,结构分析,直方图,形状分析等。
ximproc 模块:处理高级用户交互操作。创建用于展示图像或者视频的窗口等一系列函数。还包括等待功能,当用户触发键盘才进行下一步操作。还有一个函数可以检测鼠标移动,可以在输入窗口中绘画长方形,处理被选择的区域。
(3)视频分析
包括分析视频中的连续帧之间的运动,跟踪视频中的不同对象,创建视频监控模型等。(video模块)
videostab模块:视频去抖动
(4)三维重建
将一系列二维图像重建出三维场景。(calib3d模块)
(5)特征提取
从一个给定场景中提取特征点。
(6)目标检测
在给定图像中检测目标的位置。objdetect和xobjdetect模块。
(7)机器学习
使用各种机器学习算法来实现不同的事情。OpenCV提供了ml模块。算法包括贝叶斯分类器、K邻域、支持向量机、决策树、神经元网络。flann模块:包含大量的快速临近搜索算法。
(8)计算摄影
使用先进的图像处理技术来优化相机拍摄的图像。
(9)形状分析
(10)光流算法
用于跟踪在视频的连续帧的特征。
(11)人脸识别和目标识别
(12)曲面匹配
与捕获周围对象的三维结构的设备进行交互。
(13)文本检测和识别
铭牌识别、自动驾驶汽车道路识别,图书扫描转数字内容
P21
版权归原作者 枫子有风 所有, 如有侵权,请联系我们删除。