内容简介
这本书将通过一种通用的、明确的、可应用的方法来结合Arduino和计算机视觉的能力。书中的实践和方法可用于任何相关的问题和平台。本书想实现的终目标是让你可以通过一种通用方法使用各种组件来解决现实生活中任意类型的视觉问题。
目录
译者序
作者简介
前言
第1章 计算机视觉系统综述 1
1.1 计算机视觉系统介绍 1
1.2 解决计算机视觉问题 2
1.2.1 数据采集 3
1.2.2 预处理 4
1.2.3 图像处理的特征提取 5
1.2.4 后处理和后置滤波 7
1.2.5 识别或检测 7
1.2.6 在现实世界中行动 8
1.2.7 连接子模块 8
1.3 总结 10
第2章 OpenCV的基础与安装 11
2.1 OpenCV的基础 11
2.2 OpenCV的安装 12
2.2.1 在Linux上安装OpenCV 12
2.2.2 在Mac OS上安装OpenCV 17
2.2.3 在Windows上安装OpenCV 18
2.2.4 在iOS上安装OpenCV 20
2.2.5 在Android上安装OpenCV 21
2.3 总结 24
第3章 用OpenCV和Arduino进行数据采集 25
3.1 图像和视频采集 25
3.1.1 相机选择 25
3.1.2 图像采集 29
3.2 传感器数据采集 41
3.2.1 设置Arduino环境 41
3.2.2 传感器基础 42
3.2.3 从温度传感器中读取数据 44
3.3 总结 47
第4章 用OpenCV进行数据过滤 48
4.1 开始过滤 48
4.2 空间域滤波 49
4.2.1 平滑 50
4.2.2 锐化 51
4.3 颜色空间转换 51
4.3.1 灰度化 52
4.3.2 二值化 53
4.4 形态学滤波器 55
4.4.1 腐蚀和膨胀 55
4.4.2 开运算和闭运算 56
4.5 梯度和边缘检测 58
4.5.1 Canny边缘检测器 58
4.5.2 LoG滤波器 59
4.5.3 Sobel 61
4.6 自定义滤波器 63
4.7 直方图均衡化 65
4.8 本章的实践项目 66
4.9 总结 72
第5章 用OpenCV进行视觉数据处理 73
5.1 提取特征 73
5.1.1 使用基本的统计信息 74
5.1.2 使用颜色特征 78
5.1.3 使用模板进行特征匹配 78
5.1.4 使用轮廓特征 79
5.1.5 使用凸包 80
5.1.6 使用矩 81
5.1.7 使用Hough变换 82
5.1.8 使用角点 83
5.1.9 使用尺度不变特征变换 84
5.1.10 使用加速鲁棒特征 85
5.1.11 使用ORB 86
5.1.12 使用blob分析 86
5.2 总结 87
第6章 用OpenCV进行识别 88
6.1 构建一个可以思考的应用程序 88
6.1.1 模板匹配 89
6.1.2 特征匹配 91
6.1.3 基于快速近似最近邻搜索库的匹配 94
6.1.4 使用级联分类器 95
6.1.5 使用支持向量机 97
6.2 总结 98
第7章 用OpenCV与Arduino进行通信 100
7.1 与Arduino进行通信 100
7.1.1 有线通信 102
7.1.2 无线通信 111
7.2 用Java进行通信 115
7.3 用C++进行通信 120
7.4 总结 121
第8章 将Arduino用于真实世界 122
8.1 与电动机的连接 122
8.1.1 驱动直流电动机 123
8.1.2 驱动步进电动机 125
8.1.3 驱动伺服电动机 128
8.2 使用显示器 130
8.2.1 使用液晶显示器 131
8.2.2 使用薄膜晶体管显示器 133
8.3 总结 137
第9章 建造一个点击行走机器人 138
9.1 系统总览 138
9.2 建造一个机器人 141
9.2.1 构建力学部分 142
9.2.2 构建电子电路部分 143
9.2.3 构建机器人控制器和通信系统 146
9.3 构建视觉应用程序 154
9.4 总结 163
前言/序言
特别是对于现代机器而言,计算机视觉是环境感知发展的下一个阶段。许多现代设备尝试使用有限的资源来模仿人类的感知能力。此外,大多数此类仿制品其实是存在不足的,因为通常情况下它们不能直接模拟人类的感知能力,尤其是在视觉方面。
即使传统传感器的种类有很多,它们仍然无法表现出人类视觉系统的强大,这是人类最复杂的感知功能之一。因此,我们需要一定的视觉信息,使我们的电子系统更加智能化。这就是计算机视觉出现的原因。
相机可以被视为终极视觉传感器,它非常接近于人类的视觉感知系统。但是问题在于,如果使用相机作为视觉传感器,那么操作会非常复杂和困难。本书的目的是通过把一个复杂的问题划分为基本的、可实现的子步骤从而让计算机视觉的任务变得简单。这种方法最好的地方在于我们能把实际生活中的应用也变得很容易!
当我们处理现实生活中的应用时,毫无疑问应该有一种方法来与现实生活进行交互。嵌入式系统正好用来表示这些物理交互。Arduino是最流行的嵌入式系统平台之一,它通过海量的社区支持和学习材料为原型开发提供了一种便捷的方法。同时Arduino的关键属性也很棒,稍后将进行更详细的讨论,这些使得Arduino成为视觉系统与现实生活进行交互的最完美的候选。
Arduino在计算机视觉系统中扮演的角色是非常清楚的。在大多数情况下,视觉信息会与来自各种传统的传感器的数据相结合,这些传统的传感器包括温度传感器、压力传感器和加速器等。此外,我们需要一个很好的工具来在视觉处理过程之后采取物理行动,比如驱动电动机和开灯。因此,Arduino在从环境中收集数据并采取行动的过程中非常有用,特别是因为它有大量开发好的库以及社区共享,使得原型开发非常迅速。
开源计算机视觉库(OpenCV)是一个包含大量优化算法的优秀开源库。OpenCV最重要的优势之一是它可以支持多个平台,它能够在Windows、Linux、Mac OS甚至是Android和iOS平台上工作。更重要的是它是一个成熟的库,在写作本书时最新版本为3.0(和2.4.11)。出于这些原因,本书中所有的计算机视觉任务都将采用OpenCV来实现!
本书将通过一种通用的、明确的、可应用的方式来融合Arduino和计算机视觉的能力。书中的实践和方法可用于任何相关的问题和平台。本书想实现的最终目标是让你可以通过一种通用方法使用各种组件来解决现实生活中任意类型的视觉问题。
在每一章中,你将会找到有关主题在现实生活中实际应用的例子。为了学以致用,我们会一步一步地建立一个视觉机器人。你会发现尽管问题的背景有很大的不同,解决问题的方法都是一样的并且很简单!
本书的主要内容第1章通过介绍一种对现实生活视觉问题有效的解决办法来解释设计模块和体系。
第2章讲述OpenCV库的基本原理以及如何在不同的操作系统平台安装和测试OpenCV库。
第3章通过实用的技巧和现实生活的例子来展示从环境中收集数据的有效方法。
第4章介绍OpenCV库中的内置滤波器以及如何根据应用程序的上下文来选择和实现这些滤波器。
第5章探索如何从视觉数据中提取有意义的信息以及如何让这些提取出来的数据为识别系统做好准备。
第6章通过实践的方式探索人工智能的方法,讨论在一个给定场景中检测和识别物体的方法。
第7章揭示Arduino的通信能力以及在OpenCV的环境中连接Arduino的综合性最佳实践。
第8章演示如何通过物理行为优雅地与现实世界进行交互。
第9章综合前面所学的所有知识来设计和开发一个全功能一体化的机器人。该章还将介绍所提出的方法如何在问题独立的情况下取得成功。
阅读本书前的准备本书的目的是教会你如何开发可以与现实生活进行交互且启用了计算机视觉的系统。书中所有必需的软件都是免费的。当然,根据需要,你也可以使用收费的软件来开发应用程序。
计算机视觉应用程序是使用OpenCV开发的。Eclipse、Xcode、Visual Studio作为集成开发环境使用。应用程序的嵌入式系统部分通过使用Arduino Uno R3和Arduino的集成编辑器来开发。
有几章中的应用程序需要用到电子元器件,比如传感器或通信模块。这些模块都很便宜并且很容易找到。应用程序背后的思想是通用的,可以适用于各种相关领域。
本书的目标读者本书主要面向想要在项目中使用计算机视觉来创造更多智能系统的读者。特别是想学习如何使用Arduino进行计算机视觉编程的用户和对此有兴趣的爱好者。
机器人学是兴趣电子学中最流行的领域之一。我们可以简单地说只要掌握了本书的内容,就完全有可能建立一个可以看到环境并进行推理的机器人。同一方案适用于消费类电子学和兴趣电子学的所有其他领域。任何对这一方案感到兴奋的人都是本书的目标读者。
本书假设读者熟悉Arduino的基本知识。对于计算机视觉编程方面的知识则没有什么要求。
下载示例代码和彩色图片你可以从华章网站下载本书的示例代码和彩色图片。
The Translator’s Words 译者序“忍耐很苦,坚持很难”,哪怕是做一件看上去毫不费劲的小事也是如此。在申请翻译本书时,我满以为一个月就能翻译完,实际上却用了整整半年时间。十几年前,看张筑生先生所著的《数学分析新讲》,在后记里面看到“从编写教学改革实验讲义到整理改写成书,前后花费了五年最宝贵的时间”。那个时候年少轻狂,看完以后固然深深为作者的人品打动,却以为写书是件并不怎么费劲的事情,果然是事不经过不知难,翻译尚且如此,反复斟酌几易其稿成书又该是怎么一种心血的煎熬。
随着系统智能化要求的提高,对计算机视觉的要求也越来越多,同时,计算机视觉处理完毕以后,需要有一个合适的载体来做出反应。本书正好就是同时在这两点上着重论述,一方面大刀阔斧地介绍了计算机视觉处理的全流程,并就流程的每一子步骤单独成章介绍常见的方法。另一方面注重实践,带领读者从头开始走完整个建造机器人的全程。正如作者所说,“只要掌握了本书的内容,完全可能创建一个可以看到环境并进行推理的机器人”。并且每一章的介绍都为后续深入开发打下了良好的基础。
本书的一个显著优点是用很简洁的语言带领读者纵览全局,让读者对整个开发有一个全局的掌握,因而非常适合入门。毕竟工作以后再来读大部头的书籍,除非真的是卓尔不群,否则往往半途而废。
在此,我想感谢华章公司的编辑缪杰,没有他的帮助、理解和支持,我很难坚持下来。
我还要特别感谢我的爸爸妈妈——张乾光和孟淑华,你们多年来一直辛苦地为我遮风挡雨,给我支持和鼓励,让我有一个非常宽松快乐的成长环境,你们的善良和坚韧也一直深深地影响着我。你们辛苦了!大海的尽头有另外一个世界,希望在以后的岁月里能让你们的生活更加美好!
最后,我要感谢的是我的爱人——崔嘉艺,感谢她对我的支持和信任,相守是最温暖的承诺,我会让她为她的选择感到骄傲!
Arduino计算机视觉编程 epub pdf mobi txt 电子书 下载 2024
Arduino计算机视觉编程 下载 epub mobi pdf txt 电子书 2024