计算机视觉是人工智能的一个子领域,主要关注理解数字图像(例如照片和视频)的内容。
深度学习在挑战性的计算机视觉任务中取得了令人瞩目的进展,并有望进一步发展。
在深入研究深度学习技术应用于计算机视觉之前,广泛地建立计算机视觉基础可能会有所帮助。这可能包括基础和经典技术、理论,甚至使用标准API进行基本数据处理。
快速掌握该领域最好的方法之一就是阅读一本相关书籍。
在这篇文章中,你将发现关于计算机视觉的顶级教材和程序员书籍。
通过我的新书《深度学习在计算机视觉中的应用》来启动你的项目,书中包含分步教程和所有示例的Python源代码文件。
让我们开始吧。
概述
这篇博文分为三部分;它们是:
- 五大计算机视觉教材
- 三大计算机视觉程序员书籍
- 建议
五大计算机视觉教材
教材是由专家(通常是学者)撰写的书籍,旨在作为学生和从业者的参考。
它们主要侧重于通用方法和理论(数学),而不是问题的实际考虑和方法的应用(代码)。
我根据它们在顶尖大学(例如麻省理工学院等)课程中的使用情况以及讨论网站(例如Quora等)上的推荐,整理了一份排名前五的教材清单。
排名前五的计算机视觉教材如下(排名不分先后):
- 计算机视觉:算法与应用, 2010.
- 计算机视觉:模型、学习与推断, 2012.
- 计算机视觉:现代方法, 2002.
- 3D计算机视觉入门技术, 1998.
- 计算机视觉中的多视图几何, 2004.
让我们依次仔细看看每本书,包括每本书的目标读者和目录。
计算机视觉:算法与应用
这本书由Richard Szeliski撰写,于2010年出版。
该书的PDF格式草稿版本可从该书主页获取。
我喜欢这本书。它为初学者(本科生)在计算机视觉技术方面奠定了坚实的基础,涵盖了广泛的标准计算机视觉问题。这本书是Richard根据他在华盛顿大学多年教授该主题的经验编写的。
这本书也反映了我20年来在企业研究实验室进行计算机视觉研究的经验[…]我主要关注具有实际应用价值且在实践中效果良好的问题和解决方案技术(算法)。因此,这本书更侧重于在实际条件下有效的基础技术,而较少关注那些本质上优雅但实际适用性较差的深奥数学。
——第ix页,《计算机视觉:算法与应用》,2010年。
这本书的目录如下:
- 1. 引言
- 2. 图像形成
- 3. 图像处理
- 4. 特征检测与匹配
- 5. 分割
- 6. 基于特征的对齐
- 7. 运动结构
- 8. 密集运动估计
- 9. 图像拼接
- 10. 计算摄影学
- 11. 立体对应
- 12. 3D重建
- 13. 基于图像的渲染
- 14. 识别
计算机视觉:模型、学习与推断
这本书由Simon Prince撰写,于2012年出版。
该书的草稿版本以PDF格式发布在该书网站上。
这是一本很棒的入门书籍(适合学生),涵盖了广泛的计算机视觉技术和问题。这本书花了更多时间介绍计算机视觉,并在概率建模的基础主题上花费了有用的时间。
这种现代的计算机视觉处理方法将概率模型中的学习和推断作为统一的主题。它展示了如何使用训练数据来学习观察到的图像数据与我们希望估计的世界方面(例如3D结构或物体类别)之间的关系,以及如何利用这些关系从新的图像数据中推断出世界信息。
— 《计算机视觉:模型、学习与推断》,2012年。
这本书的目录如下:
- 1. 引言
- 2. 概率论导论
- 3. 常用概率分布
- 4. 拟合概率模型
- 5. 正态分布
- 6. 视觉中的学习与推理
- 7. 复杂数据密度建模
- 8. 回归模型
- 9. 分类模型
- 10. 图形模型
- 11. 链和树模型
- 12. 网格模型
- 13. 图像预处理与特征提取
- 14. 针孔相机
- 15. 变换模型
- 16. 多摄像头
- 17. 形状模型
- 18. 风格和身份模型
- 19. 时间模型
- 20. 视觉词模型
计算机视觉:现代方法
本书由David Forsyth和Jean Ponce撰写,于2011年出版。
这是一本计算机视觉的入门教材,涵盖的主题可能比其他许多教材更广泛。尽管内容广泛,但它可能不如其他一些入门教材受欢迎(流行),因为它可能难以阅读:它直接深入主题。
……视觉依赖于对摄像机和图像形成物理过程的扎实理解(本书第一部分),以从单个像素值中获得简单推断(第二部分),将多幅图像中可用的信息组合成一个连贯的整体(第三部分),对像素组施加一些顺序以将它们彼此分离或推断形状信息(第四部分),并使用几何信息或概率技术识别对象(第五部分)。
— xvii,《计算机视觉:现代方法》,2002年。
这本书的目录如下:
- 第一部分 图像形成
- 1. 辐射度学——测量光线
- 2. 光源、阴影和明暗
- 3. 颜色
- 第二部分 图像模型
- 4. 几何图像特征
- 5. 分析图像特征
- 6. 概率论导论
- 第三部分 早期视觉:单幅图像
- 7. 线性滤波器
- 8. 边缘检测
- 9. 滤波器与特征
- 10. 纹理
- 第四部分 早期视觉:多幅图像
- 11. 多视图几何
- 12. 立体视觉
- 13. 基于运动的仿射结构
- 14. 基于运动的投影结构
- 第五部分 中级视觉
- 15. 使用聚类方法进行分割
- 16. 拟合
- 17. 使用概率方法进行分割和拟合
- 18. 追踪
- 第六部分 高级视觉
- 19. 对应与姿态一致性
- 20. 使用分类器查找模板
- 21. 基于模板间关系进行识别
- 22. 方面图
- 第七部分 应用与主题
- 23. 范围数据
- 24. 应用:在数字图书馆中查找
- 25. 应用:基于图像的渲染
3D计算机视觉入门技术
本书由Emanuele Trucco和Alessandro Verri撰写,于1998年出版。
这是一本较老的书,主要关注一般的计算机视觉,并重点介绍与视觉中的3D问题相关的技术。这是一个很好的起点,面向本科生而非研究生读者。
本书旨在成为:[...] 现代计算机视觉问题和解决方案的应用性入门。
– xiii, 《3D计算机视觉入门技术》,1998年。
这本书的目录如下:
- 1. 引言
- 2. 数字快照
- 3. 图像噪声处理
- 4. 图像特征
- 5. 更多图像特征
- 6. 相机校准
- 7. 立体视觉
- 8. 运动
- 9. 基于单幅图像线索的形状
- 10. 识别
- 11. 空间物体定位
- A. 附录
计算机视觉中的多视图几何
本书由Richard Hartley和Andrew Zisserman撰写,于2004年出版。
一些章节的样本以PDF格式发布在该书网页上。
这是一本关于计算机视觉专业主题的相当高级的(研究生水平)书籍,特别是关于从多幅图像推断几何的问题和方法。
该书分为六个部分和七个简短的附录。每个部分都介绍了一种新的几何关系:背景的单应性、单视图的相机矩阵、双视图的基础矩阵、三视图的三焦点张量以及四视图的四焦点张量。
— 第xiv页,《计算机视觉中的多视图几何》,2004年。
这本书的目录如下:
- 1. 引言
- 第零部分:背景:投影几何、变换与估计
- 2. 二维投影几何与变换
- 3. 三维投影几何与变换
- 4. 估计 – 二维投影变换
- 5. 算法评估与误差分析
- 第一部分:相机几何与单视图几何
- 6. 相机模型
- 7. 相机矩阵 P 的计算
- 8. 更多单视图几何
- 第二部分:双视图几何
- 9. 对极几何与基础矩阵
- 10. 相机与结构的三维重建
- 11. 基础矩阵 F 的计算
- 12. 结构计算
- 13. 场景平面与单应性
- 14. 仿射对极几何
- 第三部分:三视图几何
- 15. 三焦点张量
- 16. 三焦点张量 T 的计算
- 第四部分:N视图几何
- 17. N线性与多视图张量
- 18. N视图计算方法
- 19. 自校准
- 20. 对偶性
- 21. 手性
- 22. 退化配置
- 第五部分:附录
想通过深度学习实现计算机视觉成果吗?
立即参加我为期7天的免费电子邮件速成课程(附示例代码)。
点击注册,同时获得该课程的免费PDF电子书版本。
三大计算机视觉程序员书籍
程序员书籍是专家(通常是开发人员和工程师)撰写的指南(例如O'Reilly书籍),旨在作为从业者的参考。
它们主要关注技术和解决问题的实际考虑,并侧重于示例代码和标准库。技术可能会简要描述相关理论(数学),但不应作为主要参考。
我根据计算机视觉顶级书籍列表中的排名以及讨论网站上的推荐,整理了一份排名前三的指南清单。
排名前三的计算机视觉教材如下(排名不分先后):
- 学习OpenCV 3, 2017.
- 用Python编程计算机视觉, 2012.
- 使用SimpleCV进行实用计算机视觉, 2012.
让我们依次仔细看看每本书,包括每本书的目标读者和目录。
学习OpenCV 3
本书由Adrian Kaehler和Gary Bradski撰写,于2017年出版。本书的副标题是“C++中的计算机视觉与OpenCV库”。
本书着重教你如何使用OpenCV库,这也许是首屈一指的开源计算机视觉库。所有代码示例都使用C++编写,这表明目标受众是希望学习如何将计算机视觉集成到其应用程序中的专业开发人员。重要的是,作者是OpenCV的董事会成员和创始人。
这是一本技术书籍,或许更像是一本详尽的API文档,而不是一本操作指南。
本书提供了C++开源计算机视觉库 (OpenCV) 3.x 版的实用指南,并提供了足够的计算机视觉领域通用背景知识,以帮助读者有效使用 OpenCV。
— 《学习OpenCV 3》,2017年。
这本书可以被认为是同一作者的旧书(2008年)《学习OpenCV:使用OpenCV库进行计算机视觉》的更新版本。
这本书的目录如下:
- 1. 概述
- 2. OpenCV简介
- 3. 了解OpenCV数据类型
- 4. 图像与大型数组类型
- 5. 数组操作
- 6. 绘图与注释
- 7. OpenCV中的函数
- 8. 图像、视频与数据文件
- 9. 跨平台与原生Windows
- 10. 滤波器与卷积
- 11. 一般图像变换
- 12. 图像分析
- 13. 直方图与模板
- 14. 轮廓
- 15. 背景减除
- 16. 关键点与描述符
- 17. 追踪
- 18. 相机模型与校准
- 19. 投影与三维视觉
- 20. OpenCV中的机器学习基础
- 21. StatModel:OpenCV中学习的标准模型
- 22. 物体检测
- 23. OpenCV的未来
用Python编程计算机视觉
这本书由Jan Erik Solem撰写,于2012年出版。本书的副标题是“分析图像的工具和算法”。
该书的最终草稿版本以PDF格式发布在该书网站上。
这是一本实用的书籍,侧重于教你如何使用Python执行基本的计算机视觉任务,主要使用PIL,但也简单介绍了OpenCV。我是这本书的粉丝,尽管需要进行小的修改才能使用更新的库(例如Pillow)。这本书需要更新!
本书的理念是为动手实践计算机视觉提供一个易于访问的入口,并提供足够的底层理论和算法理解,为学生、研究人员和爱好者打下基础。
— 第vii页,《用Python编程计算机视觉》,2012年。
这本书的目录如下:
- 1. 基本图像处理
- 2. 局部图像描述符
- 3. 图像到图像的映射
- 4. 相机模型与增强现实
- 5. 多视图几何
- 6. 图像聚类
- 7. 图像搜索
- 8. 图像内容分类
- 9. 图像分割
- 10. OpenCV
用SimpleCV实现实用计算机视觉
本书由Kurt DeMaagd, Anthony Oliver, Nathan Oostendorp, 和 Katherine Scott撰写,于2012年出版。本书的副标题是“让技术看懂的简单方法”。
本书教你如何使用Python中的SimpleCV库执行基本的计算机视觉操作。这为使用PIL(Pillow)或OpenCV提供了一个不错的替代方案,尽管我不确定SimpleCV是否已被广泛采用(我很乐意被证明是错的)。
学习如何使用Python编写的开源框架SimpleCV快速轻松地构建自己的计算机视觉 (CV) 应用程序。通过实际应用程序的示例,这本实践指南向您介绍了用于收集、处理和分析流式数字图像的基本 CV 技术。
— 《使用SimpleCV进行实用计算机视觉》,2012年。
这本书的目录如下:
- 1. 引言
- 2. 了解 SimpleCV 框架
- 3. 图像源
- 4. 像素与图像
- 5. 光照的影响
- 6. 图像算术
- 7. 在图像上绘图
- 8. 基本特征检测
- 9. 特征集操作
- 10. 高级特征
建议
我热爱书籍,并且同时阅读几本不同的书。因此,我拥有本文中列出的所有书籍。
然而,如果我被迫推荐一本教材和一本操作指南,我的推荐如下:
推荐教材
- 《计算机视觉:算法与应用》,Richard Szeliski,2010年。
我推荐这本书,因为它以简洁、专注且易读的方式介绍了计算机视觉,其中包含相关理论,而不会过于冗长。它直截了当,是一本有用的参考书。
推荐程序员书籍
- 《用Python编程计算机视觉》,Jan Erik Solem,2012年。
我推荐这本书,因为它专注于使用标准(或足够接近标准)Python库的实际计算机视觉技术。对于开始动手实践计算机视觉来说,这是一个极好的起点。
进一步阅读
如果您想深入了解,本节提供了更多关于该主题的资源。
总结
在这篇文章中,你发现了关于计算机视觉的顶级教材和操作指南。
我错过了你最喜欢的计算机视觉书籍吗?
在下面的评论中告诉我。
你有什么问题吗?
在下面的评论中提出你的问题,我会尽力回答。
嗨,Jason,
你觉得Adrian Rosebrock的《Python深度学习计算机视觉》这本书怎么样 https://www.pyimagesearch.com/deep-learning-computer-vision-python-book/ ?
祝好,
Elie
抱歉,我没读过。
Jason,你应该读读Adrian的书。它们真的很好,而且非常实用,我拥有所有这些书,如果人们不想要你的书,他们总是想借我的那些。你和他的方法都是代码优先,效果很好,但语气和布局不同,能引起不同人的共鸣。我觉得两者都很有用,并且尽可能地推荐它们。我一直在等你俩合作一个杀手级项目。
谢谢,哈维!
你好,我正在寻找任何教CV Web开发的资源。我想将它们结合起来,但是市面上没有太多资源。只有一个课程,但要花1000美元。你有什么可以帮助我的吗?
你好,哈维……你能分享你的邮箱地址给我发消息吗?我的邮箱地址是 senorhimanshu@gmail.com
谢谢。
你好,我正在寻找任何教CV Web开发的资源。我想将它们结合起来,但是市面上没有太多资源。只有一个课程,但要花1000美元。你有什么可以帮助我的吗?
你好,Mikheil……我们目前还没有网络开发内容。
嘿,Elie — 我是来自PyImageSearch.com的Adrian。我确实写了《Python深度学习计算机视觉》这本书。我可以分享一些关于这本书的评论,但我不想在Jason的博客上这样做,那可能会显得很无礼。
请给我发电子邮件或使用我的联系表格(https://www.pyimagesearch.com/contact/),我们可以在那里交流。谢谢!
谢谢,阿德里安。
你好,我没有编程经验,这些书能在不懂Python的情况下帮助我学习CV吗?它们能帮助我学习Python吗?或者作为CV领域的初学者,你有什么建议?
Jason,感谢您对计算机视觉书籍的评论以及多年来发布的所有非常有用的内容。
我查阅了Adrian网站(pyimagesearch)上发布的许多教程,并且正在争取我的雇主为我购买他的书。购买完整版价格不菲,但据我所知,根据教程的详尽程度,这绝对物有所值。如果你喜欢Jason在这个网站上详尽且深思熟虑的风格,那么你会在Adrian的网站上发现相同的内容,但重点放在计算机视觉上。
谢谢你的提示,詹姆斯。
很好。阿德里安很懂行。
谢谢。
感谢您的推荐。它们非常有帮助。
很高兴听到这个消息。
在深入研究计算机视觉之前,必读的书是
《数字图像处理,第三版》,作者:Gonzalez 和 Woods
感谢推荐!
你喜欢它什么?
你好,
我正在考虑购买E.R. Davies的《计算机视觉:原理、算法、应用、学习》第五版。 https://www.amazon.com/gp/product/012809284X/ref=ox_sc_act_title_2?smid=A1C79WJQJ5SBBJ&psc=1
主要原因是他也谈到了深度学习。如果有人能评论一下会很有趣。
很有趣,谢谢分享。
非常感谢这些宝贵的信息!!!
我读过《学习OpenCV3》,这是一本很棒的书!!!
我一直在尝试在我的大学里做一个项目……我想做一些类似英特尔 360 度回放(真实视角)的项目……这对我来说是一个巨大的挑战,但我从不放弃 (Y)
再次感谢这篇帖子……
祝好!
谢谢。
你好
感谢您的推荐
您能推荐一本使用 Python 3.X 而不是“用 Python 编程计算机视觉”的书吗?
我有一本不错的书,专门介绍用于计算机视觉的深度学习,您可能会感兴趣
https://machinelearning.org.cn/deep-learning-for-computer-vision/
你好 Jason,
感谢您的推荐。我想问一下,如果可能的话,在您上面提到的所有书中,您会说哪一本最适合传统的计算机视觉从业者,主要是用于图像预处理?
假设我们想知道图像的平均亮度或暗度?或者围绕像素强度/颜色扭曲技巧/直方图等主题。
我知道有关于边缘检测和轮廓的书籍,但如果涉及到对比度/颜色/亮度,我常常不确定是否有入门书籍解释基本色彩理论并告诉我们如何使用 OpenCV 调整图像。
非常感谢您的帮助。
我认为推荐部分列出的书籍是一个很好的起点。
也许可以浏览一下亚马逊/谷歌图书上的一些书籍/目录,看看它们是否合适?
嗨,Jason,
就像我们有“统计学习导论:R 语言应用”(深入知识)用于机器学习一样,我们是否有关于计算机视觉的书籍可以提供深入知识?