这段文字主要介绍了一个关于图像识别和图像处理的系列教程的开始。教程将从基础入手,介绍图像识别和图像处理的基本概念和常用方法。
教程涵盖了以下内容:
- 图像识别: 教程会讲解利用图像识别技术实现的功能,例如文字识别(OCR)、人脸识别等。
- 图像处理: 教程会介绍如何使用图像处理技术进行图像增强等操作。
教程需要以下工具:
- 图像数据集: 教程提供了一个包含多种图像的压缩文件,用户需要下载并解压缩。
- Python 2.7.5: 教程使用 Python 2.7.5 版本进行编程,建议用户下载并安装。
- NumPy, MatplotLib, PIL: 这三个库是进行图像处理和分析的必要工具,用户可以单独下载安装,也可以通过下载 SciPy 包获得。
最后,作者强调 Python 语言的易用性和强大功能,并鼓励用户学习使用。
本系列的示例代码:http://pythonprogramming.net/image-recognition-python/图像识别有很多应用。 人们最熟悉的一种是人脸识别,它是将图片中的人脸与身份进行匹配的技术。 然而,图像识别远不止于此。 它可以使计算机将纸上的书面文字翻译成数字文本,也可以帮助机器视觉领域,使机器人和其他设备能够识别人员和物体。 在这里,我们的目标是开始使用机器学习,以模式识别的形式,教会我们的程序文字的外观。 在本例中,我们将使用数字,但这可以扩展到字母表中的所有字母、单词、人脸,实际上任何东西。 图像越复杂,代码就需要越复杂。 然而,对于字母和字符来说,它相对简单。 它是如何做到的? 就像任何问题一样,尤其是在编程中,我们只需要把它分解成步骤,问题就会很容易解决。 让我们把它分解一下! 首先,我们知道我们想要向程序展示一张图像,并让它将图像与已知的模式进行比较,以对当前图像进行有根据的猜测。 这意味着我们需要某种“记忆”,里面充满了示例。 在本教程中,我们希望对数字 0 到 9 进行图像识别。 因此,我们希望能够向它展示任何随机的 2,并让它根据之前看到的和记住的 2 的示例识别出该图像为 2。 接下来,我们需要考虑如何做到这一点。 计算机不像我们那样阅读文本。 我们自然地将事物组合成模式,但机器只读取数据。 在图像的情况下,它读取图像数据,并按像素显示它被告知要显示的内容。 除此之外,机器不会尝试判断它显示的是沙发还是鸟。 因此,我们关于示例的数据库实际上将是像素信息。 为了简化,我们应该对图像进行“阈值处理”。 这意味着我们将所有内容存储为黑色或白色。 在 RGB 代码中,那是 255、255、255 或 0、0、0。 这是每个像素。 有时也会有 alpha! 然后我们可以做的是,取任何图像,如果像素颜色大于 125,我们可以说,这更像“白色”,并将其转换为 255(整个像素)。 如果它小于 125 或等于 125,我们可以说这更像“黑色”,并将其转换为黑色。 这在某些情况下可能会出现问题,比如我们在较暗的颜色上有一个较暗的颜色,通常是用来欺骗机器的一种图像类型。 我们可以用其他东西来代替,找到当前图像的平均“中间”颜色,并将任何更亮的颜色阈值化为白色,并将任何更暗的颜色阈值化为黑色。 这对于字符等二维图像非常有效,但对于带有阴影的图像效果不太好,比如球体图像。 完成此操作后,我们只需要为一堆“示例”文本保存像素定义字符串。 我们可以从一堆字体开始,加上一些手绘示例。 有一些示例数据转储。 这是“训练”我们的数据的示例。 如果我们有一个相当大的数据库,那么我们就可以尝试比较一些数字。 一个好主意是手工绘制一个示例,让你的程序与之进行比较。 为了比较,我们只需对问题图像做同样的事情。 我们将图像阈值化为黑色或白色像素,然后我们取该像素列表,并将其与我们所有的示例进行比较。 最后,我们将有许多可能的“命中”。 哪个字符的“命中”次数最多,就很有可能是正确的。 完成,我们已经识别了该图像。 如果你仔细想想,这实际上与我们人类识别事物的方式非常相似。 当然,很多孩子并不能立即区分沙发和爱情座椅。 他们会问,有什么区别。 它们之间存在一些灰色地带,并且有很多相似之处。 通常,很多学习都是通过示例进行的。 在看到数百张沙发、数千张椅子和数百张爱情座椅后,一个人很快就能轻松地区分它们,因为他们有很多样本数据可以比较。 这甚至是我们阅读文本的方式。 对于婴儿来说,数字 5 实际上没有任何意义。 他们只有在反复被告知它是“5”的时候,才开始学习数字 5 是什么。 最终,他们理解了什么是 5,并且可以在多种字体类型中看到 5,并且仍然能识别出它是 5。