微信扫码下载

编辑推荐

  

  美国计算机视觉类图书前列!


  

  专门用Python讲解计算机视觉编程

内容简介

  《Python计算机视觉编程》是计算机视觉编程的实践指南,依赖Python语言讲解了基础理论与算法,并通过大量示例细致分析了对象识别、基于内容的图像搜索、光学字符识别、光流法、跟踪、三维重建、立体成像、增强现实、姿态估计、全景创建、图像分割、降噪、图像分组等技术。另外,书中附带的练习还能让读者巩固并学会应用编程知识。
  《Python计算机视觉编程》适合的读者是:有一定编程与数学基础,想要了解计算机视觉的基本理论与算法的学生,以及计算机科学、信号处理、物理学、应用数学和统计学、神经生理学、认知科学等领域的研究人员和从业者。

作者简介

  JanErikSolem,瑞典隆德大学副教授(数学成像小组),PolarRose公司创始人兼CTO,计算机视觉研究者,Python爱好者,技术图书作家,经常出席各种计算机视觉、图像分析、机器智能等国际会议并发表演讲。他主要关注3D重建、变分问题与优化、图像分割与识别、形状分析,有多年Python计算机视觉教学、研究和行业应用经验,技术博客为http://www.janeriksolem.net。另著有ComputingwithPython:AnIntroductiontoPythonforScienceandEngineering一书。

精彩书评

  “《Python计算机视觉编程》介绍了各种图像分析工具,是了解计算机视觉编程的读物。”
  ——JamesA.Cox,美国《中西部书评》(MidwestBookReview)总编辑

目录

推荐序 XI
前言 XIII

第1章 基本的图像操作和处理 1
1.1 PIL:Python图像处理类库 1
1.1.1 转换图像格式 2
1.1.2 创建缩略图 3
1.1.3 复制和粘贴图像区域 3
1.1.4 调整尺寸和旋转 3
1.2 Matplotlib 4
1.2.1 绘制图像、点和线 4
1.2.2 图像轮廓和直方图 6
1.2.3 交互式标注 7
1.3 NumPy 8
1.3.1 图像数组表示 8
1.3.2 灰度变换 9
1.3.3 图像缩放 11
1.3.4 直方图均衡化 11
1.3.5 图像平均 13
1.3.6 图像的主成分分析(PCA) 14
1.3.7 使用pickle模块 16
1.4 SciPy 17
1.4.1 图像模糊 18
1.4.2 图像导数 19
1.4.3 形态学:对象计数 22
1.4.4 一些有用的SciPy模块 23
1.5 高级示例:图像去噪 24
练习 28
代码示例约定 29

第2章 局部图像描述子 31
2.1 Harris角点检测器 31
2.2 SIFT(尺度不变特征变换) 39
2.2.1 兴趣点 39
2.2.2 描述子 39
2.2.3 检测兴趣点 40
2.2.4 匹配描述子 43
2.3 匹配地理标记图像 47
2.3.1 从Panoramio下载地理标记图像 47
2.3.2 使用局部描述子匹配 50
2.3.3 可视化连接的图像 52
练习 54

第3章 图像到图像的映射 57
3.1 单应性变换 57
3.1.1 直接线性变换算法 59
3.1.2 仿射变换 60
3.2 图像扭曲 61
3.2.1 图像中的图像 63
3.2.2 分段仿射扭曲 67
3.2.3 图像配准 70
3.3 创建全景图 76
3.3.1 RANSAC 77
3.3.2 稳健的单应性矩阵估计 78
3.3.3 拼接图像 81
练习 84

第4章 照相机模型与增强现实 85
4.1 针孔照相机模型 85
4.1.1 照相机矩阵 86
4.1.2 三维点的投影 87
4.1.3 照相机矩阵的分解 89
4.1.4 计算照相机中心 90
4.2 照相机标定 91
4.3 以平面和标记物进行姿态估计 93
4.4 增强现实 97
4.4.1 PyGame和PyOpenGL 97
4.4.2 从照相机矩阵到OpenGL格式 98
4.4.3 在图像中放置虚拟物体 100
4.4.4 综合集成 102
4.4.5 载入模型 104
练习 106

第5章 多视图几何 107
5.1 外极几何 107
5.1.1 一个简单的数据集 109
5.1.2 用Matplotlib绘制三维数据 111
5.1.3 计算F:八点法 112
5.1.4 外极点和外极线 113
5.2 照相机和三维结构的计算 116
5.2.1 三角剖分 116
5.2.2 由三维点计算照相机矩阵 118
5.2.3 由基础矩阵计算照相机矩阵 120
5.3 多视图重建 122
5.3.1 稳健估计基础矩阵 123
5.3.2 三维重建示例 125
5.3.3 多视图的扩展示例 129
5.4 立体图像 130
练习 135

第6章 图像聚类 137
6.1 K-means聚类 137
6.1.1 SciPy聚类包 138
6.1.2 图像聚类 139
6.1.3 在主成分上可视化图像 140
6.1.4 像素聚类 142
6.2 层次聚类 144
6.3 谱聚类 152
练习 157

第7章 图像搜索 159
7.1 基于内容的图像检索 159
7.2 视觉单词 160
7.3 图像索引 164
7.3.1 建立数据库 164
7.3.2 添加图像 165
7.4 在数据库中搜索图像 167
7.4.1 利用索引获取候选图像 168
7.4.2 用一幅图像进行查询 169
7.4.3 确定对比基准并绘制结果 171
7.5 使用几何特性对结果排序 172
7.6 建立演示程序及Web应用 176
7.6.1 用CherryPy创建Web应用 176
7.6.2 图像搜索演示程序 176
练习 179

第8章 图像内容分类 181
8.1 K邻近分类法(KNN) 181
8.1.1 一个简单的二维示例 182
8.1.2 用稠密SIFT作为图像特征 185
8.1.3 图像分类:手势识别 187
8.2 贝叶斯分类器 190
8.3 支持向量机 195
8.3.1 使用LibSVM 196
8.3.2 再论手势识别 198
8.4 光学字符识别 199
8.4.1 训练分类器 200
8.4.2 选取特征 200
8.4.3 多类支持向量机 201
8.4.4 提取单元格并识别字符 202
8.4.5 图像校正 205
练习 206

第9章 图像分割 209
9.1 图割(GraphCut) 209
9.1.1 从图像创建图 211
9.1.2 用户交互式分割 216
9.2 利用聚类进行分割 218
9.3 变分法 224
练习 226

第10章 OpenCV 227
10.1 OpenCV的Python接口 227
10.2 OpenCV基础知识 228
10.2.1 读取和写入图像 228
10.2.2 颜色空间 228
10.2.3 显示图像及结果 229
10.3 处理视频 232
10.3.1 视频输入 232
10.3.2 将视频读取到NumPy数组中 234
10.4 跟踪 234
10.4.1 光流 235
10.4.2 Lucas-Kanade算法 237
10.5 更多示例 243
10.5.1 图像修复 243
10.5.2 利用分水岭变换进行分割 244
10.5.3 利用霍夫变换检测直线 245
练习 246

附录A 安装软件包 247
A.1 NumPy和SciPy 247
A.1.1 Windows 247
A.1.2 MacOSX 247
A.1.3 Linux 248
A.2 Matplotlib 248
A.3 PIL 248
A.4 LibSVM 249
A.5 OpenCV 249
A.5.1 Windows和Unix 249
A.5.2 MacOSX 249
A.5.3 Linux 250
A.6 VLFeat 250
A.7 PyGame 250
A.8 PyOpenGL 250
A.9 Pydot 251
A.10 Python-graph 251
A.11 Simplejson 252
A.12 PySQLite 252
A.13 CherryPy 252

附录B 图像集 253
B.1 Flickr 253
B.2 Panoramio 254
B.3 牛津大学视觉几何组 255
B.4 肯塔基大学识别基准图像 255
B.5 其他 256
B.5.1 PragueTextureSegmentationDatagenerator与基准 256
B.5.2 微软研究院GrabCut数据集 256
B.5.3 Caltech101 256
B.5.4 静态手势数据库 256
B.5.5 MiddleburyStereo数据集 256

附录C 图片来源 257
C.1 来自Flickr的图像 257
C.2 其他图像 258
C.3 插图 258

参考文献 259
索引 263

前言/序言

  推荐序
  计算机视觉是一门实践性很强的课程,虽然已经有了不少教科书,但大多数都只重视其中的理论和算法,很少有实践指导书。因而对于学习者而言,如果希望在实践中学习,往往需要编写大量的程序。在这方面,《Python计算机视觉编程》的出版可以算是一个有效的补充,相信《Python计算机视觉编程》将成为计算机视觉学习者的一个重要参考。
  作为一本面向计算机视觉编程的书,《Python计算机视觉编程》涉及了这一学科中相对成熟并且被以往实践验证有效的部分典型算法,因而具有很好的实用性。例如第2章描述子部分选择了Harris角点检测器和SIFT描述子及其实现加以介绍;第3章则以全景图的创建为例,给出了RANSAC的实现;第9章图像分割中讨论了GraphCut的实现等。这些方法大多数具有很好的通用性,因而为读者提供了一种实现范例。
  《Python计算机视觉编程》的另一个特点是对介绍的单一方法,通过综合运用提升学习者灵活应用这些方法的能力。例如第4章给出的增强现实的例子,以及第8章给出的数独图像校正的例子。这些例子能够帮助进一步提升学习者对前述方法的感性认识。
  与早期计算机视觉领域多数程序都是由C/C++写就的情形不同。随着计算机硬件速度越来越快,研究者在考虑选择实现算法语言的时候会更多地考虑编写代码的效率和易用性,而不是像早年那样把算法的执行效率放在首位。这直接导致近年来越来越多的研究者选择Python来实现算法。与此同时,Python的开放性使不同领域的研究者能够有机会在Python中加入他们需要的特性,甚至可以纳入Python的标准库,这也大大吸引了众多研究者对Python的参与。
  《Python计算机视觉编程》的第三个特点是提供了与OpenCV接口的介绍。这为利用OpenCV中的资源提供了方便的途径。
  今天在计算机视觉领域,越来越多的研究者使用Python开展研究。《Python计算机视觉编程》中文版的出版一方面能够鼓励更多的研究者采用这一语言,另一方面则为Python的学习者提供了一种尝试不同领域算法的机会。
  中国计算机学会副秘书长 陈熙霖
  2014.4.21


其他推荐