“忍耐很苦,坚持很难”,哪怕是做一件看上去毫不费劲的小事也是如此。在申请翻译本书时,我满以为一个月就能翻译完,实际上却用了整整半年时间。十几年前,看张筑生先生所著的《数学分析新讲》,在后记里面看到“从编写教学改革实验讲义到整理改写成书,前后花费了五年最宝贵的时间”。那个时候年少轻狂,看完以后固然深深为作者的人品打动,却以为写书是件并不怎么费劲的事情,果然是事不经过不知难,翻译尚且如此,反复斟酌几易其稿成书又该是怎么一种心血的煎熬。
随着系统智能化要求的提高,对计算机视觉的要求也越来越多,同时,计算机视觉处理完毕以后,需要有一个合适的载体来做出反应。本书正好就是同时在这两点上着重论述,一方面大刀阔斧地介绍了计算机视觉处理的全流程,并就流程的每一子步骤单独成章介绍常见的方法。另一方面注重实践,带领读者从头开始走完整个建造机器人的全程。正如作者所说,“只要掌握了本书的内容,完全可能创建一个可以看到环境并进行推理的机器人”。并且每一章的介绍都为后续深入开发打下了良好的基础。
本书的一个显著优点是用很简洁的语言带领读者纵览全局,让读者对整个开发有一个全局的掌握,因而非常适合入门。毕竟工作以后再来读大部头的书籍,除非真的是卓尔不群,否则往往半途而废。
在此,我想感谢华章公司的编辑缪杰,没有他的帮助、理解和支持,我很难坚持下来。
我还要特别感谢我的爸爸妈妈——张乾光和孟淑华,你们多年来一直辛苦地为我遮风挡雨,给我支持和鼓励,让我有一个非常宽松快乐的成长环境,你们的善良和坚韧也一直深深地影响着我。你们辛苦了!大海的尽头有另外一个世界,希望在以后的岁月里能让你们的生活更加美好!
最后,我要感谢的是我的爱人——崔嘉艺,感谢她对我的支持和信任,相守是最温暖的承诺,我会让她为她的选择感到骄傲!
封面图
目录
- 译者序
- 作者简介
- 前言
- 第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.1OpenCV的基础11
- 2.2OpenCV的安装12
- 2.2.1在Linux上安装OpenCV12
- 2.2.2在Mac OS上安装OpenCV17
- 2.2.3在Windows上安装OpenCV18
- 2.2.4在iOS上安装OpenCV20
- 2.2.5在Android上安装OpenCV21
- 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.1Canny边缘检测器58
- 4.5.2LoG滤波器59
- 4.5.3Sobel61
- 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使用ORB86
- 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