一.什么是图像处理
数字图像处理(DigitalImageProcessing)又称为计算机图像处理(ComputerImageProcessing),旨在将图像信号转换成数字信号并利用计算机对其进行处理的过程。常见的图像处理方法如图1-1所示。
数字图像处理作为一门学科大约形成于20世纪60年代初期。早期的图像处理的目的是改善图像的质量,常用的处理方法包括图像增强、复原、编码、压缩等。随着图像处理技术的深入发展,从70年代中期开始,计算机技术和人工智能、思维科学研究迅速发展,数字图像处理向更高、更深层次发展。人们已开始研究如何用计算机系统解释图像,实现类似人类视觉系统理解外部世界,这被称为图像理解或计算机视觉。现如今,图像处理取得了不少重要的研究成果,其在许多领域(如通信、气象、生物、医学、物理、经济、文化等)已经得到广泛的应用[1-3]。
图像处理系列主要包括三部分,分别是:
二.图像处理基础
图像都是由像素(pixel)构成的,像素表示为图像中的小方格,这些小方格都有一个明确的位置和被分配的色彩数值,而这些小方格的颜色和位置就决定该图像所呈现出来的样子。像素是图像中的最小单位,每一个点阵图像包含了一定量的像素,这些像素决定图像在屏幕上所呈现的大小。图1-2表示一张由像素组成的叮当猫。
图像通常分为二值图像、灰度图像和彩色图像,图3-2展示了图像处理经典“Lena”图的各种图像。
(1)二值图像二值图像又称为黑白图像,图像中任何一个点非黑即白,要么为白色(像素为),要么为黑色(像素为0)。将灰度图像转换为二值图像的过程,常通过依次遍历判断实现,如果像素大于则设置为,否则设置为0。如图1-4所示,一幅二值图像对应的矩阵。
(2)灰度图像灰度图像是指每个像素的信息由一个量化的灰度级来描述的图像,没有彩色信息,如图1-5所示。改变像素矩阵的RGB值可以实现将彩色图转变为灰度图。常见的方法是将灰度划分为种不同的颜色,将原来的RGB(R,G,B)中的R、G、B统一替换为Gray,形成新的颜色RGB(Gray,Gray,Gray),即灰度图。将彩色图像转换为灰度图是图像处理的最基本预处理操作。后面的文章将详细介绍不同灰度转换方法的实现过程。
(3)彩色图像彩色图像是RGB图像,RGB表示红、绿、蓝三原色,计算机里所有颜色都是三原色不同比例组成的,即三色通道。RGB(Red红色,Green绿色,Blue蓝色),是根据人眼识别的颜色而定义的空间,可用于表示大部分颜色,也是图像处理中最基本、最常用、面向硬件的颜色空间,是一种光混合的体系。图1-6展示了图像中某一点像素(,89,68)所对应三原色像的素值,其中R表示红色分量、G表示绿色分量、B表示蓝色分量[4]。
三.Python语言
Python是GuidovanRossum在年开发的一门语言,它既是解释性编程语言,又是面向对象的语言,其操作性和可移植性高,被广泛应用于数据挖掘、图像处理、人工智能领域。Python具有语言清晰、容易学习、高效率的数据结构、丰富且功能强大的第三方包等优势。同时,Python语言含有高效率的数据结构,它和其他的面向对象编程语言一样,具有参数、列表表达式、函数、流程控制(循环与分支)、类、对象等功能。Python优雅的语法以及解释性的本质,使其成为一种能在多种功能、多种平台上撰写脚本及快速开发的理想语言[5]。
Python的具体优势如下:
语法清晰,代码友好,易读性好
应用广泛,具有大量的第三方库支持,包括机器学习、人工智能等
Python可移植性强,易于操作各种存储数据的文本文件和数据库
Python是一门面向对象语言,支持开源思想
本系列主要通过Python调用OpenCV、Matplotlib、Numpy、Sklearn等第三方包实现图像处理,其优雅清晰的语法结构减少了读者的负担,从而大大增强程序的质量。该系列文章采用Python3.7版本实现,并贯穿整个系列的所有代码。同时结合官方的Python解释器进行详细介绍,作者认为官方的解释器能让读者更好地学习基础语法知识,更好地掌握图像处理算法的精髓,从而为后续自己的需求应用提供最大的帮助。图1-7是官方下载地址[6]。
读者可以结合本机的操作系统选择适合的版本,比如作者选择了Windows操作系统下的“Python3.7.4”版本。
接着双击“python-3.7.4-amd64.exe”软件进行安装,安装过程选择指定路径,按照Python安装向导,点击“Next”按钮即可。
Python提供了集成开发环境(PythonIntegratedDevelopmentEnvironment,IDLE)供读者编写脚本文件,图1-10展示了IDLE显示print(“HelloWorld”)代码的效果。
在IDLE界面中点击“File”中“NewFile”新建文件,并另存为py文件,如“1-1-test.py”,然后编写相关代码并点击运行“RunModuleF5”按钮,即可运行Python脚本文件。
#-*-coding:utf-8-*-print(2)print("HelloWorld")x=2y=4z=x+yprint(x)print(y)print(z)print(x,y,z)
输出结果如图1-11所示。
这里作者仅简单介绍了Python的优势和安装过程,如果您是一名初学者,建议好好学习Python的基础知识,包括基础语法、数据类型、条件语句、循环语句、函数定义、类定义、面向对象等知识。后续图像处理文章遇到相关知识点,作者也会简要介绍。
四.OpenCV安装和基础
OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac操作系统上。它是一个由C/C++语言编写而成的轻量级并且高效的库,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法[7]。其官方地址为: