本文摘选自《计算机视觉40例——从入门到深度学习(OpenCV-Python)》(电子工业出版社:李立宗)的前言部分。
------------------------------------------------------------------------------------------
前言
计算机视觉是目前最热门的研究领域之一,而OpenCV-Python(Python API for OpenCV)结合了OpenCV C++ API和Python语言的最佳特性,这使得它成为计算机视觉领域内极具影响力和实用性的工具。
近年来,我深耕计算机视觉领域的课程研发工作,在该领域尤其是OpenCV-Python方面积累了一点儿经验。因此,我经常会收到该领域相关知识点的咨询,内容涵盖图像处理的基础知识、OpenCV工具的使用、深度学习的具体应用等多个方面。为了更好地把所积累的知识以图文的形式分享给大家,我将该领域内的知识点进行了系统的整理,编写了本书。希望本书的内容能够对大家在计算机视觉方向的学习有所帮助。
本书的主要内容
本书对计算机视觉涉及到的知识点进行了全面、系统、深入的梳理,旨在帮助读者快速掌握该领域的核心知识点。全书包含5个部分,40余个计算机经典案例,主要内容如下:
上述案例采用传统的图像处理方法解决问题,重点帮助大家理解如下知识点:
本部分主要对机器学习基础知识及K近邻算法、SVM算法、K均值聚类算法进行了具体介绍。在上述基础上,使用OpenCV机器学习模块实现了下述案例:
本书的主要特点
在内容的安排、组织、设计上秉承了如下思路:
1 适合入门
第1部分对计算机视觉的基础知识点进行了全面的梳理,主要包括图像处理基础、Python基础、OpenCV基础。重点对计算机视觉中用到的基础理论、算法、数字图像的应用,Python程序设计基础语法,OpenCV核心函数进行了介绍。该部分内容能够帮助没有计算机视觉基础的读者快速入门,也能够帮助有一定计算机视觉基础的读者对核心知识点进行快速梳理。
2 以案例为载体
按照知识点安排的教材,其特点在于“相互独立,完全穷尽”(MECE,Mutually Exclusive Collectively Exhaustive),能够保证介绍的知识点“不重叠,不遗漏”。但是,采用这种方式学习后有可能会导致一个问题:“我了解了每一个知识点,可是在遇到问题时,感觉无从下手,不知道该把哪些知识点拿出来组合以解决当前的问题”。
知识点是一个个的小石子,解决问题的思路是能够把许多石子串成一条漂亮项链的绳子。绳子可以赋予石子更大的意义和价值,解决问题能够让我们的知识点得以闪光。
本书采用案例的方式来介绍相关知识点。同时,尽量避免将案例作为一个孤立的问题来看待,而是更多地考虑知识点之间的衔接、组合、应用场景等。例如,我们采用了多种不同的方式实现手写数字识别,帮助大家更好地从不同的角度去理解和分析问题。本书从案例实战的角度来展开,将案例作为一根线,将所有的知识点串起来,帮助大家理解知识点间的关系及组合运用,做到融会贯通,提高对知识点的理解和运用能力。
3 轻量级实现
将一个问题以尽量简单明了的方式实现,能够更好地帮我们搞清楚问题的核心和算法。用最简化的方式实现系统(MVP,minimum viable product),用最小的成本和代价快速验证和迭代一个算法,更有利于理解问题、解决问题。使用现有的资源、最低的成本、最快的速度行动起来才最关键的。所以,在本书中,我们尽可能让每一个案例简化,尽量将代码控制在100行左右。希望通过这样的设计,能够让我们更好地关注算法核心。
抽象,帮我们屏蔽了无关细节,让我们能够专注于工具的使用,极大地提高了工作效率。OpenCV及很多其他库提供给我们的函数都是封装好的,我们直接把输入传递给函数,函数就能够把需要的结果返回给我们。因此,在本书中没有对函数再做过多的介绍,而将注意力放在了实现案例所使用的核心算法上。
一图胜千言。当描述关系、流程等一些相对比较复杂的知识点时,单纯使用语言描述可能会让我们一时难以理解。面对复杂的知识点时,有经验的学习者在学习时会根据知识点自己脑补出一幅关于该知识点的图,甚至会手动绘制出一幅图,来进一步理解知识点。这是因为图像能够更加清晰、直观、细致地将知识点的全局、结构、关系、流程、脉络等信息体现出来。本书中,我们精心制作了大量的图表,希望借此能够更好地帮助大家理解相关知识点。
6 案例全面
本书涉及案例40余个,都是在相关领域中比较典型的案例,涵盖了计算机视觉领域的核心应用和关键知识点。案例主要有:
- 基础部分:图像安全(加密、解密、信息隐藏、隐身)、图像识别(答题卡、手势、车牌、指纹、数字)、物体计数、图像检索、次品排查等
- 机器学习:KNN字符识别(数字、字母)、数独求解(KNN)、SVM数字识别、行人检测、艺术画(K均值聚类)等
- 深度学习:图像分类、目标检测(YOLO、SSD方法)、语义分割、实例分割、风格迁移、姿势识别等
- 人脸相关:人脸检测、人脸识别、勾勒五官、人脸对齐、表情识别、疲劳驾驶检测、易容术、性别与年龄识别等
限于本人水平,书中存在着很多不足之处,欢迎大家提出宝贵的意见和建议,也非常欢迎大家跟我交流关于OpenCV的各种问题,我的邮箱是:lilizong【at】gmail.com。
另外,大家也可以关注我的微信公众号:计算机视觉之光(微信号cvlight)获取关于本书的配套资源等更多资料。公众号二维码如下: